DQL

排序

通过ORDER BY子句,可以将查询出的结果进行排序(排序只是显示方式,不会影响数据库中数据原来的顺序)

SELECT 字段名 FROM 表名 WHERE 字段=值 ORDER BY 字段名 [ASC|DESC];

ASC: 升序, 默认不写是升序

DESC: 降序

不写默认升序

 

多个字段之间用逗号隔开, `SELECT 字段名 FROM 表名 WHERE 字段=值 ORDER BY 字段名1 [ASC|DESC], 字段名2 [ASC|DESC];`

先排前面字段,再排后面

 

使用聚合函数sum(),avg(),max(),min(),将聚合函数放在*的位置即可

 

分组查询

SELECT sex,COUNT(sex) FROM student4 GROUP BY sex

mysql设置支持group by mysql group by desc_mysql设置支持group by

 

`SELECT SUM(math), sex FROM student3 GROUP BY sex;`

having与where的区别:(巧记,bye(by having),后面再聚!!!)

  • having是在分组后对数据进行过滤
  • where是在分组前对数据进行过滤
  • having后面可以使用聚合函数
  • where后面不可以使用聚合函数

 

分页查询

`SELECT *|字段列表 [as 别名] FROM 表名 [WHERE子句] [GROUP BY子句][HAVING子句][ORDER BY子句][LIMIT子句];`

limit 0,3

LIMIT语法格式:

limit offset,length;

或者limit length;

offset指索引,偏移量,默认0;length指长度,需要显示的总记录数

limit 是一个MySQL的"方言",即特有的,其他数据库用的不是limit

 

备份与还原

`mysqldump -u用户名 -p密码 数据库 > 文件的路径`

`SOURCE 导入文件的路径;

 

数据库约束

  • PRIMARY KEY: 主键,非空,唯一
  • UNIQUE: 唯一,表示使用了这个约束的字段不能重复
  • NOT NULL: 非空,表示使用了这个约束的字段不能为null
  • DEFAULT: 默认,表示如果这个字段没有插入值的话,会赋一个默认值
  • FOREIGN KEY: 外键

主键 用来唯一标识一条记录,每个表都应该有一个主键,并且每个表只能有一个主键。

主键包含唯一的 值,主键不能包含null值

创建主键

`字段名 字段类型 PRIMARY KEY`

添加主键 `ALTER TABLE 表名 ADD PRIMARY KEY(字段名);`

AUTO_INCREMENT 表示自动增长(字段类型必须是整数类型才行)

,修改表自动增长赋值为什么:ALTER TABLE 表名 AUTO_INCREMENT=起始值;

 

TRUNCATE 摧毁表,重建表,从新开始,AUTO_INCREMENT重置为1,而delete不会重置而是后面追加

 

外键

新建表时创建外键

`[CONSTRAINT] [外键约束名称] FOREIGN KEY(外键字段名) REFERENCES 主表名(主键字段名)`

已有表增加外键

`ALTER TABLE 从表 ADD [CONSTRAINT] [外键约束名称] FOREIGN KEY (外键字段名) REFERENCES 主表(主键字段名);`

 

级联

ON UPDATE CASCADE -- 级联更新,主键发生更新时,外键也会更新

ON DELETE CASCADE -- 级联删除,主键发生删除时,外键也会删除