MYSQL初阶学习笔记——DML语言
#DML语言:对数据库中的数据进行一些简单操作
/*
数据操作语言:data manipulation language
插入:insert
修改:update
删除:delete
*/
#一、插入语句
#方式一:经典的插入
/*
语法:
insert into 表名(列名,……) value(值1,……);
*/
USE girls;
SELECT * FROM beauty;
#1.插入的值的类型要与列的类型一致或兼容
INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
VALUE(13,'唐艺昕','女','1990-4-23','18872456446',NULL,2);
#2.不可以为null的列必须插入值,可以为null的列如何插入值?
##方式一:
INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
VALUE(13,'唐艺昕','女','1990-4-23','18872456446',NULL,2);
##方式二:
INSERT INTO beauty(id,NAME,sex,borndate,phone)
VALUE(13,'唐艺昕','女','1990-4-23','18872456446');
#3.列的顺序是否可以调换
INSERT INTO beauty(NAME,sex,id,phone)
VALUE('蒋欣','女',16,'11000221');
#4.列数和值的个数必须一致
INSERT INTO beauty(NAME,sex,id,phone)
VALUE('关晓彤','女',17,'14654464646');
#5.可以省略列名,默认所有列,而且列的顺序和表中列的顺序一致
INSERT INTO beauty
VALUE(18,'张飞','男',NULL,'4454644646',NULL,NULL);
#方式二:
/*
语法:
insert into 表名
set 列名=值,列名=值,……
*/
#案例1:
INSERT INTO beauty
SET id=20,NAME='babyangle',borndate='1996-3-11',sex='男',phone='13156464894';
INSERT INTO beauty
SET id=21,NAME='刘涛',phone='991119';
#两种方式PK
##1.方式一支持多行,方式二不支持
INSERT INTO beauty(id,NAME,sex,phone)
VALUE(22,'TYX','f','1213')
,(23,'YXT','m','2121');
##2.方式一支持子查询,方式二不支持
INSERT INTO beauty(id,NAME,phone)
SELECT 24,'XIXI','21122';
INSERT INTO beauty(id,NAME,phone)
SELECT id,boyName,'1111111'
FROM boys WHERE id<3;
#二、修改语句
/*
1.修改单表的记录(重)
语法:
update 表名
set 列=新值,列=新值,……
where 筛选条件;
2.修改多表的记录【补充】
92语法:
update 表1 别名,表2 别名
set 列=值,……
where 连接条件
and 筛选条件;
99语法:
update 表1 别名
inner|left|right}full join 表2 别名
on 连接条件
set 列=值,……
where 筛选条件;
*/
#1.修改单表的记录
#案例1:修改beauty表中名中有X的女神电话为1384381438
UPDATE beauty SET phone='1384381438'
WHERE NAME LIKE '%X%';
#案例2:修改boys表中id号为2的名称为张飞,魅力值10
UPDATE boys SET boyName='张飞',usercp=10
WHERE id=2;
#2.修正多表的记录
#案例1:修改张无忌的女友的手机号为114
UPDATE boys bo
INNER JOIN beauty be
ON bo.id=be.`boyfriend_id`
SET phone='114'
WHERE bo.`boyName`='张无忌';
#2.修改没有男朋友的女神 的 男朋友编号都为2号
UPDATE beauty be
LEFT JOIN boys bo
ON bo.id=be.`boyfriend_id`
SET boyfriend_id=2
WHERE boyfriend_id IS NULL;
#WHERE be.id IS NULL;
SELECT * FROM boys;
#三、删除语句、
/*
方式一:delete
语法:
1.单表的删除(重)
delete from 表名 where 筛选条件 【limit x】
2.多表的删除(补充)
sql92语法:
delete 表1的别名,表2的别名(删除哪个表的信息放哪个表别名)
from 表1 别名,表2 别名
where 连接条件
and 筛选条件
sql99语法:
delete 表1的别名,表2的别名
from 表1 别名
inner|left|right join 表2 别名 on 连接条件
where 筛选条件;
方式二:truncate
语法:
truncate table 表名;
*/
#方式一:delete
#1.单表的删除(重)
#案例1:删除手机号以9结尾的女神信息
DELETE FROM beauty WHERE phone LIKE '%9';
SELECT * FROM beauty;
#2.多表的删除
#案例1:删除张飞的女朋友信息
DELETE be
FROM beauty be
INNER JOIN boys bo ON bo.`id`=be.`boyfriend_id`
WHERE bo.`boyName`='张飞';
#案例2:删除黄晓明信息以及他女朋友的信息
DELETE bo,be
FROM beauty be
INNER JOIN boys bo
ON bo.`id`=be.`boyfriend_id`
WHERE bo.`boyName`='黄晓明';
#方式二:truncate 语句(清空表格,不用where)
#案例:truncate table boys (清空boys表)
#delete pk truncate
/*
1.delete可以加where条件,truncate不能加
2.truncate删除效率略高一丢丢
3. 若删除表有自增长列,delete删除后再插入,自增长从断点开始
truncate删除再插入 从1开始
4.truncate删除无返回值,delete删除有返回值
5.truncate删除不能回滚,delete删除可以回滚
*/
#===========================Test=====================
#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;
DESC users;
SHOW DATABASES;
#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
*/
#方式1
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);
TRUNCATE TABLE my_employees;
#方式2
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表中插入数据
/*
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的user表和my_employees表的记录全部删除
DELETE u,e
FROM my_employees e
INNER JOIN users u 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_employees
TRUNCATE TABLE my_employees;
TRUNCATE TABLE users;
/*
数据操作语言:data manipulation language
插入:insert
修改:update
删除:delete
*/
#一、插入语句
#方式一:经典的插入
/*
语法:
insert into 表名(列名,……) value(值1,……);
*/
USE girls;
SELECT * FROM beauty;
#1.插入的值的类型要与列的类型一致或兼容
INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
VALUE(13,'唐艺昕','女','1990-4-23','18872456446',NULL,2);
#2.不可以为null的列必须插入值,可以为null的列如何插入值?
##方式一:
INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
VALUE(13,'唐艺昕','女','1990-4-23','18872456446',NULL,2);
##方式二:
INSERT INTO beauty(id,NAME,sex,borndate,phone)
VALUE(13,'唐艺昕','女','1990-4-23','18872456446');
#3.列的顺序是否可以调换
INSERT INTO beauty(NAME,sex,id,phone)
VALUE('蒋欣','女',16,'11000221');
#4.列数和值的个数必须一致
INSERT INTO beauty(NAME,sex,id,phone)
VALUE('关晓彤','女',17,'14654464646');
#5.可以省略列名,默认所有列,而且列的顺序和表中列的顺序一致
INSERT INTO beauty
VALUE(18,'张飞','男',NULL,'4454644646',NULL,NULL);
#方式二:
/*
语法:
insert into 表名
set 列名=值,列名=值,……
*/
#案例1:
INSERT INTO beauty
SET id=20,NAME='babyangle',borndate='1996-3-11',sex='男',phone='13156464894';
INSERT INTO beauty
SET id=21,NAME='刘涛',phone='991119';
#两种方式PK
##1.方式一支持多行,方式二不支持
INSERT INTO beauty(id,NAME,sex,phone)
VALUE(22,'TYX','f','1213')
,(23,'YXT','m','2121');
##2.方式一支持子查询,方式二不支持
INSERT INTO beauty(id,NAME,phone)
SELECT 24,'XIXI','21122';
INSERT INTO beauty(id,NAME,phone)
SELECT id,boyName,'1111111'
FROM boys WHERE id<3;
#二、修改语句
/*
1.修改单表的记录(重)
语法:
update 表名
set 列=新值,列=新值,……
where 筛选条件;
2.修改多表的记录【补充】
92语法:
update 表1 别名,表2 别名
set 列=值,……
where 连接条件
and 筛选条件;
99语法:
update 表1 别名
inner|left|right}full join 表2 别名
on 连接条件
set 列=值,……
where 筛选条件;
*/
#1.修改单表的记录
#案例1:修改beauty表中名中有X的女神电话为1384381438
UPDATE beauty SET phone='1384381438'
WHERE NAME LIKE '%X%';
#案例2:修改boys表中id号为2的名称为张飞,魅力值10
UPDATE boys SET boyName='张飞',usercp=10
WHERE id=2;
#2.修正多表的记录
#案例1:修改张无忌的女友的手机号为114
UPDATE boys bo
INNER JOIN beauty be
ON bo.id=be.`boyfriend_id`
SET phone='114'
WHERE bo.`boyName`='张无忌';
#2.修改没有男朋友的女神 的 男朋友编号都为2号
UPDATE beauty be
LEFT JOIN boys bo
ON bo.id=be.`boyfriend_id`
SET boyfriend_id=2
WHERE boyfriend_id IS NULL;
#WHERE be.id IS NULL;
SELECT * FROM boys;
#三、删除语句、
/*
方式一:delete
语法:
1.单表的删除(重)
delete from 表名 where 筛选条件 【limit x】
2.多表的删除(补充)
sql92语法:
delete 表1的别名,表2的别名(删除哪个表的信息放哪个表别名)
from 表1 别名,表2 别名
where 连接条件
and 筛选条件
sql99语法:
delete 表1的别名,表2的别名
from 表1 别名
inner|left|right join 表2 别名 on 连接条件
where 筛选条件;
方式二:truncate
语法:
truncate table 表名;
*/
#方式一:delete
#1.单表的删除(重)
#案例1:删除手机号以9结尾的女神信息
DELETE FROM beauty WHERE phone LIKE '%9';
SELECT * FROM beauty;
#2.多表的删除
#案例1:删除张飞的女朋友信息
DELETE be
FROM beauty be
INNER JOIN boys bo ON bo.`id`=be.`boyfriend_id`
WHERE bo.`boyName`='张飞';
#案例2:删除黄晓明信息以及他女朋友的信息
DELETE bo,be
FROM beauty be
INNER JOIN boys bo
ON bo.`id`=be.`boyfriend_id`
WHERE bo.`boyName`='黄晓明';
#方式二:truncate 语句(清空表格,不用where)
#案例:truncate table boys (清空boys表)
#delete pk truncate
/*
1.delete可以加where条件,truncate不能加
2.truncate删除效率略高一丢丢
3. 若删除表有自增长列,delete删除后再插入,自增长从断点开始
truncate删除再插入 从1开始
4.truncate删除无返回值,delete删除有返回值
5.truncate删除不能回滚,delete删除可以回滚
*/
#===========================Test=====================
#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;
DESC users;
SHOW DATABASES;
#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
*/
#方式1
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);
TRUNCATE TABLE my_employees;
#方式2
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表中插入数据
/*
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的user表和my_employees表的记录全部删除
DELETE u,e
FROM my_employees e
INNER JOIN users u 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_employees
TRUNCATE TABLE my_employees;
TRUNCATE TABLE users;