连绵不断的降雨冲洗着四散的灰尘,顺便也将树叶洗的绿油油的。
雨只会越下越小,知识也会越学越少。(在一定范围)
漫长的查询过去,今天将带领读者们走进DDL语言的大厅,感受别致SQL语句吧!
#DML语言
数据操作语言
插入:INSERT
修改:UPDATE
删除:DELETE
#一.插入语句
#方式一:经典的插入
语法:
INSERT INTO 表名(列名,....)
VALUES(值1,...)
插入三要素:表名,列名,新值
#1.插入的值的类型要与列的类型一致或兼容
INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
VALUES(13,'糖稀','女','1990-2-2','18699888880',NULL,2);
#photo照片,二进制文件,暂未空
#2.不可以为NULL的列必须插入值,可以为NULL的列如何插入值?
方式一:用NULL
INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
VALUES(13,'糖稀','女','1990-2-2','18699888880',NULL,2);
#方式二:跳过字段
INSERT INTO beauty(id,NAME,sex,borndate,phone,boyfriend_id)
VALUES(14,'河绪','女','1990-2-2','19952111333',9);
#跳过,省略插入
INSERT INTO beauty(id,NAME,sex,phone)
VALUES(15,'绪淼','女','13700156035');
#3.列的顺序是否可以调换
INSERT INTO beauty(NAME,sex,id,phone)
VALUE('仁忻','女','16','12345');
#4.列数和值的个数必须一致
#5.可以省略列名,默认所有列,而且列的顺序和表的顺序一致,但要遵守第四点。
INSERT INTO beauty
VALUES(17,'李玉婷','女',NULL,'19999999999',NULL,NULL);
#方式二:
语法:
INSERT INTO 表名
SET 列名=值,列名=值,...
#1.插入
INSERT INTO beauty
SET id=19,NAME='凛',phone='119';
#两种插入方式对比
#1.方式一支持插入多行,方式二不支持
INSERT INTO beauty
VALUES(20,'清水','女','1990-5-20','19899990000',NULL,2),
(21,'清淼','女','1990-5-20','19899991111',NULL,2),
(22,'妙法','女','1210-2-20','19899991111',NULL,2);
#2.方式一支持子查询,方式二不支持
INSERT INTO beauty(id,NAME,phone)
SELECT 23,'丹止','12315';
#二:修改语句
1.修改单表的记录★
语法:
① UPDATE 表名
③ SET 列=新值,列=新值...
② WHERE 筛选条件;【如果不加筛选条件,表内所有数据都会被修改】
执行顺序①②③
2.修改多表的记录【补充】
语法:
SQL1992语法
UPDATE 表1 别名,表2 别名
SET 列=值...
WHERE 连接条件
AND 筛选条件
SQL1999语法
UPDATE 表1 别名
INNER|LEFT|RIGHT JOIN 表2 别名
ON 连接条件
SET 列=值,...
WHERE 筛选条件;
#修改单表的记录
#案例1.修改beauty表中清开头的电话为13322333
UPDATE beauty SET phone='1332233'
WHERE NAME LIKE '清%';
SELECT * FROM beauty;
#案例2.修改boys表中id号为4的名称为伯纳德,魅力值200
UPDATE boys SET boyname='伯纳德',usercp=200
WHERE id = 4;
#2.修改多表的记录
#案例1.修改光头强的朋友的手机号为116。【1999语法】
UPDATE boys bo
INNER JOIN beauty be
ON be.boyfriend_id=bo.id
SET be.phone='116'
WHERE bo.boyName='光头强';
#案例2.修改没有男朋友的女朋友的男朋友编号都为4号。
UPDATE boys bo
RIGHT JOIN beauty be
ON be.boyfriend_id=bo.id
SET be.boyfriend_id=4
WHERE bo.id IS NULL;
#三.删除语句
方式一:DELETE
语法:
1.单表的删除★
DELETE FROM 表 WHERE 筛选条件;
2.多表的删除【补充】
SQL1992语法
DELETE 表1的别名,表2的别名【删那个表的数据写那个表,全删要写全部】
FROM 表1 别名,表2 别名
WHERE 连接条件
AND 筛选条件;
SQL1999语法
DELETE 表1的别名,表2的别名
FROM 表1 别名
INNER|LEFT|RIGHT JOIN 表2 别名
ON 连接条件
WHERE 筛选条件;
方式二: TRUNCATE
语法:
TRUNCATE 表名;
#方式一:DELETE
#1.单表的删除
#案例1.删除手机号以3结尾的女生信息。
DELETE FROM beauty
WHERE phone LIKE '%3';
#案例:删除喜羊羊的朋友信息
DELETE b #删哪个表的信息就写哪个表,
FROM beauty b
INNER JOIN boys bo ON b.boyfriend_id=bo.id
WHERE bo.boyName='喜羊羊';
#案例:删除伯纳德的信息以及他朋友的信息。【级联删除】
DELETE b,bo #两张表里的信息满足条件的都删除
FROM beauty b
INNER JOIN boys bo ON b.boyfriend_id=bo.id
WHERE bo.boyName='伯纳德';
#方式二:TRUNCATE删除
#案例:把魅力值>100的男神删除。
TRUNCATE TABLE boys
WHERE userCP>100;
#最终结果报错,TRUNCATE后面不能加WHERE条件。所以一般用来清空整张表的数据。
#删除一张表内的数据
DELETE FROM boys;
#插入数据,查看ID
INSERT INTO boys(boyname,usercp)
VALUES('喜羊羊','200'),('灰太狼','150'),('虹猫','300');
先清空表格
TRUNCATE boys;
#插入数据,查看ID
DELETE与TRUNCATE的区别
1.delete 可以加WHERE 条件,TRUNCATE不能加
2.TRUNCATE删除,效率高一些
3.假如要删除的表中有自增长列,如果用DELETE删除后,再插入数据,
自增长列从断点开始,而TRUNCATE删除后,再插入数据,自增长从1开始。
4.TRUNCAT删除没有返回值,DELETE删除有返回值【 Affected rows: 3 三行受影响】。
5.TRUNCATE删除不能回滚,DELETE删除可以回滚。
练习
#1.建立两个表
CREATE TABLE my_eployees(
Id INT(10),
First_name VARCHAR(10),
Last_name VARCHAR(10),
Userid VARCHAR(10),
Salary DOUBLE(10,2)
);
=================
CREATE TABLE users(
id INT,
userid VARCHAR(10),
department_id INT
);
#2.查看表结构
DESC my_employees;
DESC users;
#3.插入数据
#方式一:
INSERT INTO my_employees
VALUES(1,'patel','Ralph','Rpatel',895),
(2,'Dancs','Betty','Bdancs',860),
(3,'Biri','Ben','Bbiri',1100),
(4,'Newman','Chad','Cnewman',750),
(5,'Ropeburn','Audrey','Aropebur',1550);
DELETE FROM my_employees;
#方式二: 子查询,UNION连接成为一条SQL语句
INSERT INTO my_employees
SELECT 1,'patel','Ralph','Rpatel',895 UNION
SELECT 2,'Dancs','Betty','Bdancs',860 UNION
SELECT 3,'Biri','Ben','Bbiri',1100 UNION
SELECT 4,'Newman','Chad','Cnewman',750 UNION
SELECT 5,'Ropeburn','Audrey','Aropebur',1550;
#4.插入数据
INSERT INTO users
VALUES (1,'Rpatel',10),
(2,'Bdancs',10),
(3,'Cnewman',20),
(4,'Bbiri',30),
(5,'Aropebur',40);
#5.将3号员工的last_name修改为"drelxer"
UPDATE my_employees
SET last_name='drelxer'
WHERE Id=3;
#6.将所有工资少于900的员工的工资修改为1000
UPDATE my_employees
SET Salary=1000
WHERE Salary<900;
#7.将userid为Bbiri的user表和my_employees表的记录全部删除。
DELETE u,m
FROM users u
INNER JOIN my_employees m ON u.userid=m.Userid
WHERE u.userid='Bbiri';
#8.删除所有数据
DELETE FROM my_employees;
DELETE FROM users;
#9.检查所作的修正
SELECT * FROM my_employees;
SELECT * FROM users;
#10.清空my_employees
TRUNCATE TABLE my_employees;
TRUNCATE TABLE users;