mysql-2分组查询&多表连接

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
 
`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 -- 级联删除,主键发生删除时,外键也会删除
 
 
 
原文地址:https://www.cnblogs.com/21556guo/p/13497551.html