MySQL数据库DML与DDL语言

DML:数据操作语言

1.两种插入语句
(1)insert+into+表名(列名) +values(值1,值2…)
这种插入支持一次插入多行值每个insert+into+表名(列名) +values(值1,值2…),(值1,值2…)…
同样的可以在后边加入查询语句
即:
insert+into+表名(列名)
select+…
注意这里查询语句先运行然后把查询的结果集插入到表里边不过要与表名后边的列对应
主键不能重复且不能为空,否则插入不成功,表名后边也可以什么都不加那么values就是所有的字段值都要加,没有就写null
(2)insert+into+表名
set 表中的某一个字段=要插入的值,表中的某一个字段=要插入的值,表中的某一个字段=要插入的值…

注意这里不支持多行插入和加入查询语句进行插入,主键一样不能为空和重复

在这里插入图片描述
2.修改语句;
(1)修改单表的记录:
update+表名
set+列=新值,列=新值…
where +筛选条件

(2)修改多表记录:
sql92语法:
update+表1(别名),表2(别名)
set+列=值,列=值…
where+连接条件和筛选条件

sql99:
update+表1+(别名)
inner|left|right join 表2 别名
on+连接条件
set+列=值,列=值…
where+筛选条件

在这里插入图片描述
3.删除语句
(1)方式1:
单表删除:
delete+from+表名+where+筛选条件
会把整个记录都删除
多表的删除:
同样支持sql92和sql99语法
sql99:
delete 表
from 表1
inner|left|right| join 表2
on 连接条件
where +筛选条件

delete后边的表是要删除内容的表
(2)方式2:
truncate table +表名
直接删除整个表的数据

两种方式的区别:
(1)delete可以加where条件而truncat不能
(2)truncat效率低一点
(3)假如删除的表有自增长序列那么delete删除后再添加就会从断点开始
而truncat是从1开始
(4)truncat删除没有返回值而delete有返回值
(5)truncat可以不能回滚delete不能回滚
在这里插入图片描述

DDL:数据定义语言:

1.对库的管理:
(1).创建库:
create database +(if not exists)+库名
(2).更改库的字符集:
alter database +表+character set+字符集
(3).库的删除
drop database +(if exists)+库名
2.对表的管理:
(1)表的创建:
crcreate+table +表名(
列 类型,
列 类型,
列 类型,

列 类型
)

(2)表的修改:
修改列名:
alter table +表名+change+column 旧列名 新列名 新列名的类型+(约束);
在改列的同时也可以添加约束
修改列的类型和(添加约束):
alter table+表名+modify+column+列名+列类型+(约束)
添加新列:
alter table+表名+add+column+新列名+新列名的类型+(约束)
删除列:
alter table +表名+drop+ column+列名
改表名;
alter table +表名+rename to+新的表名

column是列的关键词,对表的修改通式:alter table+表名,然后不同的修改类型所对应的关键字为add,drop,modify,change
(3)表的删除:
drop table +表名
只有在删除和创建表和库的时候才能在table和表名之间加上if not exists或者if exists
(4)表的复制:
仅仅复制表的结构:
creat table +复制后的新表名+like+要复制的表名
复制表的所有内容
create table +复制后的表名+select *+from+要复制的表
仅仅复制部分数据:
creat table +复制后的表名+selete语句
仅仅复制表的字段
creat table +复制后的表名+selete from语句+where 加一个恒不成立的条件
在这里插入图片描述
2.常见的数据类型:
(1)整型:
tinyint(1字节),smallint(2字节),mediumint(3字节),integer/in(4字节),bigint(8字节)
在创建表的时候整型默认代表有符号(最高位符号位就是可以为负)
可以设置为无符号在整型的后边加上unsigned
当我们设置的值超过整型那么就会等于当前整型最近的临界值
整型的长度在创建的时候不管int后边的小括号里边是几最后创建好了整型长度都是0,意思是在整型的不少于0位都不对原数据进行更改,如果想让创建好的整型有长度有效那么就要配合zerofill连用,不足长度在前用0补齐
(2)小数:
浮点类型:float,double
正点数类型:DECTMAL(DEC)是比double更精确的类型
一般三者在定义数据类型都可以带参数(M,D)
M:代表小数位加整数位的个数
D:代表小数的位数(若添加数据的小数位数超出D那么就会进行四舍五入)
一般double和float默认的是只要数据不超过两者范围都会被保存,
而DEC则是默认M为10,D默认为0
(3)字符型:
较短文本:
char(M):M代表最大字符数,固定长度的字符,即使数据不够那么大也会开辟那么大的空间,空间耗费大但效率高
varchar(M):可变长度字符,即不超过最大字符数,数据多少字符就开辟多少空间,空间耗费小但效率低

较长文本:
text和blob

枚举类型:
enum:添加的数据只能是枚举类型里边的其中一个数据
大小写可以相互转化:枚举数据为a,那么数据为A时,存入时自动转化成a

set:
和enum用法类似只不过用户只能存enum其中一个枚举的数据
而set可以存其枚举的多个数据

(4)
日期型:
date:只能保存日期
datetime,timetamp:保存日期和时间

time:只能保存时间
year:只能保存年
在这里插入图片描述
3.常见约束:
(1)五大约束
not null:非空保证字段不能为空
default+默认值:默认,用于保证该字段有默认值(用引号引起来)
primary key:主键约束,保证该字段具有非空唯一性
unique:唯一约束,保证该字段具有唯一性但是可以为null
foreign key:外键,用于限制两个表的关系,用于保证该字段的值必须来自主表的关联列的值
在从表添加外键约束用于引用主表中某列的值
(2)约束的添加:
在创建表的时候添加列级约束只支持:默认,非空,主键,唯一
在添加表级约束只支持:主键,唯一,外键
(3)主键和唯一约束:
主键至多一个唯一可以有多个
允许两个列组成一个主键和一个唯一

(4)建表的时候添加约束:
以列级约束添加:
creat table +表名(
列名+列名类型+约束(可以加多个空格隔开就行)
)
以表级约束添加:
creat table +表名(
列名+列名类型
列名+列名类型

(constraint +别名(索引名字))+约束(对应字段)
在添加外键比较特殊
(constraint +别名(索引名字))+foreign key(字段名)+references +主表(主表对应字段)
)

还可以在表建好的时候添加约束:
alter table+表名+modify+column+列名+列类型+(约束)
==alter table+表名+add+(constraint+约束名)+(要添加的字段)
(5)常用查看表结构指令:
desc +表名:查看表的结构
SHOW INDEX FROM +表名:查看表的索引(一般来说外键主键唯一键都会产生索引)
(6)外键:
要求在从表建立外键关系
从表外键列的类型和主表列的类型要求一致或者兼容
主表的关联列是一个key(一般是主键或者唯一)
删表的时候先删从表在删主表
(7)修改表时删除约束:
删除非空约束:alter table+表名+modify+column+列名+列类型+null(或者什么都不加)
删除默认约束:alter table+表名+modify+column+列名+列类型
删除主键:alter table+表名 drop primary key
删除唯一键:==alter table+表名 drop index +唯一约束的名字
删除外键:alter table+表名 drop foreign key+加外键名字
(8)标识列(又称自增长列):
创建表的时候在约束后边加:AUTO_INCREMENT
如creat table +表名(
id int primary key auto_increment
)
自增长起始值为1,步长起始值为1
起始值不能更改,步长可以更改
show VARIABLES LIKE “%auto_increment%”
查看对应的步常代表的名字然后用 set 步长代表名字=要设置的步长
修改表时设置标识列:alter +table+表名+modify column +列名+类型+约束+AUTO_INCREMENT
修改表时删除标识列:alter +table+表名+modify column +列名+类型
标识列必须和 key搭配,而且一个表至多一个标识列,标识列必须要是数字类型

发布了37 篇原创文章 · 获赞 52 · 访问量 1816

猜你喜欢

转载自blog.csdn.net/qq_45737068/article/details/104866049