DML语言
数据操作语言:
插入: insert
修改: update
删除: delete
一、插入语句
方式一:
语法:
insert into 表名(列名…)
values(值1, …);
特点:支持插入多行,支持查询子集
SELECT * FROM beauty;
1.插入的值的类型要与列的类型一致或兼容
INSERT INTO beauty (id, NAME, sex, borndate, phone , photo, boyfriend_id)
VALUES(13, '唐艺昕', '女', '1990-4-23', '1898888888' , NULL,2) ;
2.不可以为nul1的列必须插入值。可以为nul1的列如何插入值?
INSERT INTO beauty(id, NAME, sex, borndate, phone, photo, boyfriend_id)
VALUES(13, '唐艺昕', '女', '1990-4-23', '1898888888' ,NULL,2) ;
INSERT INTO beauty (id, NAME, sex, borndate, phone, boyfriend_id)
VALUES(14, '金星', '女', '1990-4-23', '13888888881',9) ;
3.列的顺序可以调换,必须一一对应
INSERT INTO beauty (NAME, sex, id, phone)
VALUES('蒋欣','女',16, '110') ;
4.列数和值的个数必须一致,不一致会报错
INSERT INTO beauty(NAME, sex, id, phone)
VALUES('关晓彤', '女',17, '110') ;
5.可以省略列名,默认所有列,而且列的顺序和表中列的顺序- - -致
INSERT INTO beauty
VALUES(18, '张飞', '男',NULL, '119' , NULL, NULL) ;
方式二:
语法:
insert into 表名
set列名=值,列名=值, …
INSERT INTO beauty
SET id=19, NAME='刘涛' , phone='999';
二、修改语句
1.修改单表的记录
语法:
update 表名
set 列=新值,列=新值, …
where 筛选条件;
2.修改多表的记录[补充]
语法:
sq192语法:
update 表1 别名,表2 别名
set 列=值…
where 连接条件
and 筛选条件;
sq199语法:
update 表1 别名
inner inner/left/right join 表2 别名
on 连接条件
set 列=值…
where 筛选条件;
*/
1.修改单表的记录
#案例1: 修改beauty表中姓刘的女神电话为18666668888
UPDATE beauty SET phone = '18666668888'
WHERE NAME like '刘%';
#案例2:修改boys表中id好为2的名称为张飞,魅力值10
UPDATE boys SET boyname='张飞' ,usercp=10
WHERE id=2;
2.修改多表的记录
#案例1:修改唐艺昕的男朋友的userCP为100
UPDATE beauty
inner join boys
on beauty.boyfriend_id = boys.id
SET userCP = 100
where name = '唐艺昕';
#案例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;
SELECT * FROM boys;
三、删除语句
/*
方式一: delete
语法:
1、单表的删除[★]
delete from 表名 where 筛选条件
2、多表的删除[补充]
sq192语法:
delete 表1的别名/表2的别名
from 表1别名,表2别名.
where 连接条件
and 筛选条件;
sq199语法:
delete 表1的别名/表2的别名
from 表1别名
inner/left/right join 表2别名 on 连接条件
where 筛选条件;
方式二: truncate 删除整个表的所有内容,相当于清空
语法: truncate table 表名;
delete 和 truncate 比较
1.delete可以加where条件,truncate不能加
2. truncate删除, 效率高一丢丢
3.假如要删除的表中有自增长列,
如果用delete删除后,再插入数据,自增长列的值从断点开始, (可理解为序号,从哪删从哪加)
而truncate删除后,再插入数据,自增长列的值从1开始。(从头加)
4. truncare删除没有返回值,delete删除有返回值(返回删除行数)
5. truncate删除不能回滚,delete删除可以回滚.
*/
方式一: delete
1.删除单表
#删除id=17的女神信息
DELETE FROM beauty
WHERE
id = 17;
2.删除多表
#删除张飞的女朋友中id=19的女神信息
delete beauty from boys inner join beauty on beauty.boyfriend_id = boys.id
where beauty.id = 19;
3.TEST测试
#1.运行以下脚本创建表my_ employees
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
value(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');
#4.向users表中插入数据
/*
1 Rpatel 10
2 Bdancs 10
3 Bbiri 20
4 Cnewman 30
5 Aropebur 40
*/
insert into users
value(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 I
UPDATE my_employees SET SALARY = 1000
WHERE SALARY <900;
#7.将userid为Bbiri 的users表和my_employees表的记录全部删除
DELETE users,my_employees from users inner join my_employees on users.userid = my_employees.Userid
where users.userid = 'Bbiri';
#8.删除所有数据
DELETE from users;
DELETE from my_employees;
#9.检查所作的修正
select * from users;
select * from my_employees;
#10.清空表my_employees
TRUNCATE TABLE my_employees;