mysql-数据库的增删改

数据操作语言包括

  • 插入:insert
  • 修改:update
  • 删除:delete

插入insert

语法:

insert into 表名(字段名,...) values(值,...);

特点:
1、要求值的类型和字段的类型要一致或兼容
2、字段的个数和顺序不一定与原始表中的字段个数和顺序一致,既:可以调换
但必须保证值和字段一一对应
3、不可以为null的值必须插入值,可以为null的值插入方式有两种:
①字段和值都省略
②字段写上,值使用null
4、列数和值的个数必须一致
5、可以省略列名,默认所有列,而且列的顺序和表中列的顺序一致。
案例:向beauty表中插入一条数据

id- int(11) name -varchar(50) sex-char(1)-Nullable borndate-datetime phone-varchar(11) photo-blob boyfriend_id-int(11)
1 热巴 1993-02-03 13389087890 Null 3
2 周冬雨 1993-08-08 18888888889 Null5 5
3 杨紫 1993-07-09 19993334567 Null 2
4 关晓彤 1994-08-10 15910456677 Null 4
5 郑爽 1991-10-18 13603467890 Null 1

方式一:

INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
VALUE(6,'娜扎','女','1990-05-06','17789034568',NULL,6);

方式二:
语法:

insert into 表名
set  字段=值,字段=值,.......
insert into beauty
set id = 15,name="李小萌",phone="15890927869";

方式一与方式二的区别
1、方式一支持插入多行,方式二不支持

insert into 表名【(字段名,..)values(值,..),(值,...),...;
INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
VALUE(18,'娜扎','女','1990-05-06','17789034568',NULL,2),
(16,'宋茜','女','1991-07-06','17889034568',NULL,8);

2、方式一支持子查询,方式二不支持

insert into 表名
查询语句;
insert into beauty(id,name,phone)
select 26,'Emily','13381267890'

修改语句 update

修改单表的记录
语法

update 表名
set  字段=新值,字段=新值......
where 筛选条件;

案例:修改beatury表中姓周的女神电话为13909890876

UPDATE beauty
SET phone = '13909890876'
WHERE NAME LIKE '周%';

修改多表的记录
也叫级联修改
sql92语法:

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

sql99语法

update 表名1 别名
inner join 表名2 别名
on 连接条件
set 字段=值,字段=值.....
where 筛选条件

删除delete、truncate

方式一:delete
删除单表的记录

delete from 表名 where 筛选条件 【limit条目数】

案例1:删除beauty表中手机号最后一位是9 的女神信息

delete from beauty where phone like '%9';

多表删除【级联删除】
sql-92语法:

delete 表1的别名
from 表1 别名,表2 别名
where 连接条件
and 筛选条件

sql-99语法:

delete 表1的别名,表2的别名
from 表1 别名
inner join 表2 别名
on 连接条件
where 筛选条件

案例:删除张无忌的女朋友信息

delete  b
from beauty b
inner join boys bo 
on b.boyfriends_id=bo.id
where bo.boyName="张无忌";

方式二、使用truncate删除
删除整张表

truncate table  表名;

delete和truncate的区别

  1. delete可以加where筛选条件,truncate不可以
  2. truncate删除,效率高一丢丢
  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 894
2 Dance Betty Bdancs 865
3 Biri Ben Bbiri 1100
4 Newman Chad Cnewman 750
5 Ropeburn Alpaha 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);

select * from my_employees;

#或者用方式二
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 Rpatel 10
3 Bbiri 20
4 Cnewman 30

insert into users
value(1,“Rpatel”,10),(2,“Bdancs”,10),
(3,“Bbiti”,20),(4,“Cnewman”,30);

select * from users;

#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
inner join my_employees e
on u.user_id=e.Userid
where u.userid=“Bbiri”;
#8、删除所有数据
delete from my_employees;
delete from users;
#10、清空表my_employees
truncate table my_employees;

你可能感兴趣的:(mysql)