前言: 上一篇博客,博主主要对于SQL语句中DQL语言做了一些了解,大家肯定对于mysql有了一定的认识。这篇博客则主要讲解一下DML语言和DDL语言,希望可以有所帮助。
还没看过的大佬们,可以先去看看博主上一篇:
上一篇博客:MySQL中SQL语句——DQL(数据查询语句)``
1.DML语言(数据操作语言)
说明: 数据操纵语言(Data Manipulation Language, DML)是用于数据库操作,对数据库其中的对象和数据运行访问工作的编程语句。就是对于数据进行增删改查。
数据操作语言相关的关键字:
- 插入: insert
- 修改: uqdate
- 删除: delete
一、插入语句()
(经典且推荐)方式一:
语法:
insert into 表名(列名,...) vlaues(值1,...)
特点:
1.插入的值的类型要与列的类型一致或兼容
2.不可以为null的列必须插入值,可以为null的列可以不插入:
方式一:在vlaues()中用null代替值
方式二:在列名处不添加该列名
3.列的顺序可以调换
4.列数和值的个数必须一致(⭐)
5.可以省略列名,默认所有列,而且列的顺序和表中列的顺序一致
6.支持子查询
案例:一次性插入多条数据
第一种通过子查询:
INSERT into 表(列名...)
select 值,值,... union
值,值,... union
值,值,... ;
第二种经典查询:
INSERT into 表
vlaues(值1,...),(值2,...),(值3,...);
方式二:
语法:
insert into 表名
set 列名=值,列名=值…;
二、修改语句
1.修改单表的记录
语法:
update 表名
set 列=新值,列=新值....
where 筛选条件
2.修改多表的记录(支持92和99标准)
语法:
sql92语法:
update 表1 别名,表2 别名
set 列=新值....
where 连接条件
and 筛选条件;
sql99语法:
update 表1 别名
inner|left|right join 表2 别名
on 连接条件
set 列=值,....
where 筛选条件;
三、删除语句
方式一:delete
语法:
(重点掌握)1.单表的删除
delete from 表名 [where 筛选条件 limit 条目数]
2.多表的删除
sql92语法:
delete 需要删除的表的别名(表与表之间逗号隔开)
from 表1 别名,表2 别名
where 连接条件
and 筛选条件;
sql99语法(推荐):
delete 需要删除的表的别名(表与表之间逗号隔开)
from 表1 别名
inner|left|right join 表2 别名
on 连接条件
where 筛选条件;
方式二: truncate(不能加where,通常用于清空表的数据)
语法:
truncate table 表名;
truncate 和 delete 使用区别(面试题⭐):
1.delete 可以加wwhere,truncate不能加
2.truncate删除效率高一点
3.当要删除的表中有自增长列,使用delete删除后,再插入数据,自增长列的值会从断点的值开始;
使用truncate 删除后,则会自增长则会从基础值开始;
4.truncate没有返回值,delete删除有返回值;
5.truncate 删除不能回滚,delete删除可以回滚(在事务的知识点);
2.DDL(数据定义语言)
说明: 数据库模式定义语言DDL(Data Definition Language),是用于描述数据库中要存储的现实世界实体的语言。
常见的DDL语句:
创建数据库CREATE DATABASE、创建数据库表格CREATE TABLE、修改数据库表格ALTER TABLE、删除数据库表格DROP TABLE、创建查询命令CREATE VIEW、修改查询命令ALTER VIEW、删除查询命令DROP VIEW。
相关关键字:
- 创建:create
- 修改:alter
- 删除:drop
一、库的管理(操作后需刷新)
1.库的创建:
语法:create database [if not exists(用于判断是否存在该库名)] 库名
2.库的修改(不建议修改库,容易导致数据混乱丢失):
若修改,建议找到该库的文件名,进行修改文件名(注意修改时,需关闭服务端)
补充:
修改库的字符集
alter database 库名 character set 字符集;
3.库的删除:
语法: drop database [if exists] 库名;
二、表的管理
1.表的创建:
语法:
create table [if not exists] 表名(
列名 列的类型[(显示长度) 约束],
列名 列的类型[(显示长度) 约束],
.......
列名 列的类型[(显示长度) 约束],
列名 列的类型[(显示长度) 约束]
)
案例:创建一个book表
create table if not exists book(
id int,#图书编号
Bname varchar(10),#图书名称
author varchar(10) #作者
)
2.表的修改:
①修改列名
语法: alter table 表 change (column) 现列名 修改列名 列的类型
②修改列的类型或约束
语法: alter table 表 modify column 列名 类型|约束;
③添加新列
语法: alter table 表 add column 新列名 类型 [first|after 列名(可以控制放的位置)];
④删除列
语法: alter table 表 drop column 列名;
⑤修改表名
语法:alter table 现表名 rename to 修改表名;
3.表的删除:
语法:
drop table [if exists] 表;
4.表的复制:
①复制表的结构
语法:create table 复制的表 like 被复制的表
②复制表的结构和数据
语法:create table 复制的表
select 列,列... from 表
[where 筛选条件]
③仅仅复制某些字段
语法:create table 复制的表
select 列,列... from 表
where 0;