数据蛙-SQL进阶
这是加入数据蛙的第一周,完成了SQL进阶的课程。
SQL部分的内容因为之前都学习过,所以就当重新过一遍知识点。里面的内容讲的比较浅,很适合新手来学习。
刚刚把力扣上免费的数据库题刷了一遍,惊喜的发现之前每次都做不出来的困难题目,现在竟然能独立做出来了,还是挺开心的。这里来记录一下SQL方面我比较容易忽视或者是之前不知道的点。
1、isdelete bit default 0 这个字段是用来标记是否删除,通常在数据库中使用逻辑删除就把这个字段设为0
2、foreign key(clsid) references classes(id) 在一对多的关系时候,用单的主键作为多的外键约束 这里的clsid为一,id为多。在网上查了下一对一关系建表和一对多关系建表是一样的。
3、ifnull(birthday,'无') 如果为真 则返回无 如果为假 返回birthday
4、group by + group_concat() group_concat(字段名)可以作为一个输出字段来使用,表示分组之后,根据分组结果,使用group_concat()来放置每一组的某字段的值的集合 select userid,GROUP_CONCAT(price) from orderinfo GROUP BY userid
5、group by + with rollup 作用是:在最后新增一行,来记录当前列里所有记录的总和select gender,count(*) from students group by gender with rollup;
6、事务 原子性(Atomicity) 一致性(Consistency) 隔离性(Isolation) 持久性(Durability)。表的引擎类型必须是innodb类型才可以使用事务,这是mysql表的默认引擎。开始begin/start transaction; 提交commit;回滚 rollback;
7、索引 查看索引 show index from 表名; 创建索引 如果指定字段是字符串,需要指定长度,建议长度与定义字段时的长度一致字段类型如果不是字符串,可以不填写长度部分 create index 索引名称 on 表名(字段名称(长度)) 删除索引:drop index 索引名称 on 表名;
8、开启运行时间监测:set profiling=1; 查看执行时间:show profiles;
9、导入大量数据:load data local infile '路径' into table orderinfo fields terminated by ','; 路径不要有中文,是左斜杆 mysql 8.0 登陆使用 mysql --local-infile -uroot -p 注意: 要有fields terminated by ',' 是因为csv 文件是以逗号为分割符的
10、查看全局变量 SHOW GLOBAL VARIABLES LIKE 'wait_timeout' 或者 SELECT @@wait_timeout 设置全局变量 SET GLOBAL local_infile=1;
11、部门最高薪水 分类取最高:where E.Salary=(select max(E1.Salary) from Employee E1 where E.DepartmentId=E1.DepartmentId)
12、分组取前N名:where (select count(distinct Salary) from Employee E1 where E1.Salary>=E.Salary and E1.DepartmentId=E.DepartmentId)<=N
下一周开始Python学习,在数据蛙学习感觉是放养状态,老师助教不会干涉太多,不会强制交作业之类的,全凭自己自觉,加油咯。