增、删、改、查
1、增加数据
我们可以通过 INSERT或 REPLACE 语句向表中插入一行或多行数据
- 单行插入:
INSERT INTO 表名(列名1,列名2,列名三)
VALUES('数据1','数据2','数据3');
- 多行插入:
INSERT INTO 表名(列名1,列名2,列名三)
VALUES
('数据1','数据2','数据3'),
('数据1','数据2','数据3');
如果是全部数据插入列名是不需要写的
2、删除数据
使用DELETE语句删除数据
DELETE FROM 表名
WHERE 条件;
如果省略WHERE则删除表中所有数据
3、修改数据
使用UPDATE语句修改数据
- 单表数据修改:
UPDATE 表名
SET 列名1=表达式1,列名2=表达式2
WHERE 条件;
/*表达式可以是数据*/
- 多表数据修改:
UPDATE 表名列表
SET 列名1=表达式1,列名2=表达式2
WHERE 条件;
表名列表:包含了多个表的联合,各表之间用逗号隔开
示例:
UPDATE sell,book
SET sell.订购册数=订购册数-4,book.数量=数量+4
WHERE sell.图书编号=book.图书编号 and aell.订单号='16';
语句涉及多个表时字段名要用“表名.字段名”表示且必须要在WHERE中写多表连接条件如:
WHERE sell.图书编号=book.图书编号;
查询数据
SELECT语句
SELECT语句可以实现对表的选择、投影及连接操作。SELECT语句可以从一个或多个表中根据用户的需要从数据库中选出匹配的行和列,来生成一个临时表
1、单表查询
SELECT * FROM 表名
*
表示查询所有列,如果有需要可以把*
改成需要看到的列
- 定义别名
SELECT 列名 AS 别名 FROM 表名
显示时就会出现自定义的别名
如果自定义的别名有空格就必须使用引号将别名括起来
- 替换查询数据
CASE '字段名'
WHEN 条件1 THEN 表达式1
WHEN 条件2 THEN 表达式2
.....
END
- 消除结果集中的重复行
表只选择部分列时,可能会出现重复行
可以使用DISTINCT关键字消除保证唯一性
SELECT DISTINCT 列名1,列名2 FROM 表名
- WHERE子句
数据查询中WHERE子句必须跟在FROM子句之后
1.逻辑运算
AND:且、 &&
OR:或、 ||
2.模式匹配
LIKE运算符用于指出一个字符串是否与指定字符串相匹配一般使用“_
”和“%
”进行模糊查询。
“%
”:代表0个或多个字符
“_
”:代表单个字符
示例:
SELECT 姓名
FROM user
WHERE 姓名 LIKE '张%'
补充: IN 和 IS
SELECT *
FROM user
WHERE 年龄 IN ('18','19','20')
查出表中所有18、19、20岁的人员信息
SELECT *
FROM user
WHERE 地址 IS NULL
查出表中地址为NULL的记录
2、多表查询
- FROM子句
FROM 表1,表2,表3
- 多表连接
- 全连接
全连接是每个表的每行都与其他表中的每行交叉
SELECT book.书名,sell.订购册数,sell.订购时间
FROM book,sell
WHERE book.图书编号=sell.图书编号;
- 内连接
全连接得到的表产生了数量非常多的行,而且全连接产生的表很多情况下是无意义的,这种情况下可以使用内连接来减少没有意义的行
SELECT book.书名,sell.订购册数,sell.订购时间
FROM book JOIN sell
ON (book.图书编号=sell.图书编号);
- 外连接
外连接又分为左外连接跟右外连接
左外连接:
SELECT book.图书编号,book.单价,用户号
FROM book LEFT OUTER JOIN sell
ON book.图书编号=sell.图书编号 AND 图书类别='计算机';
右外连接:
SELECT 订单号,图书编号,订购册数,members.姓名,members.联系电话
FROM sell RIGHT JOIN members
ON members.用户号=sell.用户号 AND 性别='男';
数据查询的内容过多,全部写下来可能会让篇幅过长,剩下的内容我放在另一篇文章里面:MySql数据查询后续