软件测试基础MySQL语句

软件测试基础MySQL语句

2023年7月16日发(作者:)

软件测试基础MySQL语句mysql 数据库 (1)纯命令:怎么启动 windows 找到windows系统 找到命令提⽰符 以管理员⾝份运⾏ 1、停⽌、启动MySQL服务。(我们本⾝的电脑启动,MySQL服务,就已经启动了) 启动:net start MYSQL80 //可能每个MySQL的名字不⼀样

停⽌:net stop MYSQL80 注意:在命令⾏中输⼊⼀个命令加回车后,由谁在做什么事? OS从环境变量定义包含的⽬录⾥⾯,查找命令对应的⽂件,再执⾏这个⽂件 (2)创建⼀个远程登录的⽤户,并且⽤这个⽤户远程登录 1、创建远程登录的⽤户(MySQL中操作) MySQL> create user 'mytest'@'%' Identified By '123456';

mysql>grant All on *.* To 'mytest'@'%' with grant option; mysql> flush privileges; 2、远程登录 ①找到⾃⼰的ip地址: 在dos窗⼝下,使⽤ipconfig命令查看 ②使⽤MySQL客户端远程连接数据库 在windows 窗⼝下: mysql -u mytest -h 别⼈的IP地址 -p; 3、⽤户修改指定⽤户的密码: mysql>set password for '⽤户名'@'机器名' 4、删除⽤户: drop user '需要删除的⽤户名'@'localhost';

⼩结: show tables; //查看这个数据库的表 desc 表名; //查看表结构 (3)数据库数据类型: decimal(m,d); m:表⽰长度 d:表⽰⼩数的个数 char(3) 定长字符串:当只放⼀个3进去,那么输出为:3__ 后⾯两个⾃动为添加空格 varchar(3) 可变字符串:放⼀个3 那么输出也只有:3 (4)约束:⽤来保证保存在数据库中的数据的完整性。 1、数据类型:not null/null Defalut check 主键, 外键,⾃增。 2、实体完整性:(⾏) 规则: 每条记录,都有相同数量的字段。 在表中,不允许存在2条或以上,完全⼀样的⾏。 primary key auto_increment unique(唯⼀) 检查(check) 引⽤ (1)给名字添加唯⼀标识 alter table Student_jxc add unique(StuName_jxc) //在表中的字段后⾯添加 unique 约束名(⾃⼰起的) (需要添加唯⼀标识的字段名) (2)取消某⼀个字段的的唯⼀标识 alter table Student_jxc drop indenx StuName_jxc; (3)添加check alter table Student_jxc add check (StuAge_jxc between 1 and 150 );

(4)在实际项⽬中,会将多个字段,合在⼀起,形成⼀个主键。(联合主键/组合主键) ⼀个表中不允许出现多个字段 (5)⼀般添加默认的是在表中添加 StuSex_jxc char(2) default '男' (5)添加外键: foreign key

表与表之间的关系有: 1对1: 主表的主键必须是唯⼀的不需要改变; ⼦表中的每条数据对应主表中的⼀个:在⼦表中的外键加上唯⼀约束:nuique 1对多:主表中的⼀条记录对应⼦表中的多条记录:主表中的主键是唯⼀的,⼦表的外键不需要加任何约束:可以实现⼀对多 多对1: 主表中的多条记录对应⼦表的多条记录:这种是不可能的:因为主键是唯⼀的:

多对多: 创建⼀个中间表作为⼦表,引⽤两个主表的主键。 (6)表结构的修改: 修改表名:alter table 表名 rename 新表名; 修改字段:alter table 表名 change 原字段名 新字段名 数据类型[属性] 添加字段:alter table 表名 add 字段名 数据类型[属性] 删除字段:alter table 表名 drop 字段名; 删除约束名:alter table 表名 约束类型 约束名

给stusys_exam⾥⾯的exm_stu_id添加⼀外键约束(stusys_stu_info->stu_info_id) alter table stusys_exam add constranint FK_exm_stu_id foreign key (exm_stu_id)

references stusys_stu_info (stu_info_id); (7):删除约束: delect from 表名; //删除这个表中的所有数据; 1、实现从表中删除的数据之后,添加的数据从1开始, truncate table 表名; //让⾃增列重置 什么时候⽤:上线之前测试删除所有的数据 删除主表数据的时候,需要取消外键数据引⽤。 (8):查询数据 1、#查询选修“3-105”课程的成绩⾼于“109”号同学成绩的所有同学的记录。 select * from score where cno='3-105' and degree>(select degree from score where sno='109'and cno='3-105');

2、select * from test LIMIT 1 OFFSET 2;(在mysql 5以后⽀持这种写法) 当 limit和offset组合使⽤的时候,limit后⾯只能有⼀个参数,表⽰要取的的数量,offset表⽰要跳过的数量 。

查询⼊员⼯⼊职时间排名倒数第三的员⼯所有信息 select * from employees order by hire_date desc limt 0,3;

limt n,m; n表⽰从第⼏位开始,m 表⽰需要查询⼏个数; 3、多表连接查询: 多表连接查询思路: --确定好需求⽬标

--数据源 --条件 --分组处理‘ --分组后的过滤 --最后结果排序需求

(1)相等关联: 查询学⽣的姓名,课程,成绩的信息 sselect ,, from student,score where = ; 1、相等内关联: 特点:将两个或多个表直接有关系的数据组合起来,没有共同数据的数据舍弃掉。 语法:A表 inner join B表 on A.字段=B.字段 2、外关联 (1)左外连接 先保留左边的数据,⽤左边的数据同右边的数据关联,左边存在右边不存在的情况,右边⽤null代替 A表 left join B表 on A.字段=B.字段 (2)笛卡尔乘积 select * from student cross join class_info order by Sname; 使⽤ cross join 实现 不需要条件直接进⾏连接

数据库经典例题: #3、 列出薪⾦⾼于在部门30⼯作的所有员⼯的薪⾦的员⼯姓名和薪⾦、部门名称。 select ename,sal,dname from dept,emp

where = and sal>all (select sal from emp where deptno=30); 这个题:两张表的数据先把表连接起来,然后在添加条件 #统计出每个年级的最⾼分 select gradeNmae,max(studentResult) from grade,student,result where d=d and tNO=tNO group by gradeNmae; #⽤内关联实现alter select gradeNmae,max(studentResult) from

grade inner join student on d=d inner join result on tNO=tNO #⽤左外关联实现alter group by gradeNmae; select gradeNmae,max(studentResult) from

grade left join student on d=d left join result on tNO=tNO group by gradeNmae;

三、视图:视图中的数据是来⾃真实表中的数据 作⽤:不使⽤视图的话,没次查询多表连接查询的时候都需要关联表与表之间的关系 当有视图的时候,视图中已经把表与表之间的关系连接起来了, 我们查询数据的时候使⽤视图进⾏查询的时候就不需要进⾏表与表之间的关联 我们查询数据的时候使⽤视图进⾏查询的时候就不需要进⾏表与表之间的关联 例题:#统计出每个年级的男⽣最⾼分和⼥⽣最⾼分 #不使⽤视图进⾏查询 select gradeNmae,sec,max(studentResult) from grade,student,result where d=d and tNO=tNO group by sec,gradeNmae; #创建⼀个视图alter create view V_gr_stu_result as select grade.*,student.*,tResult from grade,student,result

where d=d and tNO=tNO; #有了视图之后就可以直接查询 select gradeNmae,sec,max(studentResult) from V_gr_stu_result group by sec,gradeNmae; 四、数据库中的常见函数 1、字符串连接:concat(str1,str2,...strn); select concat(studentName,':',sex); //输出的是⼀个字符串 蒋星灿 :男 2、字符串替换:insert(str,pos,len,newstr); select

3、将英⽂转为⼩写 lower('fjdks'); 4、将字符转成⼤写 upper('fdsfs');

select now(); 获取当前的⽇期和时间 select curtime(); 获取当前的时间 select curDate(); 获取当前的⽇期; select year(now()); //只获取挡年份 select month(now()); 只获取当前的⽉份 select day(now()); 只获取当前的天数 select hour(curtime()); //获取当前的⼩时 select minute(curtime()); 获取当前的分钟 select addDate(now(),30); //获取当前的⽇期时间加上30 天 select addDate(now(),-30); //获取当前的⽇期时间-30天 select datediff('2020-01-01','2080-01-01'); //计算两个⽇期时间的间隔天数

select rand(); select rand()*100000; select floor(rand()*100000); select floor(rand()*100000) mod 5; select (floor(rand()*10000) mod 5)+3; 五、临时表: 当⼀条SQL语句中包含的3层或三层以上的⼦查询时那么这个数据库的性能就会出现层次下降; 这时候可以使⽤临时表,然后在表的基础上进⾏查询 #基于临时表查询成绩及格的学⽣的姓名,学号,科⽬,成绩 #第⼀步:创建临时表:保存所有学⽣的姓名,学号,科⽬,成绩alter #第⼆步在表的基础上查询所有分数⼤于90分以上的同学;alter create temporary table stu_linshi (select name,,cno,degree from tb_person,score where tb_ = ); select * from stu_linshi where degree>93; 六、事务: 事务(transacction) 是作为逻辑⼯作单元执⾏的⼀系列操作多个操作作为⼀个整体 向系统提交,要么都执⾏,要么都不执⾏,事务是⼀个不可分割的⼯作逻辑单元。 事务的特性(ACID) 原⼦性,⼀致性,隔离性,持久性;

begin; n条SQL语句 commit; rollback;

事务隔离级别: 未提交读,提交读,可重复读,串⾏

七、数据库的备份: mysqldump -u root -p <数据库名> [数据库表命名,多个表名中⽤空格隔开] > 路径名 路径最后需要⼀个sql⽂件

导出:mysqldump -u root -p test_ceshi >D: 这是导出整个数据库 恢复/导⼊: 恢复/导⼊: mysql -u root -p <数据库名称> < 导⼊的原⽂件的⽬录和名称

⼋:索引: 增加查询速度:反过来会影响到数据库的增删改的速度; 本质原理:通过不断缩⼩想要获取数据的范围来筛选出想要的结果,同时把随机的事件, 变成⼀个顺序事件,也就是说,有了这种索引机制,我们可以总是⽤同⼀种查找⽅式来锁定数据。 索引的分类: 1、普通索引 index :加速查找。 2、唯⼀索引: 主键索引:primary key :加速查找+约束就(不为空且唯⼀) 唯⼀索引:unique:加速查找+约束(唯⼀)

(1)普通索引: //在student 表的studentName,sex 创建⼀个ind_student 的索引 create index ind_studnet on student(studentName,sex); //当创建了⼀个索引之后,下⾯第条查询语句的速度⽐第⼆条查询语句块 //索引只会影响查询速度,不会对SQL语句有什么影响。 select * from student where studentName ='张三' and sex='⼥'; select * from student where sex='⼥' and studentName ='张三' ;

DML :增加 修改 删除 数据定义:DDL:create alter drop DCl:grant im DQL:数据查询

开启关闭防⽕墙:systemctl start/stop/restart e

systemctl start/stop/restart e

发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1689459023a251653.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信