欢迎光临散文网 会员登陆 & 注册

第七章 数据库操作

2023-06-12 13:40 作者:littersho  | 我要投稿

基本操作:

数据库操作:

-- 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,测试工作中的应用

接口测试时,查库确认数据落地及正确性

功能测试-搜索功能,大量数据的正确性和完整性,查库

功能测试-定位问题,查库

测试中,造数据,比如性能测试需要大量数据,还有需要去年的数据测试过期



第七章 数据库操作的评论 (共 条)

分享到微博请遵守国家法律