1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 六 MySQL DML数据操纵语言学习笔记(插入 修改 删除详解 + 强化复习)

六 MySQL DML数据操纵语言学习笔记(插入 修改 删除详解 + 强化复习)

时间:2024-07-18 20:42:05

相关推荐

六 MySQL  DML数据操纵语言学习笔记(插入 修改 删除详解 + 强化复习)

DML语言

数据操作语言:

插入:insert修改:update删除:delete

一、插入语句

(1)方式一:经典的插入方式

语法:

insert into 表名(列名,…)values(值1,…);

(2)方式二:

语法:

insert into 表名

set 列名=值,列名=值,…

两种方式大PK:

1、方式一 支持一次性插入多行数据,但方式二不支持

2、方式一支持子查询,但方式二不支持

# 一、插入语句# (1)方式一:经典的插入方式# 语法:#insert into 表名(列名,...)values(值1,...);# 1.插入的值的类型要与列的类型一致或者兼容INSERT INTO beauty(id,name,sex,borndate,phone,photo,boyfriend_id)VALUES(13,'唐艺昕','女','1990-4-23','18988888888',null,2);SELECT * FROM beauty;# 2.不可以为null的列必须插入值,但是可以为null的列如何才能达到不插入值的目的?# 方法一:该列对应的值用null填充。例如 phone 列,为其 赋值为nullINSERT INTO beauty(id,name,sex,borndate,phone,photo,boyfriend_id)VALUES(13,'唐艺昕','女','1990-4-23','18988888888',null,2);# 方法二:干脆直接不写列名,省略该列名和该列对应的值。例如 直接将photo列名去掉INSERT INTO beauty(id,name,sex,borndate,phone,boyfriend_id)VALUES(14,'金星','女','1990-4-23','13888888888',9);# 3. 列的顺序可以调换,列数和值的个数必须保持一致,否则会报错INSERT INTO beauty(name,sex,id,phone)VALUES('蒋欣','女',16,'110');# 4. 可以省略列名,默认列名是所有列,并且列名的顺序和表中列名的顺序一致INSERT INTO beauty VALUES(18,'张飞','男',NULL,'119',NULL,NULL);# (2)方式二:# 语法:#insert into 表名#set 列名=值,列名=值,...INSERT INTO beautySET id=19,name='刘涛',phone='999';SELECT * FROM beauty;# 两种方式PK# 1、方式一 支持一次性插入多行数据,但方式二不支持INSERT INTO beautyVALUES(23,'唐艺昕1','女','1990-4-23','18988888888',null,2),(24,'唐艺昕2','女','1990-4-23','18988888888',null,2),(25,'唐艺昕3','女','1990-4-23','18988888888',null,2),(26,'唐艺昕4','女','1990-4-23','18988888888',null,2);# 2、方式一支持子查询,但方式二不支持INSERT INTO beauty(id,NAME,phone)SELECT 35,'宋茜1','118098661';# 此处会报错,报错原因为id在表中被设置成了主键INSERT INTO beauty(id,NAME,phone)SELECT id, boyname ,'118098661'FROM boys WHERE id<3;

二、修改语句

1.修改单表的记录★

语法:

update表名set列=新值,列=新值,.…

where 筛选条件;

2.修改多表的记录【补充】

语法:

sql 92语法:

update 表1别名,表2别名set 列=值,.….

where 连接条件

and 筛选条件;

sql 99语法:

update 表1别名

inner/left/right join 表2 别名

on连接条件

where 筛选条件;

#1.修改单表的记录#【案例1】 修改beauty表中姓唐的女神的电话为1389999999UPDATE beautySET phone='1389999999'WHERE name LIKE '唐%';SELECT * FROM beauty;#案例2:修改boys表中id好为2的名称为张飞,魅力值10UPDATE boys SET boyname='张飞',usercp=10WHERE id=2;SELECT * FROM boys;# 2.修改多表的记录# 【案例1】 修改张无忌的女朋友的手机号为114UPDATE boys boINNER JOIN beauty bON bo.id = b.boyfriend_idSET b.phone = '114'WHERE bo.boyName = '张无忌';# 【案例2】 修改没有男朋友的女神的男朋友的编号为2号UPDATE boys boRIGHT JOIN beauty bON bo.id = b.boyfriend_id SET b.boyfriend_id = 2WHERE bo.id IS NULL;SELECT * FROM beauty;

三、删除语句

方式一:delete

注意:

1、如果不加where筛选条件的话,delete会删除整张表中的数据(保留表的结构)

2、并且delete会记录日志,意味着删除后的数据还可以恢复,但是效率低。

语法:

1、单表的删除

delete from 表名

where 筛选条件;

2、多表的删除【补充】

sql 92语法:

delete表1的别名,表2的别名

from表1 别名,表2 别名

where 连接条件

and 筛选条件;

sql 99语法:

delete表1的别名,表2的别名

from表1别名

inner/left/right join表2 别名

on连接条件

where 筛选条件;

方式二: truncate

语法:truncate table 表名;

注意:

1、truncate不会记录日志,删除后的数据不能恢复,但是效率高;truncate不能用于有外键约束引用的表。

2、truncate语句后面不允许加筛选条件

#delete pk truncate:

1.delete 可以加where条件,truncate不能加

2.truncate删除,效率高一丢丢

3.假如要删除的表中有自增长列,如果用delete删除后,再插入数据,自增长列的值从断点开始,而truncate删除后,再插入数据,自增长列(比如索引)的值从1开始。

4.truncate 删除后没有返回值,而delete删除后有返回值(比如:删除了几行数据)

5.truncate 删除不能回滚,delete删除可以回滚

# 方式一:delete# 1、单表的删除# 【案例1】 删除手机号以9结尾的女神信息DELETE FROM beautyWHERE phone LIKE '%9';SELECT * FROM beauty;# 2、多表的删除# 【案例2】 删除张无忌的女朋友的信息DELETE bFROM beauty bLEFT JOIN boys boON b.boyfriend_id = bo.idWHERE bo.boyName = '张无忌';# 【案例3】 删除黄晓明的信息以及他的女朋友的信息(级联删除)DELETE b,boFROM beauty bINNER JOIN boys boON b.boyfriend_id = bo.idWHERE bo.boyName = '黄晓明';# 方式二:truncate语句# 【案例】 将魅力值 > 100 的男神信息删除TRUNCATE TABLE boys;

数据的插入修改删除强化练习:

# 数据的插入修改删除强化练习# 1、运行以下脚本创建表 my_employeesUSE myemployees;CREATE TABLE my_employees(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.显示表my_employees的结构DESC my_employees;#3.向my_employees表中插入下列数据IDFIRST_NAMELAST_NAMEUSERIDSALARY1patelRalphRpatel 8952DancsBettyBdancs 8603BiriBenBbiri 11004Newman ChadCnewman 7505RopeburnAudreyAropebur 1550#方式一:INSERT INTO my_employeesVALUES(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;#方式二:INSERT INTO my_employeesSELECT 1,'patel','Ralph','Rpatel',895 UNIONSELECT 2,'Dancs','Betty','Bdancs',860 UNIONSELECT 3,'Biri','Ben','Bbiri',1100 UNIONSELECT 4,'Newman','Chad','Cnewman',750 UNIONSELECT 5,'Ropeburn','Audrey','Aropebur',1550;#4. 向users表中插入数据1Rpatel102Bdancs103Bbiri204Cnewman305Aropebur40INSERT INTO usersVALUES(1,'Rpatel',10),(2,'Bdancs',10),(3,'Bbiri',20);#5.将3号员工的last_name修改为“drelxer”UPDATE my_employees SET last_name='drelxer' WHERE id = 3;#6.将所有工资少于900的员工的工资修改为1000UPDATE my_employees SET salary=1000 WHERE salary<900;#7.将userid 为Bbiri的user表和my_employees表的记录全部删除DELETE u,eFROM users uJOIN my_employees e ON u.`userid`=e.`Userid`WHERE u.`userid`='Bbiri';#8.删除所有数据DELETE FROM my_employees;DELETE FROM users;#9.检查所作的修正SELECT * FROM my_employees;SELECT * FROM users;#10.清空表my_employeesTRUNCATE TABLE my_employees;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。