MySQL中SQL语句——DML(数据操作语言)和DDL(数据定义语言)

前言: 上一篇博客,博主主要对于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;
上一篇:mysql 不建议delete?


下一篇:三、Hive之DML 数据操作