接上篇文章 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常见约束\表的增删改相关推荐

  1. MySQL基础——DML语言学习\插入数据\删除数据\更新数据

    接上篇文章 MySQL基础--DDL语言学习 DML语言学习 Data Manipulation Language 数据操纵语言 主要包括表记录的插入(INSERT).更新(UPDATE).删除(DE ...

  2. django不修改数据库创外键_Django——model(建表,增删改查,外键,多对多)

    数据库操作 dbfirst:数据库优先 codefirst(ORM):代码优先,sqlalchemy和DJango都是用的这种 创建表 a.在app下的models.py中,创建类 from djan ...

  3. 使用数据库DDL语言创建数据库和基本表?(SQL Server 2014)

    摘要:微信搜索[三桥君] 检索:<数据库系统原理>课程实验报告--实验一 建立数据库和基本表结构 说明:本实验是在SQL Server 2014版本数据库下操作完成的. 本实验通过举例创建 ...

  4. Hadoop之Hive数据库和表的增删改查(DDL)

    Hive QL 是Hive支持的类似SQL的查询语言.Hive QL大体可以分为DDL.DML和UDF语言.DDL语言主要是创建数据库.创建表.数据库和表的删除:DML主要进行数据的添加.查询:UDF ...

  5. R操作MySQL数据库创建表、删除表、增删改查(CRUD)

    R操作MySQL数据库创建表.删除表.增删改查(CRUD) 关系数据中的数据是按照一定范式去存储的.当我们需要非常高级和复杂的Sql查询就可以使用关系数据库的数据资产.不光java和python可以容 ...

  6. MySQL表的增删改查(基础)

    MySQL表的增删改查(基础) 文章目录 MySQL表的增删改查(基础) 新增(`Create`) 查询(`Retrieve`) 更新(`Update`) 删除(`Delete`) 总结 注释:在SQ ...

  7. C语言学习--01 认识数据类型

    C语言学习--01 认识数据类型 #include<stdio.h> int main(){//sizeof 计算类型或者变量所占空间的大小printf("%d\n", ...

  8. 数据库概论之MySQL表的增删改查1

    MySQL表的增删改查 1.MySQL表的CRUD 2.插入数据 2.1 语法 2.2 注意事项 3.查找语句 3.1 全列查找 3.2 指定列查询 3.3 指定查询字段为表达式 3.4 查询字段指定 ...

  9. 【MySQL系列】 MySQL表的增删改查(进阶)

    目录 ??前言 ??一.数据库约束 ???1.1 约束类型 ???1.2 null约束 ???1.3 unique约束 ???1.4 default约束 ???1.5 primary key 约束 ? ...

最新文章

  1. wxPython_Phoenix在线安装
  2. 如何把二进制数化成十进制数_二进制数按位进行逻辑运算
  3. 一篇男人必看的创业文章。(人活着不能没有钱,但是活着却不能只为了钱)...
  4. 【转】GPS从入门到放弃(一) --- GPS基础原理
  5. Python笔记-U2解锁手机九宫格
  6. 安卓应用安全指南 5.3.3 将内部账户添加到账户管理器 高级话题
  7. SSAS的MDX中的计算成员和命名集
  8. Kinetics-400数据集介绍
  9. python cad 二次开发bom_python处理BOM
  10. snmp++ linux 编译出错_成为linux高手的第二步
  11. 第十二周博客作业西北师范大学|李晓婷
  12. 轻量易用的网站bug与性能监控平台——灵雀应用监控平台
  13. 怎么创建自己的小程序?10分钟搞定
  14. Ubuntu安装cuckoo布谷鸟沙箱详细步骤
  15. 经典RPG游戏Crypto Sword Magic
  16. 写论文 参考文献引用 谷歌学术 规范格式 一键生成
  17. c语言 (3×3)矩阵转置
  18. 2021数据库课程设计培训笔记:【JAVA】部分
  19. vpp怎么写node
  20. 美国计算机游戏设计专业排名,美国游戏设计专业大学排名TOP5推荐!

热门文章

  1. elasticsearch-5.6.12 单点安装包括 HEAD插件安装
  2. 关于在vSphere环境中,安装WindowsServer2008_R2_x64系统,分区格式为GPT,隐藏分区为200M方法心得
  3. js如何提高for循环的效率_让你瞬间提高工作效率的常用js函数汇总
  4. layer弹出层扩展自定义样式
  5. 3分钟融云Demo体验:IM即时通讯篇
  6. Java-keepalived
  7. 函数【Python】
  8. ReactiveCocoa详解
  9. c# 删除文件,清理删除文件
  10. IE8的 JS 引擎如此不堪(二) - 解决方案