数据库笔记(待完善,等到周末来弄)

数据库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文件

  1. 新建数据库:stu_coursedb
  2. 点击表格
  3. 直接运行SQL文件,直开始
  4. 关闭+刷新(美滋滋)
 -------------------------------------------------------------------------------

对查询结果排序:

原理:

对于字符串排序(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的数据库笔记在睡前进行整理(博客园)

原文地址:https://www.cnblogs.com/WAsbry/p/12650000.html