学习步骤:
1、看秦路老师关于数据库的文章,对数据库有大体的了解;
2、根据sql菜鸟教程熟悉每个函数,每个运算符;
3、网上查找相关的题开始练习,区分any,in,=,all,考虑不同的语句角度,对每个题尽量都想出多种语句书写,查看哪种效率更高。
笔记方面:
1.区分“=““in””like”
等号是用来查找与单个值匹配的所有数据;
确切知道所要查找的内容,且为单一值时,可以使用等号运算符来进行数据比较。等号运算符中可以使用字符串、日期或数字。
IN 是 用来查找 与多个值匹配的所有数据;
当确切知道所要查找的内容,且为多个值时,可以使用 IN 子句来进行数据比较。IN 子句中也可以使用数字、字符串或日期。
LIKE用来查找与一个模式匹配的所有数据。
LIKE 子句仅在字符串类型时使用,有些系统也支持在日期数据中使用,但对数字类型数据是不能使用 LIKE 子句的。
2、null与空格的区别
Null表示“不知道”,SQL中使用is null、is not null来进行空值判断
3、where和having的区别
如果有group by 则不能使用where,使用having
4、join使用过程中需要注意用on,还有内连接,外连接等
5、注意事项
SQL 对大小写不敏感!
引号的使用:在例子中的条件值周围使用的是单引号。
SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。如果是数值,请不要使用引号。
6、SQL语句的执行顺序
1>…From 表
2>…Where 条件
3>…Group by 列
4>…Having 筛选条件
5>…Select 5-1>选择列,5-2>distinct,5-3>top(应用top选项最后计算)
6>…Order by 列
7、多种写作方式的对比
(1)将有关系的几张表通过join连接在一起后,再通过条件筛选。(问题:如果连接的表信息比较多,则速度会偏慢)
SELECT `z_socre$`.degree,`z_teacher$`.depart FROM `z_socre$`
JOIN (`z_teacher$` ,`z_course$`)ON `z_socre$`.cno=`z_course$`.`cno` AND `z_course$`.`tno`=`z_teacher$`.`tno`
WHERE depart="计算机系"
(2)先筛选出所有数据,再通过关联条件筛选。
SELECT DEGREE FROM `z_socre$` WHERE `z_socre$`.CNO IN (SELECT `z_course$`.CNO FROM `z_course$` (WHERE `z_course$`.TNO=`z_teacher$`.TNO (WHERE `z_teacher$`.depart="计算机系")))
现在的问题:对sql的整体了解不成体系,仅仅是会一些操作语句,需要整理脑图对整体做一个了解。
继续刷题继续练习吧.........
题库:
经典sql练习