iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL中DDL数据定义语句有哪些
  • 831
分享到

MySQL中DDL数据定义语句有哪些

2024-04-02 19:04:59 831人浏览 泡泡鱼
摘要

小编给大家分享一下Mysql中DDL数据定义语句有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、DDL数据定义语句库的管

小编给大家分享一下Mysql中DDL数据定义语句有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

一、DDL数据定义语句

库的管理

创建:create database [if not exists] 库名;
修改:若需要修改库名,直接修改文件夹
删除:DROP DATABASE IF EXISTS 库名;

表的管理

创建

create table IF NOT EXISTS 表名(
列名 列的类型[长度、约束],
列名 列的类型[长度、约束],
列名 列的类型[长度、约束],
...
)

修改
alter table 表名 add|drop|modify|change column 列名 [列类型 约束];

删除
drop table 表名;

【库的管理】# 创建库CREATE DATABASE IF NOT EXISTS books;# 修改库的字符集ALTER DATABASE books CHARACTER SET gbk;# 删除库DROP DATABASE IF EXISTS books;【表的管理】# 1.创建表CREATE TABLE IF NOT EXISTS book(
	id INT,
	bName VARCHAR(20),
	authorID INT,
	publishDate DATETIME);DESC book;CREATE TABLE author(
	id INT,
	au_name VARCHAR(20),
	nation VARCHAR(10));DESC author;# 2.修改表# 修改列名ALTER TABLE book CHANGE COLUMN publishDate pubDate DATETIME;# 修改列的类型或约束ALTER TABLE book MODIFY COLUMN pubdate TIMESTAMP;# 添加新列ALTER TABLE author ADD COLUMN annual DOUBLE; # 添加新列作为第一个字段ALTER TABLE author ADD COLUMN newT1 INT FIRST;# 添加新列在指定的列后ALTER TABLE author ADD COLUMN newT2 INT AFTER newT1;# 删除列ALTER TABLE author DROP COLUMN annual;# 修改表名ALTER TABLE author RENAME TO book_author;# 3.表的删除DROP TABLE IF EXISTS book_author;SHOW TABLES;# 4.表的复制INSERT INTO author VALUES(1,'小樱','日本'),(2,'悟空','中国'),(3,'绿巨人','美国'),(4,'哪吒','中国');# 仅复制表的结构CREATE TABLE author2 LIKE author;# 复制表的结构+数据CREATE TABLE author3 SELECT * FROM author;# 只复制部分数据CREATE TABLE author4 SELECT id,au_name FROM author WHERE nation='中国';# 仅复制某些字段CREATE TABLE author5 SELECT id,au_name FROM author WHERE 1=2;

二、数据类型

2.1 整型

整数类型别名字节无符号范围有符号范围
Tinint微整型10~255-128~127
Smallin小整型20~65535-32768~32767
Mediumint中整型30~1677215-8388608~8388607
Int或Integer整型40~4294967295-2147483648~2147483647
Bigint大整型80~9223372036854775807*2+1-9223372036854775808~9223372036854775807
【整型】# 1.默认为有符号,可以添加unsigned设置为无符号CREATE TABLE IF NOT EXISTS tab_int(
	t1 INT, # 有符号
	t2 INT UNSIGNED, # 无符号
	t3 INT ZEROFILL #添加zerofill后自动变更为无符号整型,位数不够0填充.);DESC tab_int;SELECT * FROM tab_int;# 2.如果插入的数值超出了整型的范围,会报out of range异常INSERT INTO tab_int VALUES(2147483648,1);# 3.如果不设置长度,会有默认的长度,位数不够时0填充(前提是字段有ZEROFILL).

2.2 小数

浮点数类型字节范围
float(M,D)4-2^128 ~ +2^128
double(M,D)8-2^1024 ~ +2^1024
定点数类型\\
DEC(M,D)M+2最大取值范围与double相同,给定decimal的有效范围由M和D决定

注意:
M:整数部位+小数部位的总长度
D:小数部位
D和M都省略时:
1、如果是decimal类型,则M默认为10,D默认为0;
2、如果是floact和double,会根据插入的数值的精确度来决定精度。
3、定点型的精确度较高,如果要求插入数值的精确度较高如货币运算则考虑使用。

2.3 字符型

字符串类型M是否可以省略特点空间耗费效率范围
char(M)M可以省略,默认为1定长比较耗费M为0~255之间的整数
varchar(M)M不可以省略可变长比较节省M为0~65535之间的整数

binaryvarbinary类型,类似于char和varchar,不同的是它们包含二进制字符而不包含非二进制字符,即保存较短的二进制。

Bit(M)类型,字节为1~8,范围为Bit(1)~Bit(8)

Enum类型,即枚举类型,要求插入的值必须属于列表中指定的值之一,如果列成员为1~255,则需要1个字节存储;如果列成员为255~65535,则需要2个字节存储,最多需要65535个成员。

Set类型,和Enum类似,可以保存0~64个成员。和Enum最大的区别是:Set类型一次可以选取多个成员,而Enum只能选一个,根据成员个数不同,存储所占的字节也不同。

成员数字节数
1~81
9~162
17~243
25~324
33~648
【枚举】CREATE TABLE tab_set(
	s1 SET('a','b','c'));INSERT INTO tab_set VALUES('a');INSERT INTO tab_set VALUES('c,a');INSERT INTO tab_set VALUES('a,b,c');# 插入后,内部会进行排序,如插入c,a会变成a,c

2.4 日期类型

日期和时间类型特点字节最小值最大值
date只保存日期41000-01-019999-12-31
datetime保存日期+时间81000-01-01 00:00:009999-12-31 23:59:59
timestamp(使用较多)保存日期+时间41870010800012038年的某个时刻
time只保存时间3-838:59:59838:59:59
year只保存年119012155

timestamp和实际时区有关,更能反映实际的日期;datetime则只能反映出插入时的当地时区。
timestamp的属性受mysql版本和sqlMode的影响很大。

【日期类型】CREATE TABLE tab_date(
	t1 DATETIME, # 不受时区影响
	t2 TIMESTAMP # 受时区影响);INSERT INTO tab_date VALUES(NOW(),NOW());SET time_zon='+8:00';# 设置时区SHOW VARIABLES LIKE 'time_zone'; #显示当前时区

二、六大约束

含义:一种限制,用于限制表中的数据,为了保证表中数据的准确性和可靠性。

NOT NULL非空约束,规定某个字段不能为空
UNIQUE唯一约束,规定某个字段在整个表汇中是唯一的
PRIMARY KEY主键(唯一且非空)
FOREIGN KEY外键
CHECK检查约束(mysql中不支持)
DEFAULT默认值,保证该字段有默认值

列级约束:六大约束语法上都支持,但外键约束没有效果。

表级约束:除了非空、默认,其他都支持。

常用的做法是:其他约束都写在列级,外键约束写在表级。

主键和唯一对比是否保证唯一性是否允许为空允许有几个是否允许组合(不推荐)
主键×至多一个主键允许组合主键
唯一√(允许有一个null)可以有多个唯一允许组合唯一

外键的特点:

  • 要求在从表设置外键关系。

  • 从表的外键列的类型和主表的关联列的类型要求一致或兼容,名称无要求。

  • 主表的关联列必须是一个key(一般是主键或唯一)

  • 插入数据时,先插入主表再插入从表;删除数据时,先删除从表再删除主表。

列级约束和表级约束比较位置支持的约束类型是否可以起别名
列级约束列的后面语法都支持,但外键没有效果不可以
表级约束所有列的下面默认和非空不支持,其他支持可以(主键没有效果)
【列级约束】
直接在字段名和类型后面追加约束类型。
注意:只支持默认、非空、主键、唯一,不支持外键约束CREATE DATABASE students;USE students;CREATE TABLE major(
	id INT PRIMARY KEY,# 主键
	majorName VARCHAR(20));CREATE TABLE stuinfo(
	id INT PRIMARY KEY,# 主键
	stuName VARCHAR(20) NOT NULL, #非空
	gender CHAR(1) CHECK(gender='男' OR gender='女'),#检查
	seat INT UNIQUE,# 唯一
	age INT DEFAULT 18, #默认约束
	majorId INT REFERENCES major(id) # 外键);DESC stuinfo;SHOW INDEX FROM stuinfo; # 查看表中所有的索引,外键,唯一【表级约束】# 语法:[CONSTRaiNT 约束名 ] 约束类型(字段名)DROP TABLE IF EXISTS stuinfo;CREATE TABLE stuinfo(
	id INT,
	stuname VARCHAR(20),
	gender CHAR(1),
	seat INT,
	age INT,
	majorid INT,
	CONSTRAINT pk PRIMARY KEY(id),# 主键
	CONSTRAINT uq UNIQUE(seat), # 唯一
	CONSTRAINT ck CHECK(gender='男' OR gender='女'),# 检查(不报错,但无效)
	CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id) # 外键);SHOW INDEX FROM stuinfo;【修改表时添加约束】# 添加非空约束ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NOT NULL;# 添加默认约束ALTER TABLE stuinfo MODIFY COLUMN age INT DEFAULT 18;# 添加主键ALTER TABLE stuinfo MODIFY COLUMN id INT PRIMARY KEY;# 添加唯一键ALTER TABLE stuinfo MODIFY COLUMN seat INT UNIQUE;# 添加外键ALTER TABLE stuinfo ADD CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id);DESC stuinfo;SHOW INDEX FROM stuinfo;【修改表时删除约束】# 删除非空约束ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NULL;# 删除默认约束ALTER TABLE stuinfo MODIFY COLUMN age INT;# 删除主键ALTER TABLE stuinfo DROP PRIMARY KEY;# 删除唯一ALTER TABLE stuinfo DROP INDEX seat;# 删除外键ALTER TABLE stuinfo DROP FOREIGN KEY fk_stuinfo_major;

学习了约束,尝试完成籼米的测试MySQL中DDL数据定义语句有哪些
1、列级约束:
ALTER TABLE emp2 MODIFY COLUMN id INT PRIMARY KEY;# 列约束不支持起名字
表级约束:
ALTER TABLE emp2 ADD CONSTRAINT my_emp_id_pk PRIMARY KEY(id);# 实际上主键起了名字也没效果
2、与1类似
3、
ALTER TABLE emp2 ADD COLUMN dept_id INT;
ALTER TABLE emp2 ADD CONSTRAINT fk_emp2_dept2 FOREIGN KEY(dept_id) REFERENCES dept2(id);

四、标识列

标识列又称为自增长列,其实也可以将标识列纳入约束的范围。

含义:可以不用手动的插入值,系统提供默认的序列值。

特点:
1.标识列不一定非要和主键搭配,但要求是一个key。
2.一个表至多可以有一个表示列。
3.表示列的类型只能为数值型。
4.标识列可以通过SET auto_increment_increment=3;设置步长,也可以通过手动插入值来设置起始值。

【创建表时设置标识列】DROP TABLE IF EXISTS tab_identity;CREATE TABLE tab_identity(
	id INT PRIMARY KEY AUTO_INCREMENT, #设置自动自增
	NAME VARCHAR(20));INSERT INTO tab_identity VALUE(NULL,'花花');INSERT INTO tab_identity(NAME) VALUE('Hudie');SELECT * FROM tab_identity;SHOW VARIABLES LIKE '%auto_increment%';SET auto_increment_increment=3;#设置步长为3# 起始值可以通过改变第一条记录的值来更改TRUNCATE TABLE tab_identity;【修改表时设置标识列】CREATE TABLE tab_identity(
	id INT, #设置自动自增
	NAME VARCHAR(20));# 设置主键和标识列ALTER TABLE tab_identity MODIFY COLUMN id INT PRIMARY KEY AUTO_INCREMENT;修改表时删除标识列【】ALTER TABLE tab_identity MODIFY COLUMN id INT;

五、级联删除与置空

级联删除:
ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY(majorid) REFERENCES major(id) ON DELETE CASCADE;
级联置空:
ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY(majorid) REFERENCES major(id) ON DELETE SET NULL;

【演示级联删除、级联置空】DROP TABLE major,stuinfoCREATE TABLE IF NOT EXISTS major(
	id INT PRIMARY KEY,
	majorName VARCHAR(20));INSERT INTO majorVALUES(1,'Java'),(2,'python'),(3,'Go');CREATE TABLE IF NOT EXISTS stuinfo(
	id INT,
	stuname VARCHAR(20),
	gender CHAR(1),
	seat INT,
	age INT,
	majorid INT);INSERT INTO stuinfoSELECT 1,'join1','女',NULL,NULL,1 UNION ALLSELECT 2,'join2','女',NULL,NULL,1 UNION ALLSELECT 3,'join3','女',NULL,NULL,2 UNION ALLSELECT 4,'join4','女',NULL,NULL,2 UNION ALLSELECT 5,'join5','女',NULL,NULL,1 UNION ALLSELECT 6,'join6','女',NULL,NULL,3 UNION ALLSELECT 7,'join7','女',NULL,NULL,3 UNION ALLSELECT 8,'join8','女',NULL,NULL,1);SELECT * FROM major;SELECT * FROM stuinfo;# 传统方式添加外键ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY(majorid) REFERENCES major(id);# 删除major表的3号专业# 方式1:级联删除#   先删除外键ALTER TABLE stuinfo DROP FOREIGN KEY fk_stu_major;#   添加外键时添加级联删除ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY(majorid) REFERENCES major(id) ON DELETE CASCADE;DELETE FROM major WHERE id =3;# 方式2:级联置空#   先删除外键ALTER TABLE stuinfo DROP FOREIGN KEY fk_stu_major;#   添加外键时添加级联置空ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY(majorid) REFERENCES major(id) ON DELETE SET NULL;DELETE FROM major WHERE id =2;

以上是“MySQL中DDL数据定义语句有哪些”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网数据库频道!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL中DDL数据定义语句有哪些

本文链接: https://www.lsjlt.com/news/55078.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL中DDL数据定义语句有哪些
    小编给大家分享一下MySQL中DDL数据定义语句有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、DDL数据定义语句库的管...
    99+
    2022-10-18
  • MySQL数据定义语言DDL的基础语句
    MySQL DDL 语句 什么是DDL,DML。 DDL 是数据定义语言,就是对数据库,表层面的操作,如 CREATE,ALTER,DROP。DML 是数据操作语言,也就是对表中数据的增删改查,如 SELECT,UP...
    99+
    2022-05-26
    数据定义语言DDL MySQL DDL
  • Hive数据定义语言DDL有哪些
    这篇文章给大家分享的是有关Hive数据定义语言DDL有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、数据库相关操作(DATABASE)    1.1  创建数据库(creat...
    99+
    2023-06-03
  • MySQL 数据定义语言(DDL)
    SQL 包含以下 4 部分: 1 数据定义语言(DDL):DROP、CREATE、ALTER 等语句。 2 数据操作语言(DML):INSERT(插入)、UPDATE(修改)、DELETE(删除)语句...
    99+
    2017-10-01
    MySQL 数据定义语言(DDL)
  • MySQL之数据定义语言(DDL)
    写在前面 本文中 [ 内容 ] 代表啊可选项,即可写可不写。 SQL语言的基本功能介绍 SQL是一种结构化查询语言,主要有如下几个功能: 数据定义语言(DDL):全称Data Definition Language 数据操纵语言(...
    99+
    2017-12-13
    MySQL之数据定义语言(DDL)
  • MySQL基础教程14 —— SQL语法之数据定义语句DDL
    1. ALTER DATABASE语法 ALTER {DATABASE | SCHEMA} [db_name] alter_specification [, alter_specification] ... ...
    99+
    2022-05-17
    DDL MySQL SQL 数据库
  • SQL语句中的DDL类型的数据库定义语言操作
    目录SQL语句之DDL类型的数据库定义语言1.DDL类型的SQL语句基本概述2.DDL类型的SQL语句之数据库层面的操作2.1.创建一个数据库2.2.查看mysql中有哪些数据库2.3.进入某个数据库2.4.查看当前处于...
    99+
    2022-08-09
    SQL DDL数据库定义语言 SQL数据库定义语言
  • MySQL总结(三)DDL数据定义语言-详解
    每行语句需要选中后再执行,可以选中后按F9快捷键执行 1.1.2 具体操作 -- 直接创建数据库db1; create database db1; -- 判断数据库是否存在,如果不存在则创建数据库db2; create database...
    99+
    2021-10-12
    MySQL总结(三)DDL数据定义语言-详解
  • MySQL数据库之数据表操作DDL数据定义语言
    目录一、创建数据表二、查询数据表三、 删除数据表四、修改数据表以及字段一、创建数据表 数据表:一个二维的表格,一个表格是由多列组成,表格中的每一类称之为表格的字段 以上述学生信息表格为例在mysql数据库中创建一张表格...
    99+
    2022-08-18
    MySQL数据表操作 MySQL DDL数据定义语言
  • MySQL教程数据定义语言DDL示例详解
    目录1.SQL语言的基本功能介绍2.数据定义语言的用途3.数据库的创建和销毁4.数据库表的操作(所有演示都以student表为例)1)创建表2)修改表3)销毁表如果你是刚刚学习MyS...
    99+
    2022-11-12
  • MySQL中DML数据操作语句有哪些
    小编给大家分享一下MySQL中DML数据操作语句有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!文章目录一、插入insert...
    99+
    2022-10-18
  • Mysql数据库维护语句有哪些
    本篇内容主要讲解“Mysql数据库维护语句有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Mysql数据库维护语句有哪些”吧! 1.修改表名  Sql代码 ...
    99+
    2022-10-18
  • 有哪些mysql数据库查询语句
    mysql数据库查询语句有:1、SELECT,从一个或多个表中检索数据;2、INSERT INTO,将新行插入到表中;3、UPDATE,更新表中现有的数据;4、DELETE FROM,从表中删除行;5、WHERE,在SELE...
    99+
    2023-08-14
  • 数据库基础中的mysql语句有哪些
    数据库基础中的mysql语句有哪些,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。  数据库与数据库软件:  数据库是数据容器,可以理解为文...
    99+
    2022-10-18
  • MySQL数据库中DDL语句的介绍和使用
    这篇文章的知识点包括:DDL语句的简介、DDL语句的操作以及DDL语句的使用注意事项,阅读完整文相信大家对MySQL数据库中DDL语句有了一定的认识。1.Online DDL简介在MySQL的早期版本中,D...
    99+
    2022-10-18
  • MySQL中有哪些declare语句
    这期内容当中小编将会给大家带来有关MySQL中有哪些declare语句,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。  MySQLdeclare语句用法有哪些  (1)E...
    99+
    2022-10-18
  • MySQL中sql语句有哪些
    小编给大家分享一下MySQL中sql语句有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!以下两个表格做讲解SELECTSELECT &quo...
    99+
    2023-06-29
  • Mysql数据库中有哪些常用的sql语句
    Mysql数据库中有哪些常用的sql语句?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。SQL语句进阶1.查询字段:————查询所有字段 sel...
    99+
    2022-10-18
  • mysql的查询否定语句有哪些
    目录一、什么是mysql查询否定语句?1. NOT操作符:用于将条件取反。2.<>操作符:表示不等于。3. !=操作符:同样表示不等于。4. NOT IN操作符:用于排除某个范围内的值。5. NOT LIKE...
    99+
    2023-10-07
    mysql 否定语句
  • MySQL数据表使用的SQL语句有哪些
    这篇文章主要讲解了“MySQL数据表使用的SQL语句有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL数据表使用的SQL语句有哪些”吧!EXPLAIN 语句分析SQL索引使用,关...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作