数据库4.6
在设计属性的时候,,字段名,数据类型,空不空 默认值
还有处理这个,插入操作;
子啊插入的时候,对于null的字段必须写值
查询问题:(大量实践,)
3
通配符(粗略查询)
%d:多个字符;
_ :一个字符
SELECT *FROM student WHERE saname LIKE ‘ 李梅‘;
SELECT *FROM student WHERE saname LIKE ‘ 李_‘;
SELECT *FROM student WHERE saname NOTLIKE ‘ 李_‘;
注意ESCAPE的使用(后面的/后面的就i是一个字符而已)
以DB_开头的信息:
SELECT *FROM student WHERE cname LIKE ‘ DB/_%’ ’‘ESCAPE ’/’;
以DB_开头的信息(因为后面有一个通配符)
注意:/ 不是翘n;
‘DB_&’ 以DB+任意一个字符开头的后面有任意个字符的信息;问:任意个包括0不?
-----------------------------------------------------------------------------------------------------------------------
高级查询:
单表查询:
分组查询:(聚合函数,一般用于统计数据)
对结果查询进行排序;
限制查询结果数量:呈现信息条数等
聚合函数作用:在信息分组之后,对信息进行操作,(最高分,分数众数,最低分,平均分)
SELECT ssex FROM student GROUP BY ssex:
在分组查询中,分了几组就是显示几个,不受数据规模影响,重复就消掉;
第一个和最后一个关键字后的字段一样,顺序对应;
--------------------------------------------------------------------------------------------
聚合函数
SELECT ssex COUNT (ssex) FROM student GROUP BY ssex: HAVING COUNT>3
SELECT ssex COUNT (ssex) FROM student GROUP BY ssex: HAVING SSEX=’女’;
HAVING 限制这个数据范围,二级限制
---------------------------------------------------------------------------------------------------------
在navicat下运行SQL文件
- 新建数据库:stu_coursedb
- 点击表格
- 直接运行SQL文件,直开始
- 关闭+刷新(美滋滋)
对查询结果排序:
原理:
对于字符串排序(ASCII)
SELECT * FROM student OEDER BY zno;
处理这个字符串排序,默认就是升序;:
点查询->新建查询(空,在升序里最小)
汉字:拼音(首?)字母的ASCII码
UTF-8:字符集存在转化,对于中文排序,都要转字符集,->gbk
SELECT sname FROM student OEDER BY CONVERT(;using gbk)
---------------------------------------------------------------------------------------
对查询结果排序:
多个字段排序:
SELECT * FROM student OEDER BY zno ASC,sno DESC;
ASC:升序(默认),DESC:降序;
当zno相同时,以sno的排序再来排序;
限制查询结果(显示输出条数):
SELECT * FROM student OEDER BY sno LIMIT 2,3;
从第三名往后面数3位;
注意,第一个是起始位置,第二个是步长,(注意是从0开始的)
聚合函数:
1.COUNT :
SELECT COUNT (*)统计总行数
SELECT COUNT (*)FROM student
COUNT(列)用于计算列中非NULL的值
SELECT COUNT(zno)FROM student
紧跟字段(有空,空不计入)
SELECT zno,COUNT(*) AS ‘专业人数‘ FROM student GROUP BY zno:
这个AS就是好看弱于typedef
-------------------------------------------------------------------------
4.
SUM函数:
SELECT sno SUM ( grade) FROM sc WHERE sno=’2019001’
SELECT sno SUM ( grade) FROM sc GROUP BY sno
5.
SELECT sno,COUNT(*) AS ‘专业人数‘ FROM student GROUP BY zno:
6.
AVG
分母:有效信息条数(不为零的信息);
SELECT AVG (grade )FROM sc;
SELECT AVG (grade )FROM sc GROUP BY cno;;
8.
MAX函数,
数字,字符串,汉字(转成拼音再ASCII)
SELECT sno,MAX(grade)REOM sc DROUP BY ()
9
10.
吧笔记补上;
内连接:
等值连接
SELECT *FROM sc inner join course on
sc.cno=ccourse.cno limit 4;
把值相同的项直接连在一起;
自然连接(去掉等值连接的重复)
SELECT *FROM sc inner join course on sc.cno=ccourse.cno limit 4;
不等值连接(没得卵用)
SELECT *FROM sc inner join course on sc.cno!=ccourse.cno limit 4;
多表连接---外连接;
左外,右外 [ OUTER ]
SELECT 字段表 FROM 表1 LEFT JOIN 表2 ON表1.字段=表2.字段‘
强势:
就算表2里面没有和表1对应的,那么表1就是空也要把位置给老子留到起 也会显示;
导致数据丢失,表的规模;
联合查询:
SELECT usernameFROM empioyee
SELEC
子查询:
在前查询的结果上再查询;
SELECT student WHERE sno IN (SELECET sno FROM sc)
查询:选修过课程的student记录;
.exists
ANY
查询
先要有主表再是从非主键且有唯一性约束是否可以为空?
可以的;
注意数据库的实验都要好好弄一下;
数据库的操作自己是有很多不懂的,注意;
那个是逗号啊;这次的数据库实验要动脑子;
数据库之前的PPT好好弄一下;然后4.6的数据库笔记在睡前进行整理(博客园)