第七章 数据库操作
基本操作:
数据库操作:
-- CREATE SCHEMA mj01 DEFAULT CHARACTER SET utf8 ;
--新增一个数据库
-- DROP DATABASE aiaf13; --删除一个数据库
表操作:
-- show tables; --展示数据库中的表
-- create table TableName(col1 type1 [not null] [primary key],col2 type2 [not null],..);--创建新表
-- drop table TableName;--删除表
修改表中字段:
1,
alter table table_name modify column column_name 数据类型(修改后长度) -- 更改 column 类型
示例如下:
ALTER TABLE shangpin MODIFY COLUMN warehouseId VARCHAR(255);
2,
alter table table_name change old_column_name new_column_name int(11); -- 修改字段名称
3,
alter table table_name add colum column_name int(11); -- 增加字段
alter table table_name add colum column_name 数据类型(长度)DEFAULT NULL; -- 增加默认为空的字段
alter table table_name add colum column_name 数据类型(长度)NOT NULL; -- 增加非空的字段
4,
alter table table_name drop colum column_name ; -- 删除字段
增删改查:
插入:insert into table1(field1,field2) values(value1,value2)
删除:delete from table1 where 范围
更新:update table1 set field1=value1 where 范围
查找:select * from table1 where 范围
模糊查询:
select * from table1 where field1 like ’%value1%’
---like 的语法很精妙,其应用与is、=、>和<等符号用法类似。
Like主要支持两种通配符,分别是"_"和"%"。
1、"_"代表匹配1个任意字符,常用于充当占位符;
2、"%"代表匹配0个或多个任意字符。
匹配方式:
%xx 表示右匹配,右边的xx字符需要完全相等,左边可以是任意字符,也可以没有字符
_xx 表示右匹配,右边的xx字符需要完全相等,左边可以是任意一个字符,必须是一个不能没有字符
xx% 表示左匹配,右边的xx字符需要完全相等,右边可以是任意字符,也可以没有字符
xx_ 表示左匹配,左边的xx字符需要完全相等,右边可以是任意一个字符,必须是一个不能没有字符
%xx% 表示中间匹配,中间必须完全相等,左右两边可以是任意字符,左右两边可以没有其他字符
_xx_ 表示中间匹配,中间必须完全相等,左右两边可以是任意一个字符,左右两边必须是一个不能没有字符
排序:select * from table1 order by field1 [DESC]降序/[ASC]升序
order by之后不加关键词时,默认按照[ASC]升序排序
二级排序:select * from table1 order by field1 DESC,field2 ASC
分组:select * from table1 group by field1,field2
select * from table1 group by field1 having 条件表达式 with rollup;
对数据再次进行汇总,with rollup 就是作用在聚合函数上的。如果聚合函数是COUNT(*)则会在统计的记录中再次求COUNT(*),如果是AVG(),则会在所有记录后增加统计结果
GROUP BY语句后面可以使用HAVING条件语句查询分组后性别为男的人数。
select sex,count(*)from student group by sex having sex='男'
总数:select count as totalcount from table1
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
最大:select max(field1) as maxvalue from table1
最小:select min(field1) as minvalue from table1
between 的用法,between 限制查询数据范围时包括了边界值,not between 不包括
--select * from table1 where time between time1 and time2
--select a,b,c, from table1 where a not between 数值 1 and 数值 2
in 的使用方法
--select * from zibiao where Name in ('1','2','3');
--select * from zibiao where Name NOT in ('1','2','3');
分页查询
MySQL 中:
SELECT * FROM metamj03 .menu ORDER BY updatedOn DESC limit 10;
SQLserver 中:
SELECT top 10 * FROM token where oid IN (SELECT Token FROM tokendatasegment where
createdBy!='saasuser')AND token.Description IS NOT NULL ORDER BY oid ASC ;
查,多表联查,最多不超过4个表
四表联查问题:
--select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join
d on a.a=d.d where .....
JOIN: 如果表中有至少一个匹配,则返回行
LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
FULL JOIN: 只要其中一个表中存在匹配,就返回行
备份数据库:
USE master
EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat';--创建备份数据的
device
BACKUP DATABASE pubs TO testBack;--开始备份
BACKUP DATABASE'被备份的数据库名'TO DISK = '备份文件路径';
RESTORE DATABASE '被恢复的数据库名'FROM DISK = '还原文件路径(源文件)';
查看某个数据库正在执行的 sql
返回的 id 是线程 id,发现有情况可以 kill 掉
select a.* from information_schema.processlist a join information_schema.INNODB_TRX b on
a.id=b.trx_mysql_thread_id where a.db='metadev';
常见问法:
1,先按成绩排,成绩一样按学号排,前10
Select top 10 * from 成绩表 where 查询条件 order by 成绩 asc,学号 desc
2,结合项目,学生表,找出分数最高的前三名
3,测试工作中的应用
接口测试时,查库确认数据落地及正确性
功能测试-搜索功能,大量数据的正确性和完整性,查库
功能测试-定位问题,查库
测试中,造数据,比如性能测试需要大量数据,还有需要去年的数据测试过期