#DML语言/*
数据操作语言:
插入:insert
修改:update
删除:delete
*/#一:插入语句/*经典的插入(一)
语法:
insert into 表名(列名,....)values(值1.....)
1插入的值的类型要与列的类型一致或者兼容
2不可以为null的列必须插入值,可以为null的列如何插入值
3列表顺序可以调换
4列表和值的个数必须一直
5可以省略列明,默认所有列,并且列的顺序和表中列的顺序一直
*/SELECT*FROM beauty;#1插入的值的类型要与列的类型一致或者兼容INSERTINTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)VALUES(13,'盖世凯','男','2000-7-23','100',NULL,2)#2不可以为null的列必须插入值,可以为null的列如何插入值#方式一INSERTINTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)VALUES(14,'盖世凯','男','2000-7-23','100',NULL,2);#方式二INSERTINTO beauty(id,NAME,sex,phone)VALUES(15,'金星','女','110');#3列表顺序可以调换INSERTINTO beauty(NAME,sex,id)VALUES('刘毅','男','16')#4列表和值的个数必须一直INSERTINTO beauty(id,sex,NAME)VALUES(17,'女','迪丽热巴')#5可以省略列明,默认所有列,并且列的顺序和表中列的顺序一直INSERTINTO beauty
VALUES(18,'张飞','男','2000-7-23','100',NULL,NULL)/*经典的插入(一)
语法:
insert into 表明
set 列名=值,列名=值,.....
*/INSERTINTO beauty
SET id=19,NAME='刘备',phone='122009884732983'#两种方式大pk#1方式一支持插入多行INSERTINTO beauty
VALUES(20,'张飞','男','2000-7-23','100',NULL,NULL),(21,'张飞','男','2000-7-23','100',NULL,NULL),(22,'张飞','男','2000-7-23','100',NULL,NULL);#2方式一支持子查询,方式二不支持INSERTINTO beauty(id,NAME,phone)SELECT26,'高希希','123'INSERTINTO beauty(id,NAME,phone)SELECT id,boyname,'2134'FROM boys WHERE id<3;
修改语句
#修改语句/*
1.修改单表的记录(重点)
update 表名 1
set 列=新值,列=新值..... 3
where 筛选条件 2
2.修改多表的记录(补充)
语法:
192语法:
update 表一 别名,表二 别名
set 列=值....
where 连接条件
and 筛选条件
199语法:
update 表一 别名
inner|left|right join 表二 别名
on 连接条件
set 列=值....
where 筛选条件
*/SELECT*FROM beauty
#修改电话号码UPDATE beauty
SET phone='110'WHERE NAME LIKE'苍老师';#修改boys中id为2的名称为 盖世凯 魅力值为1000000SELECT*FROM boys
UPDATE boys
SET boyName='盖世凯',userCP=100000WHERE id=2;#修改多表记录SELECT*FROM boys
SELECT*FROM beauty
#修改张无忌的女朋友的手机号114UPDATE boys bo
INNERJOIN beauty b ON b.`boyfriend_id`=bo.`id`SET b.`phone`='114'WHERE bo.`boyName`='张无忌';#修改没有男朋友的女神男朋友编号都为2UPDATE beauty b
LEFTJOIN boys bo ON b.`boyfriend_id`=bo.`id`SET b.`boyfriend_id`=2WHERE bo.`id`ISNULL;
删除语句
#删除语句/*
方式一:delete
语法:1:单表的删除【*】
delect from 表名 where 筛选条件
2:多表的删除【补充】
sq192语法:
delect 表一的别名,表二的别名
from 表一 别名,表二别名
where 连接条件
and 筛选条件
sq199语法
delect 表一的别名,表二的别名
from 表一 别名
inner|left|right join 表二 别名 on 连接条件
where 筛选条件
方式二:truncate
语法:truncate table 表明;
*/#方式一:deleteSELECT*FROM beauty
SELECT*FROM boys
#删除手机号以9结尾的女神信息(单表的删除)DELETEFROM beauty WHERE phone LIKE'%7';#删除黄晓明以及他的女朋友的信息(多表的删除)DELETE bo,b
FROM beauty b
JOIN boys bo ON b.`boyfriend_id`=bo.`id`WHERE bo.`boyName`='黄晓明';#方式二:truncate#删除魅力值>100的男神信息(很快啊,一下子就没了没有过滤的条件)TRUNCATETABLE boys
#delete 和 truncate pk/*
1,delete 可以添加筛选条件 truncate不可以
2,truncate 删除效率高
3,加入要删除表中有自增长列,
如果用delete删除之后,再插入数据,自增长列会从断点开始
如果用truncate 再插入数据,自增长列从1开始
4,truncate 没有返回值,delete 有返回值
5,truncate 删除后不可以回滚,delete 删除可以回滚
*/INSERTINTO boys
VALUES(1,'盖世凯',100),(2,'盖世凯1',100),(3,'盖世凯2',100)TRUNCATETABLE boys
DELETEFROM boys
DML总的练习
#DML插入,修改,删除练习#1运行脚本语言创建表 my_employeesUSE myemployees;CREATETABLE my_employees(
ID INT(10),
First_name VARCHAR(10),
Last_name VARCHAR(10),
Userid VARCHAR(10),
Salary DOUBLE(10,2));CREATETABLE users(
id INT,
userid VARCHAR(10),
department_id INT);#2显示my_employees的结构DESC my_employees
#3向my_employees表中插入下列数据SELECT*FROM my_employees
DELETEFROM my_employees
#方式一INSERTINTO my_employees
VALUES(1,'patel','Ralph','Rpatel',895),(2,'patel','Ralph','Rpatel',860),(3,'patel','Ralph','Rpatel',1100),(4,'patel','Ralph','Rpatel',750),(5,'patel','Ralph','Rpatel',1550);#方式二INSERTINTO my_employees
SELECT1,'patel','Ralph','Rpatel',895UNIONSELECT2,'patel','Ralph','Rpatel',860UNIONSELECT3,'patel','Ralph','Rpatel',1100UNIONSELECT4,'patel','Ralph','Rpatel',750UNIONSELECT5,'patel','Ralph','Rpatel',1550;#4向users表中插入数据SELECT*FROM users
INSERTINTO users
VALUES(1,'Rapatel',10),(2,'Rapatel',10),(3,'Rapatel',20);#5将3号员工last_name修改为drelxerUPDATE my_employees
SET last_name='drelxer'WHERE id=3;#6将所有工资少于900的员工的工资修改为1000UPDATE my_employees
SET salary=1000WHERE salary<900;#7将userid为Bbiri的users表和my_employees表的记忆全部删除DELETE u,m
FROM users u
JOIN my_employees m ON u.`userid`=m.`Userid`WHERE u.userid='Bbiri'#8清除所有数据DELETEFROM my_employees;DELETEFROM users;#9检查所作的修正SELECT*FROM my_employees
SELECT*FROM users
#10清空表my_employeesTRUNCATETABLE my_employees