MySQL
数据库概念
范式
范式是数据库设计规范,范式越高则数据库冗余越小,但查询也更复杂,一般只需满足第三范式。
范式 | 含义 |
---|---|
第一范式 | 每列都是不可再分的数据单元。 |
第二范式 | 在第一范式的基础上消除部分依赖,非主键列必须完全依赖于主键列。 |
第三范式 | 在第二范式的基础上消除传递依赖,非主键列只依赖于主键列。 |
SQL
类型 | 含义 |
---|---|
DQL | 数据查询语言。通常是由 SELECT、FROM、WHERE 组成的语句。 |
DML | 数据操纵语言。包括 INSERT、UPDATE、DELETE 语句。 |
DCL | 数据控制语言。通过 GRANT 和 REVOKE,设置用户或用户组的访问权限。 |
DDL | 数据定义语言。常用的有 CREATE 和 DROP和truncate,用于创建、删除表和索引等。 |
TCL | 事务控制语句SAVEPOINT:保存点;ROLLBACK:回退到某点;COMMIT:提交事务 |
基本语句(1)
SQL中的升序和降序:
select * from 表名 order by 字段名 desc //降序
select * from 表名 order by 字段名 asc //升序
降序:
select * from emp order by empid desc; //按empid这一列的值降序来排列查询出emp表
升序:
select * from emp order by age asc; //按age这一列的值升序来排列查询出emp表
select * from emp order by age ; //默认为升序
sql中使一个字段升序,一个字段降序
ORDER BY _column1, _column2; /* _column1升序,_column2升序 */
ORDER BY _column1, _column2 DESC; /* _column1升序,_column2降序 */
ORDER BY _column1 DESC, _column2 ; /* _column1降序,_column2升序 */
ORDER BY _column1 DESC, _column2 DESC; /* _column1降序,_column2降序 */
基本语句(2)sql 语句中:select a ,b,c 然后group by一定要接a,b,c吗?
不一定的,select a,b,c from table group by a,b,c,d 也是正确的写法。
SQL的grop by 语法为:
select 选取分组中的列+聚合函数 from 表名称 group by 分组的列
从语法格式来看,是先有分组,再确定检索的列,检索的列只能在参加分组的列中选。
所以问题中的,group by 后的 a,b,c是先确定的。select后的a,b,c才是可以变的。即
以下语句都是正确的:
select a,b,c from table group by a,b,c,d
select a,b from table group by a,b,c
select a,max(a) from table group by a,b,c
以下语句则是错误的:
select a,b,c from table group by a,b
select a,b,c from table group by a