1)数据查询语言(DQL):其语句也称“数据库检索语句”,用以从表中获得数据,保留字SELECT经常使用,DQL也是所有SQL中用的最多的,其他保留字还有WHERE, ORDER BY, GROUP BY和HAVING这些保留字还与DML一起使用; 2)数据操作语言(DML):其余局包括动词INSERT,UPDATE和DELETE。他们分别用于添加,修改和删除表中的行。也称动作语言; 3)数据定义语言(DDL):DDL主要用于操作数据库。
drop table if exit 'student'//表示数据库有这个表就删除 create table student( id BIGINT PRIMARY KEY AUTO_INCREMENT name varchar(25) unique email varchar(25) not null age int defaut 17 );
删除表
1.删除表的语法
1 2
drop table 表的名称
4.DML操作
4.1 修改操作(update set)
语法
1 2 3 4
UPDATE 表名 SET 列1 = 值1, 列2 = 值2, ... WHERE [条件]
实战
1
update student set name="张三" where name="李四"
注意:不要省略where条件语句,否则全表都会更改
4.2 插入操作(insert into value)
语法
1 2
INSERT INTO 表名 (列1,列2,...) VALUE (值1,值2,...);
实战
1
insert into student (id,name, age,email)values(1,"张三",17,"15655@qq.com")//插入全部记录
4.3 删除操作(DELETE)
语法
1
delete from 表名 where [条件]
实战
1
delete from student where id=4
注意:where条件语句不能省略,否则全表都会被删除
5.DQL操作
5.1消除重复元素(distinct)
语法
1
select distinct 列名,...from 表名
注意:distinct放在2个字段前,是2个字段组合后重复才去重,放在第一个后会报错
实战
1
select distinct productname,brand from product
5.2算术运算符(+,-,*,/)
算术运算符的使用范围 1)对 number 型数据可以使用算术运算符(+,-,*,/)对数据进行操作;对date型数据可以使用部分算术运算符(+,-)对数据进行操作。
算术运算符的优先级 1)与数学中运算相同
实战
1
selectid,productName,salePrice*discount from product
// 查询售价在300-400(包括300和400)的货品信息 SELECT * FROM product WHERE salePrice >= 300 ADN salePrice <= 400; // 查询分类编号为2, 4的所有货品信息 SELECT * FROM product WHERE dir_id = 2 OR dir_id = 4; // 查询编号不为2的所有商品信息 SELECT * FROM product WHERE NOT dir_id = 2
5.8 范围和集合(BETWEEN AND)
1)范围匹配:BETWEEN AND 运算符,一般使用在数字类型的范围上。但对于字符数据和日期类型同样可用。 注意:BETWEE AND 使用的是闭区间。
语法
1 2
// 使用的是闭区间,也就是包括minValue 和 maxValue WHERE 列名 BETWEEN minValue AND maxValue;
实战
1 2
// 查询零售价不在 300 - 400 之间的货品信息 SELECT * FROM product WHERE NOT salePrice BETWEEN 300 AND 400;
2)集合查询:使用 IN 运算符,判断列的值是否在指定的集合中。
语法
1
WHERE 列名 IN (值1, 值2, ...);
实战
1 2 3 4 5
// 查询分类编号为 2,4 的所有货品的 id,货品名称 SELECT id, productName FROM product WHERE dir_id IN (2,4); // 查询分类编号不为 2, 4 的所有货品的 id,货品名称 SELECT id, dir_id, productName FROM product WHERE NOT dir_id IN (2,4);
5.9 判空(IS NULL)
1)IS NULL:判断列的值是否为空值,非空字符串,空字符串使用 == 判断;
语法
1
WHERE 列名 IS NULL;
实战
1 2 3
// 查询商品名为NULL的所有商品信息 SELECT * FROM product WHERE productName IS NULL; SELECT * FROM product WHERE supplier = "";
结论:使用 = 来判断只能判断空字符串,不能判断 null;而使用 IS NULL 只能判断 null 值,不能判断空字符串。
5.10 模糊匹配查询(LIKE,%,_)
1)LIKE:模糊查询数据使用 LIKE 运算执行通配符; 2)通配符:% 表示可有零个或多个任意字符; _ 便是需要一个任意字符;
语法
1 2
WHERE 列名 LIKE "%M_";
实战
1 2
// 查询货品名称以 罗技M9* 结尾的所有货品信息,这里的 * 表示一个任意字符,它不具备任何意义,只是我出于题目需要才这样写,便于你理解而已 SELECT * FROM product WHERE productName LIKE "%罗技M9_";
5.11 结果排序(ORDER BY)
1)ORDER BY:使用 ORDER BY子句将查询结果进行排序,ORDER BY子句出现在 SELECT 语句的最后; 2)ASC:升序;DESC:降序;
实战
1 2
// 查询 id,货品名称,分类编号,零售价 按分类编号降序排序,如果分类编号相同再按零售价升序排序 SELECT * FROM product ORDER BY dir_id DESC, salePrice ASC;
# 查询分组条件之外的值,拼接成字符串 select theme_id, group_concat(dest_id) dest_id, group_concat(dest_name) dest_name from strategy group by theme_id having theme_id = 1
5.13 DQL字句的执行顺序
1)FROM字句:从哪张表中去查数据; 2)JOIN table:先确定表,在确定关联条件; 3)ON 条件:表绑定条件; 4)WHERE字句:筛选需要的行数据; 5)GROUP BY子句:分组操作; 6)HAVING:对分组后的记录进行聚合; 7)SELECT字句:筛选需要显示的列数据;(对字段 AS 起别名是在这时候,所以 WHERE 中不能用字段的别名,ORDER BY 中可以使用别名); 8)DISTINCT:去重; 9)ORDER BY子句:排序操作; 10)LIMIT子句:限制条件;