数据操作语言包括

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

插入insert

语法:

insert into 表名(字段名,...) values(值,...);

特点:
1、要求值的类型和字段的类型要一致或兼容
2、字段的个数和顺序不一定与原始表中的字段个数和顺序一致,既:可以调换
但必须保证值和字段一一对应
3、不可以为null的值必须插入值,可以为null的值插入方式有两种:
①字段和值都省略
②字段写上,值使用null
4、列数和值的个数必须一致
5、可以省略列名,默认所有列,而且列的顺序和表中列的顺序一致。
案例:向beauty表中插入一条数据

id- int(11)

name -varchar(50)

sex-char(1)-Nullable

borndate-datetime

phone-varchar(11)

photo-blob

boyfriend_id-int(11)

1

热巴


1993-02-03

13389087890

Null

3

2

周冬雨


1993-08-08

18888888889

Null5

5

3

杨紫


1993-07-09

19993334567

Null

2

4

关晓彤


1994-08-10

15910456677

Null

4

5

郑爽


1991-10-18

13603467890

Null

1

方式一:

INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
VALUE(6,'娜扎','女','1990-05-06','17789034568',NULL,6);

方式二:
语法:

insert into 表名
set  字段=值,字段=值,.......
insert into beauty
set id = 15,name="李小萌",phone="15890927869";

方式一与方式二的区别
1、方式一支持插入多行,方式二不支持

insert into 表名【(字段名,..)】 values(值,..),(值,...),...;
INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
VALUE(18,'娜扎','女','1990-05-06','17789034568',NULL,2),
(16,'宋茜','女','1991-07-06','17889034568',NULL,8);

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

insert into 表名
查询语句;
insert into beauty(id,name,phone)
select 26,'Emily','13381267890'

修改语句 update

修改单表的记录
语法

update 表名
set  字段=新值,字段=新值......
where 筛选条件;

案例:修改beatury表中姓周的女神电话为13909890876

UPDATE beauty
SET phone = '13909890876'
WHERE NAME LIKE '周%';

修改多表的记录
也叫级联修改
sql92语法:

update 表名1 别名1,表名2  别名2
set  列=值,.....
where   连接条件
and  筛选条件

sql99语法

update 表名1 别名
inner join 表名2 别名
on 连接条件
set 字段=值,字段=值.....
where 筛选条件

删除delete、truncate

方式一:delete
删除单表的记录

delete from 表名 where 筛选条件 【limit条目数】

案例1:删除beauty表中手机号最后一位是9 的女神信息

delete from beauty where phone like '%9';

多表删除【级联删除】
sql-92语法:

delete 表1的别名
from 表1 别名,表2 别名
where 连接条件
and 筛选条件

sql-99语法:

delete 表1的别名,表2的别名
from 表1 别名
inner join 表2 别名
on 连接条件
where 筛选条件

案例:删除张无忌的女朋友信息

delete  b
from beauty b
inner join boys bo 
on b.boyfriends_id=bo.id
where bo.boyName="张无忌";

方式二、使用truncate删除
删除整张表

truncate table  表名;

delete和truncate的区别

  1. delete可以加where筛选条件,truncate不可以
  2. truncate删除,效率高一丢丢
  3. 假如要删除的表中有自增长列,如果用delete删除后,再插入数据,自增长列的值从断点开始。truncate删除后,在插入数据,自增长列的值从1开始。
  4. truncate删除没有返回值,delete删除有返回值。既:能返回受影响的行数。
  5. truncate删除不能回滚,delete删除可以回滚。

数据库的增删改练习
#1、运行以下脚本创建表my_employees

USE 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表中插入下列数据

id

first_name

last_name

Userid

salary

1

patel

Ralph

Rpatel

894

2

Dance

Betty

Bdancs

865

3

Biri

Ben

Bbiri

1100

4

Newman

Chad

Cnewman

750

5

Ropeburn

Alpaha

Aropebur

1550

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);

select * from my_employees;

#或者用方式二

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、向users表中插入数据

id

userid

department_id

1

Rpatel

10

2

Rpatel

10

3

Bbiri

20

4

Cnewman

30

insert into users
 value(1,“Rpatel”,10),(2,“Bdancs”,10),
 (3,“Bbiti”,20),(4,“Cnewman”,30);select * from users;
#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,e
 from users u
 inner join my_employees e
 on u.user_id=e.Userid where u.userid=“Bbiri”;
 #8、删除所有数据
 delete from my_employees;
 delete from users;
 #10、清空表my_employees
 truncate table my_employees;