(系列7)数据库

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

你可能感兴趣的:((系列7)数据库)