mysql基础——DML

目录

一、插入语句

二、修改语句

三、删除语句

四、相关案例


一、插入语句

-- DML
/*
含义:数据操作语言
插入:insert
修改:update
删除:delete
*/

-- 一、插入语句
-- 插入方式1
/*
语法
   insert into 表名 (列名,...) 
   values(值1,...);
特点
   1.插入的值的类型要与列的类型一致或兼容
   2.不可以为null的列必须插入值,可以为null的列如何插入值?
   3.列名的顺序是否可调换? 可以的
   4.省略列名,默认所有列,列的顺序和表中列的顺序一致
   5.支持子查询
*/
-- 查询beauty表
SELECT * FROM beauty;

-- 1.插入的值的类型要与列的类型一致或兼容
INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
VALUES(13,'唐艺昕','女','1990-4-23','189888888',NULL,2);

-- 2.不可以为null的列必须插入值,可以为null的列如何插入值?
-- 方式1
INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
VALUES(13,'唐艺昕','女','1990-4-23','189888888',NULL,2);
-- 方式2
INSERT INTO beauty(id,NAME,sex,borndate,phone,boyfriend_id)
VALUES(14,'娜扎','女','1990-8-23','1898876888',3);

-- 3.列名的顺序是否可调换? 可以的
INSERT INTO beauty(NAME,sex,id,phone)
VALUES('蒋欣','女','15','111122324');

-- 4.省略列名,默认所有列,列的顺序和表中列的顺序一致
INSERT INTO beauty
VALUES('16','张飞','男',NULL,'119',NULL,NULL);

-- 插入方式2
/*
语法
insert into 表名
set 列名=值,列名=值,...
*/
INSERT INTO beauty
SET id = 17,NAME = '刘涛',phone = '999';

二、修改语句

-- DML
/*
含义:数据操作语言
插入:insert
修改:update
删除:delete
*/

-- 二、修改语句
/*
1.修改单表中的记录(重点掌握)
语法
update 表名
set 列名=新值,...
where 筛选条件;

2.修改多表的记录(补充)

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

sql99语法
update 表1 别名
inner(left)(right) join 表2 别名
on 连接条件
set 列=值,...
where 筛选条件
*/

SELECT * FROM beauty;
-- 1.修改beauty表中姓唐的电话为138998899
UPDATE beauty
SET phone = '138998899';
WHERE NAME LIKE '%唐%';

SELECT * FROM boys;
-- 2.修改boys中id为2的名称为张飞,魅力值为10
UPDATE boys
SET boyName = '张飞',userCP = 10
WHERE id = 2;

-- 3.修改张无忌的女朋友的手机号为114
UPDATE beauty b
INNER JOIN boys bo
ON bo.`id` = b.`boyfriend_id`
SET b.`phone` = '114'
WHERE bo.`boyName` = '张无忌';

-- 4.修改没有男朋友的女人的男朋友编号都为2号
/*
分析
   1.查询没有男票的女人
   2.修改上述表格
*/
UPDATE boys bo
RIGHT JOIN beauty b
ON bo.`id` = b.`boyfriend_id`
SET b.`boyfriend_id`=2
WHERE bo.`id` IS NULL;

三、删除语句

-- 三、删除语句
/*
方式一
语法
1.单表的删除(掌握)
delete from 表名 where 筛选条件
2.多表的删除(理解)
sql92
delete 表1别名,表2别名
from 表1 别名,表2 别名
where 连接条件
and 筛选条件

sql99
delete 表1别名,表2别名
from 表1 别名
inner(left)(right) join 表2 别名
on 连接条件
where 筛选条件
特点
   1.若删除的表有自增长列,再插入数据从断点开始
   2.删除有返回值(几行成功了)
   3.可以回滚
方式二
语法
truncate table 表名
特点
   1.不能加where条件
   2.若删除的表有自增长列,再插入数据从1开始
   3.没有返回值
   4.不能回滚
*/
SELECT * FROM beauty;
-- 1.删除手机号以9结尾的女人信息
DELETE FROM beauty
WHERE phone LIKE '%9';

-- 2.删除张无忌的女朋友的信息
/*
分析
   1.连接女人表和男人表
   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` = '黄晓明';

-- 1.将男人删除
TRUNCATE TABLE boys;

四、相关案例

-- 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插入数据方法1
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);

DELETE FROM 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表中插入数据
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 users u
JOIN my_employees e
ON u.`userid` = e.`Userid`
WHERE u.`userid` = 'Bbiri';

-- 8.删除所有数据
DELETE FROM my_employees;
DELETE FROM users;

-- 9.清空表my_employees
TRUNCATE TABLE my_employees;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值