DML语言——数据操作语言

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 ;

猜你喜欢

转载自blog.csdn.net/Txixi/article/details/114338542