MySQL基础——DDL语言学习\数据库的建立\MySQL数据类型\MySQL常见约束\表的增删改
接上篇文章 MySQL基础——数据库和SQL概述\MySQL基本使用\DQL语言学习
DDL语言学习
- Data Definition Language 数据定义语言
- 主要用于数据库和数据表的管理和操作
1. 创建数据库
CREATE DATABASE 库名;
如果所创建的库已存在,再次执行会报错, 可以使用如下方式
CREATE DATABASE IF NOT EXISTS 库名;
数据库创建好之后,可以使用SHOW CREATE DATABASE
语句查看数据库的定义
SHOW CREATE DATABASE studb
2. 删除数据库
DROP DATABASE 库名;
同理,如果重复删除会报错,可以使用如下方式
DROP DATABASE IF EXISTS 库名;
3. 创建表
CREATE TABLE [IF NOT EXISTS]表名 (字段名 字段类型 [字段约束],字段名 字段类型 [字段约束],...字段名 字段类型 [字段约束]
);
案例 1:创建stuinfo表,没有添加约束
CREATE TABLE stuinfo (stuid INT,stuname VARCHAR(20),stugender CHAR,email VARCHAR(20),borndate DATETIME
);# DESC stuinfo # 查看表的结构
所构建的数据库和表格信息如下
4. 数据类型
数据分类 | 类型名称 |
---|---|
整数 | INT、TINYINT、SMALLINT、MEDIUMINT、BIGINT |
浮点小数 | FLOAT、DOUBLE |
定点小数 | DECIMAL |
字符串 | CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM、SET |
日期/时间 | YEAR、TIME、DATE、DATETIME、TIMESTAMP |
其中不同数值类型(整数、浮点数)提供不同的取值范围,存储值范围越大,所需空间也越大。具体范围和存储不逐一介绍,这里只说明常见的几种数据类型。
整型
- 可以是INT(M),M表示指定显示的数值种数字的个数
浮点型
- 浮点类型和定点类型都可以使用(M, N)来表示,可省略。M 称为精度,表示总共的位数;N 称为标度,表示小数的位数。如
DOUBLE(5,2)
表示最多五位,其中必须有两位小数,最大为999.99。 - 对精度要求比较高的时候(如货币、科学数据等),使用
DECIMAL
的类型比较好。
字符型
CHAR(M)
:固定长度字符串类型,在定义时指定字符串列长,默认为 1。不足时,右侧填充空格。M范围为0-255。VARCHAR(M)
:是长度可变的字符串,M表示最大列长度,M范围为0-65535。
TEXT
字符串类型,表示存储较长的文本,如文章内容、评论等。
日期/时间类型
二进制型
5. 常见约束
用于限制表中字段的数据,从而进一步保证数据表的准确可靠。具体约束类型如下表:
约束类型 | 关键字 | 作用 |
---|---|---|
主键约束 | PRIMARY KEY | 唯一标识一条记录,不可重复、非空 |
外键约束 | FOREIGN KEY | 用于两表数据之间建立连接 |
非空约束 | NOT NULL | 字段的值不能为空 |
默认约束 | DEFAULT | 指定某列的默认值 |
唯一性约束 | UNIQUE | 要求该列值唯一(空值也唯一) |
5.1 主键约束
主键又称主码,是表中一列或多列的组合。主键约束(Primary Key Constraint)要求主键列的数据唯一,并且不允许为空。主键能够唯一地标识表中的记录,可以结合外键来定义不同数据表之间的关系。
- 主键分为两种:单字段主键和多字段联合主键
1、单字段主键
方式一:在定义列的同时指定主键
- 语法:
字段名 数据类型 PRIMARY KEY [默认值]
- 案例:
CREATE TABLE stuinfo (stuid INT PRIMARY KEY, # 指定主键约束stuname VARCHAR(20),stugender CHAR,email VARCHAR(20),age INT
);
方式二:在定义完所有列之后指定主键
- 语法:
[CONSTRAINT <约束名>] PRIMARY KEY [字段名]
- 案例:
CREATE TABLE stuinfo (stuid INT,stuname VARCHAR(20),stugender CHAR,email VARCHAR(20),age INT,PRIMARY KEY (stuid) # 指定主键约束
);
效果:
2、多字段联合主键
- 语法:
[CONSTRAINT <约束名>] PRIMARY KEY [字段名1, 字段名2, ... ]
- 案例:
CREATE TABLE stuinfo (stuid INT,stuname VARCHAR(20),stugender CHAR,email VARCHAR(20),age INT,PRIMARY KEY (stuid, stuname)
);
效果:
5.2 外键约束
外键用于在两个表的数据之间建立连接,主要作用是保证数据引用的完整性,定义外键以后,不允许删除其在另一个表中具有关联关系的行,进而保证数据的完整性。
- 语法:
[CONSTRAINT <外键名>] FOREIGN KEY(外键字段) REFERENCES 主表 (主键字段)
两个概念
- 主表:对于两个具有关联关系的表而言,相关联字段中主键所在表为主表
- 从表:反之,外键所在表即为从表
案例
# 创建一个学生信息表
CREATE TABLE stuinfo (stuid INT PRIMARY KEY, stuname VARCHAR(20),stugender CHAR,email VARCHAR(20),age INT
);# 定义数据表 stumaj,让它的键 majorid 作为外键关联到 stuinfo 表的主键 stuid
CREATE TABLE stumaj (majorid INT(5),CONSTRAINT fk_stumaj_major FOREIGN KEY(majorid) REFERENCES stuinfo(stuid)
);
此案例为表 stumaj 添加了名称为 fk_stumaj_major 的外键约束。其中,外键为 majorid,其依赖于表 stuinfo 的主键 stuid。表 stuinfo 为主表,表 stumaj 为从表。
5.3 非空约束
非空约束指定字段的值不能为空。对于使用非空约束的字段,如果用户没有添加指定值,数据库系统会报错。
- 语法:
字段名 数据类型 NOT NULL
- 案例:
CREATE TABLE stuinfo (stuid INT PRIMARY KEY, stuname VARCHAR(20) NOT NULL,
);
5.4 唯一性约束
唯一性约束要求该列唯一,允许为空,但只能出现一个空值
- 语法:
字段名 数据类型 UNIQUE
- 案例:
CREATE TABLE stuinfo (email VARCHAR(20) UNIQUE,
);
5.5 默认约束
默认约束指定某列的默认值。比如男性同学较多,性别就可以默认为“男”。
- 语法:
字段名 数据类型 DEFAULT 默认值
- 案例:
CREATE TABLE stuinfo (stugender CHAR(1) DEFAULT '男',
);
6. 表的修改
新建book表,以下修改操作都针对此表
1、修改表名
- 语法:
ALTER TABLE 旧表名 RENAME [TO] 新表名
- 案例:将book表的表名修改为bookinfo
ALTER TABLE book RENAME bookinfo;
2、修改字段数据类型
- 语法:
ALTER TABLE 表名 MODIFY 字段名 数据类型
- 案例:
ALTER TABLE bookinfo MODIFY publishDate DATE
3、修改字段名
- 语法:
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型
- 案例:
ALTER TABLE bookinfo CHANGE id new_id BIGINT
4、添加字段
- 语法:
ALTER TABLE 表名 ADD 新字段名 数据类型 [约束条件]
- 案例:
ALTER TABLE bookinfo ADD page INT(4) UNIQUE
5、删除字段
- 语法:
ALTER TABLE 表名 DROP 字段名
- 案例:
ALTER TABLE bookinfo DROP page
7. 表的删除
- 语法:
DROP TABLE 表名
- 案例:
DROP TABLE bookinfo;
SHOW TABLES;
8. 表的复制
1、仅复制表的结构,不复制数据
CREATE TABLE 新表名 LIKE;
2、复制表的结构和数据
CREATE TABLE 新表名
SELECT * FROM 被复制的表名
3、仅复制部分数据
- 添加
WHERE
进行筛选即可
CREATE TABLE 新表名
SELECT * FROM 被复制的表名
WHERE 筛选条件
MySQL基础——DDL语言学习\数据库的建立\MySQL数据类型\MySQL常见约束\表的增删改相关推荐
- MySQL基础——DML语言学习\插入数据\删除数据\更新数据
接上篇文章 MySQL基础--DDL语言学习 DML语言学习 Data Manipulation Language 数据操纵语言 主要包括表记录的插入(INSERT).更新(UPDATE).删除(DE ...
- django不修改数据库创外键_Django——model(建表,增删改查,外键,多对多)
数据库操作 dbfirst:数据库优先 codefirst(ORM):代码优先,sqlalchemy和DJango都是用的这种 创建表 a.在app下的models.py中,创建类 from djan ...
- 使用数据库DDL语言创建数据库和基本表?(SQL Server 2014)
摘要:微信搜索[三桥君] 检索:<数据库系统原理>课程实验报告--实验一 建立数据库和基本表结构 说明:本实验是在SQL Server 2014版本数据库下操作完成的. 本实验通过举例创建 ...
- Hadoop之Hive数据库和表的增删改查(DDL)
Hive QL 是Hive支持的类似SQL的查询语言.Hive QL大体可以分为DDL.DML和UDF语言.DDL语言主要是创建数据库.创建表.数据库和表的删除:DML主要进行数据的添加.查询:UDF ...
- R操作MySQL数据库创建表、删除表、增删改查(CRUD)
R操作MySQL数据库创建表.删除表.增删改查(CRUD) 关系数据中的数据是按照一定范式去存储的.当我们需要非常高级和复杂的Sql查询就可以使用关系数据库的数据资产.不光java和python可以容 ...
- MySQL表的增删改查(基础)
MySQL表的增删改查(基础) 文章目录 MySQL表的增删改查(基础) 新增(`Create`) 查询(`Retrieve`) 更新(`Update`) 删除(`Delete`) 总结 注释:在SQ ...
- C语言学习--01 认识数据类型
C语言学习--01 认识数据类型 #include<stdio.h> int main(){//sizeof 计算类型或者变量所占空间的大小printf("%d\n", ...
- 数据库概论之MySQL表的增删改查1
MySQL表的增删改查 1.MySQL表的CRUD 2.插入数据 2.1 语法 2.2 注意事项 3.查找语句 3.1 全列查找 3.2 指定列查询 3.3 指定查询字段为表达式 3.4 查询字段指定 ...
- 【MySQL系列】 MySQL表的增删改查(进阶)
目录 ??前言 ??一.数据库约束 ???1.1 约束类型 ???1.2 null约束 ???1.3 unique约束 ???1.4 default约束 ???1.5 primary key 约束 ? ...
最新文章
- wxPython_Phoenix在线安装
- 如何把二进制数化成十进制数_二进制数按位进行逻辑运算
- 一篇男人必看的创业文章。(人活着不能没有钱,但是活着却不能只为了钱)...
- 【转】GPS从入门到放弃(一) --- GPS基础原理
- Python笔记-U2解锁手机九宫格
- 安卓应用安全指南 5.3.3 将内部账户添加到账户管理器 高级话题
- SSAS的MDX中的计算成员和命名集
- Kinetics-400数据集介绍
- python cad 二次开发bom_python处理BOM
- snmp++ linux 编译出错_成为linux高手的第二步
- 第十二周博客作业西北师范大学|李晓婷
- 轻量易用的网站bug与性能监控平台——灵雀应用监控平台
- 怎么创建自己的小程序?10分钟搞定
- Ubuntu安装cuckoo布谷鸟沙箱详细步骤
- 经典RPG游戏Crypto Sword Magic
- 写论文 参考文献引用 谷歌学术 规范格式 一键生成
- c语言 (3×3)矩阵转置
- 2021数据库课程设计培训笔记:【JAVA】部分
- vpp怎么写node
- 美国计算机游戏设计专业排名,美国游戏设计专业大学排名TOP5推荐!