前言: 上一篇博客,博主主要对于SQL语句中DQL语言做了一些了解,大家肯定对于mysql有了一定的认识。这篇博客则主要讲解一下DML语言和DDL语言,希望可以有所帮助。
还没看过的大佬们,可以先去看看博主上一篇:
上一篇博客:MySQL中SQL语句——DQL(数据查询语句)``
说明: 数据操纵语言(Data Manipulation Language, DML)是用于数据库操作,对数据库其中的对象和数据运行访问工作的编程语句。就是对于数据进行增删改查。
数据操作语言相关的关键字:
(经典且推荐)方式一:
语法: 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删除可以回滚(在事务的知识点);
说明: 数据库模式定义语言DDL(Data Definition Language),是用于描述数据库中要存储的现实世界实体的语言。
常见的DDL语句:
创建数据库CREATE DATABASE、创建数据库表格CREATE TABLE、修改数据库表格ALTER TABLE、删除数据库表格DROP TABLE、创建查询命令CREATE VIEW、修改查询命令ALTER VIEW、删除查询命令DROP VIEW。
相关关键字:
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;