DML语言
DML语言就是数据操作语言:
包括:
插入语言:insert
修改: update
删除: delete
一、插入语句
插入方式一
语法:
insert into 表名(列名,……)
values(值1,……);
1、插入的值的类型要与列的类型一致或兼容
INSERT INTO beauty (
id,
NAME,
sex,
borndate,
phone,
photo,
boyfriend_id
)
VALUES
(
13,
'唐艺昕',
'女',
'1990-4-23',
'18988888888',
NULL,
2
) ;
结果:
2、不可以为NULL的列必须插入值。可以为null的列,Nullable表示可以为空,对其不添加值有两种方法
方式一:有字段,对应值写null
如1.中照片的值就是null
方式二:字段和值都不写
INSERT INTO beauty (
id,
NAME,
sex,
phone
)
VALUES
(
14,
'杨幂',
'女',
'18988888888'
) ;
3、列的顺序可以调换,但值要一一对应
4、列数和值的个数必须一致
5、可以省略列名,默认所有列,而且列的顺序和表中列的顺序一致
INSERT INTO beauty
VALUES
(15, 'iu', '女', NULL, '199', NULL, NULL) ;
插入方式二
语法:
insert into 表名
set 列名=值,列名=值,……
案例:
INSERT INTO beauty
SET id = 16,NAME = 'Lisa',phone = '123456789' ;
结果:
两插入方式比较
1、插入方式一支持插入多行,但是插入方式二不支持
INSERT INTO beauty
VALUES(17, '虞书欣', '女', NULL, '199', NULL, NULL),
(18, '赵小棠', '女', NULL, '199', NULL, NULL),
(19, '刘雨昕', '女', NULL, '199', NULL, NULL);
结果:
2、插入方式一支持子查询,插入方式二不支持
INSERT INTO beauty(id,NAME,phone)
SELECT 20,'宋茜','70473047';
结果:
二、修改语句
1、修改单表的记录
语法:
update 表名
set 列=新值,列=新值……
where 筛选条件;
案例1:修改beauty表中姓唐的女神的电话为18888
UPDATE
beauty
SET
phone = '18888'
WHERE NAME LIKE '唐%' ;
结果:
案例2:修改boys表中的id号为2的名称为张若昀,魅力值为10
UPDATE
boys
SET
boyname = '张若昀',
usercp = 10
WHERE id = 2 ;
结果:
2、修改多表的记录【补充】
语法:
SQL92语法:
update 表1 别名,表2 别名
set 列=值,……
where 连接条件
and 筛选条件;
SQL99语法:
update 表1 别名
inner / left / right join 表2 别名
on 连接条件
set 列=值,……
where 筛选条件;
案例1:修改张无忌女朋友的手机号为114
UPDATE
boys bo
INNER JOIN beauty b
ON bo.`id` = b.`boyfriend_id` SET b.`photo` = '114'
WHERE bo.`boyName` = '张无忌' ;
结果:
案例2:修改没有男朋友的女神的男朋友编号都为2号
UPDATE
boys bo
RIGHT JOIN beauty b
ON bo.`id` = b.`boyfriend_id` SET b.`boyfriend_id` = 2
WHERE bo.`id` IS NULL ;
结果:
三、删除语句
方式一:delete(是整行都删)
1、单表的删除
语法:
delect from 表名 where 筛选条件
案例1:删除手机号以9结尾的女神信息
DELETE FROM beauty WHERE phone LIKE '%9';
结果:
2、多表的删除
语法:
SQL92语法:
delect 别名 (要删哪一个表就写那个表的别名)
from 表1 别名,表2 别名
where 连接条件
and 筛选条件;
SQL99语法:
delete 别名要删哪一个表就写那个表的别名)
from 表1 别名
inner / left / right join 表2 别名
on 连接条件
where 筛选条件;
案例2:删除张无忌的女朋友信息
DELETE
b
FROM
beauty b
INNER JOIN boys bo
ON b.`boyfriend_id` = bo.`id`
WHERE bo.`boyName` = '张无忌' ;
结果:
案例3:删除黄晓明和他女朋友的信息
DELETE
b,bo
FROM
beauty b
INNER JOIN boys bo
ON b.`boyfriend_id` = bo.`id`
WHERE bo.`boyName` = '黄晓明' ;
结果:
方式二:truncate (是删除整张表)
语法:
truncate table 表名;
两方式比较
1、delete可以加where条件的,而truncate 不能加
2、truncate删除效率比delete高一些
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 | 895 |
2 | Dancs | Betty | Bdancs | 860 |
3 | Biri | Ben | Bbiri | 1100 |
4 | Newman | Chad | Cnewman | 750 |
5 | Ropeburn | Audrey | 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) ;
#方式二
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 | Bdancs | 10 |
3 | Bbiri | 20 |
4 | Cnewman | 30 |
5 | Aropebur | 40 |
INSERT INTO `users`
VALUES
(1, 'Rpatel', 10),
(2, 'Bdancs', 10),
(3, 'Bbiri', 20),
(4, 'Cnewman', 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的users表和my_employees表的记录全部删除
DELETE
m_e,
u
FROM
my_employees AS m_e
INNER JOIN users AS u
ON m_e.`Userid` = u.`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 ;