INSERT语句
u 语法:
l INSERT INTO 表名[(列名1,…列名n)] VALUES (值1,…值n);
u 功能:向指定的表添加指定值的记录
u 一次性插入多条记录:
l INSERT INTO 表名 [(列名1,…列名n)] VALUES (值1,…值n),(值1,…值n)…;
DELETE语句
u 语法:
l DELETE FROM 表名 [where 条件] ;
u 功能:用于删除满足指定条件的记录
u 注:所有的SQL语句的条件子句中都可以使用运算符和函数
TRUNCATE语句
u 语法:
l TRUNCATE [TABLE] tbl_name
u 功能:用于完全清空一个表
UPDATE语句
u 语法:
l UPDATE 表名 SET 列名1=值1,…列名n=值n [WHERE 条件] ;
SELECT语句
l 基本语法:
SELECTselection_list 选择那些列
FROMtable_list 从何处选择行
WHEREprimary_constraint 行必须满足什么条件
GROUPBY grouping_columns 怎样对结果分组
HAVINGsecondary_constraint 行必须满足的第二条件
ORDERBY sotring_columns 怎样对结果排序
LIMIToffset_start,row_count 结果限定
普通查询
u 查询所有的记录的所有列
l SELECT * FROM employees;
u 查询特定行
l SELECT * FROM employees WHERE name='张三';
u 查询特定列
l SELECT name ,salary FROM employees;
u 去掉重复的值
l SELECT DISTINCT dept_id FROM employees;
u 给列取别名
l SELECT name AS 姓名 FROMemployees;
l SELECT name n FROM employees;
条件查询
u 语法
l SELECT 列名,… FROM 表名 WHERE 条件 ;
u WHERE 子句中的条件表达式
l 可以包括运算符(算术、比较、逻辑等)
l 可以使用圆括号将一个表达式分成几个部分
l 可以使用常量,列和函数来完成运算
u WHERE子句中不能出现组函数
查询排序
语法
SELECT列名,…FROM 表名 [WHERE 条件] ORDER BY 排序列名1 [ASC|DESC],排序列名2 [ASC|DESC]…;
ASC:升序,缺省;
DESC:降序
例:
SELECT* FROM employees ORDER BY dept_id ,salary DESC ;
SELECT* FROM employees ORDER BY RAND()
查询分组
u 语法:
l SELECT 列名,…
FROM表名
[WHERE 条件]
GROUP BY 分组的列;
u GROUP BY 子句的真正作用在于与各种聚合函数配合使用。它用来对查询出来的数据进行分组,分组后的数据执行组函数计算,最终结果自动按分组列进行升序排列。
常用聚合函数
u 聚合函数对一组值执行计算,并返回单个值。也叫组函数。
函数名 |
说明 |
COUNT(*|列名) |
行计数 |
AVG(数值类型列名) |
平均值 |
SUM(数值类型列名) |
求和 |
MAX(列名) |
最大值 |
MIN(列名) |
最小值 |
u 除了COUNT()以外,聚合函数都会忽略空值。
u 聚合函数不能和非分组的列混合使用
示例
Ø SELECT COUNT(*) AS '总数' FROMemployees;
Ø SELECT dept_id,COUNT(*) ,SUM(salary),AVG(salary),MAX(salary),MIN(salary) FROM employees GROUP BY dept_id
n 查询分组中一个非常重要的规则:
u 出现在SELECT列表中的列,如果出现的位置不是在组函数中,那么必须出现在GROUP BY子句中。
HAVING
u HAVING子句用来对分组后的结果再进行条件过滤。
u 例:
l SELECT dept_id ,AVG(salary)
FROMemployees
WHEREsalary BETWEEN 2500 AND 7000
GROUPBY dept_id
HAVINGCOUNT(*)>1;
HAVING与WHERE的区别
u WHERE子句是在分组前进行的条件锅炉,所以WHERE子句中不能使用聚合函数
u HAVING子句是分组后进行的条件过滤,所以HAVING子句中可以使用聚合函数
查询结果限定
u 在SELECT语句的最后可以用LIMIT来限定查询就诶过返回的起始记录和总数量。——MySQL特有。
u 语法:
l SELECT … LIMIT offset_start , row_count ;
n offset_start: 第一个返回记录行的偏移量。默认为0。
n Row_count: 要返回记录行的最大数目。
u 例:
l SELECT * FROM employees LIMIT 5 ; /*检索前5个记录行*/
l SELECT * FROM employees LIMIT 5,10; /*检索记录行6-15*/
总结
u 有关数据表的DML操作
l INSERT INTO、DELETE、UPDATE
l SELECT selection_list
FROMprimary_constaint
GROUP BYgrouping_columns
HAVINGsecondary_constraint
ORDER BYsorting_columns [ASC|DESC]
LIMIToffset_start,row_count
l 条件查询
l 查询排序
l 聚合函数 COUNT() 、SUM()、AVG()、MAX()、MIN()
l 分组查询