DML、DQL、基本查询、函数
一、DML—数据操作语言
-
插入记录
-
插入单条数据记录
INSERT INTO 表名 [(字段名列表)] VALUES (值列表);
· 字段名可省略,若省略则依次插入所有字段值
· 若插入表中部分数据,字段名不可省略
· 自动增长列可以不输入,会自动生成序列;也可以输入指定值
· 多个字段名和多个值之间用逗号隔开 -
插入多条记录
INSERT INTO 表名(字段名列表) VALUES(值列表1),(值列表2),……,(值列表n);
-
将查询结果插入新表
CREATE TABLE 新表(查询语句);
若新表已存在则报错
-
-
删除记录
DELETE FROM 表名 [WHERE条件];
清空表
TRUNCATE TABLE 表名;
- TRUNCATE语句删除后将重置自增列,表结构及其字段、约束、索引保持不变,执行速度比DELETE语句快;
- 因为 truncate 直接将表全部删除,然后重建表结构,所以快;
- 有主外键的表不能清空。
-
修改记录
UPDATE 表名 SET 字段1=值1,字段2=值2,…,字段n=值n [WHERE 条件];
二、DQL—数据查询语言
-
查询语法基本语法
SELECT <列名|表达式|函数|常量> [all | distinct] FROM <表名> [WHERE <查询条件表达式>] [ORDER BY <排序的列名>[ASC或DESC]] [limit 起始位置 [, 行数]]
-
基本查询
# 1.查询整张表 SELECT * FROM 表名; # 2.查询部分列 SELECT 字段名1,字段名2,.... FROM 表名 WHERE 条件; # 3. 别名:as 可加可不加,别名可不用引号括住,除非其中包含空格。 SELECT name AS '姓名', sex 性别, address '地址' FROM 表名 WHERE 条件; # 4. 不可使用 + 拼接字符串,需使用字符串拼 接函数 concat SELECT name '姓名', CONCAT(`address`, `phone`) AS '联系方式' FROM 表名; # 5. 空行 SELECT * FROM 表名 WHERE 字段名 IS NULL; SELECT * FROM student WHERE 字段名 IS NOT NULL; # 6. 常量列 SELECT name AS '姓名', sex 性别, address '原籍 地址', '北京大学' AS '学校' FROM 表名 # 7. 排序 SELECT * FROM 表名 ORDER BY 字段名 DESC; SELECT * FROM 表名 ORDER BY 字段名1, 字段名2desc; # 8. limit 子句 # 查询头 3 条记录 SELECT * FROM 表名 LIMIT 3; # 从第 3 条开始,查询 5 条记录 SELECT * FROM 表名 LIMIT 2, 5; # 9. distinct 在查询出的虚拟表中剔除重复记录 # 查询每个学生都参加过那些科目的考试 SELECT DISTINCT 字段名1, 字段名2 FROM 表名;
三、常用函数
-
聚合函数
# 1. MAX():返回某字段的最大值 SELECT MAX(字段名) FROM 表名 WHERE 条件; # 2. MIN():返回某字段的最小值 SELECT MIN(字段名) FROM 表名 WHERE 条件; # 3. AVG():返回某字段的平均值 AVG(字段名) FROM 表名WHERE 条件; #4. SUM():返回某字段的总和 SUM(字段名) FROM 表名WHERE 条件; # 5. COUNT():返回某字段的行数 SELECT COUNT(0) FROM 表名; # COUNT(字段名):返回某字段的不为null的行数
-
字符串函数
# 1. 字符串拼接 SELECT CONCAT('Hello,', 'world');//Helloworld # 2. 字符串替换 SELECT INSERT('知识就是力量', 5, 2, '金钱');//知识就是金钱 # 3. 大小写转换 SELECT UPPER('abc');//ABC SELECT LOWER('ABC');//abc # 4. 字符串截取 SELECT SUBSTRING('知识就是力量', 5, 2);//力量
-
时间日期函数
# 1. 获取当前日期 SELECT CURDATE(); # 2. 获取当前时间 SELECT CURTIME(); # 3. 获取当前日期时间 SELECT NOW(); # 4. 返回日期为一年中第几周 SELECT WEEK('2021-01-14'); # 5. 返回日期的年份 SELECT YEAR('2021-01-14'); # 6. 返回时间的小时 SELECT HOUR('18:07'); # 7. 返回时间的分钟 SELECT MINUTE('18:07'); # 8. 返回日期相差天数 SELECT DATEDIFF('1997-7-23', '2017-4-18'); # 9. 某日期增加 n 天数后是几号 SELECT ADDDATE('2017-4-18', 100);
-
数学函数
# 1. 返回大于等于 x 的最小整数 SELECT CEIL(3.14);//4 # 2. 返回小于等于 x 的最大整数 SELECT FLOOR(3.14);//3 # 3. 产生 0-1 的随机数 SELECT RAND();