数据定义语言:库和表的管理。
库的管理:创建、修改、删除
表的管理:创建、修改、删除
创建:create
修改:alter
删除:drop
查看表的结构:DESC 表名;
查看库中的表:SHOW TABLES;

一、库的管理

1.1 库的创建

语法: create database [if not exists] 库名;

案例:创建库books
CREATE DATABASE IF NOT EXISTS books;

1.2 库的修改

更改库的字符集:ALTER DATABASE books CHARACTER SET gbk;

1.3 库的删除

DROP DATABASE IF EXISTS books;

二、表的管理

2.1 表的创建

语法:

create table 表名(列名 列的类型【(长度)约束】列名 列的类型【(长度)约束】……列名 列的类型【(长度)约束】

案例:创建表book

CREATE TABLE book(id INT,bName VARCHAR(20),price double,author_id INT,public_date DATETIME);

案例2:创建author表

CREATE TABLE author(id INT,au_name VARCHAR(20),nation VARCHAR(10));

2.2 表的修改

语法:
alter table 表名 add|drop|modify|change column 列名 【列类型 约束】,

  1. 修改列名
    ALTER TABLE book CHANGE COLUMN publishdate pubDate DATEtIME;
  2. 修改列的类型或约束
    ALTER TABLE book MODIFY COLUMN pubDate TIMESTAMP;
  3. 添加新列
    ALTER TABLE author ADD COLUMN annual DOUBLE;
  4. 删除列
    ALTER TABLE author DROP COLUMN annual;
  5. 修改表名
    ALTER TABLE author RENAME TO book_author;

2.3 表的删除

DROP TABLE book_author;

2.4 表的复制

  1. 仅仅复制表的结构
    CREATE TABLE author_copy LIKE author;
  2. 复制表的结构+数据
    create TABLE author_copy2 SELECT * FROM author;
  3. 只复制部分数据
    CREATE TABLE author_copy3 SELECT * FROM author WHERE nation='中国';
  4. 仅仅复制某些字段
    CREATE TABLE author_copy4 SELECT id,au_name FROM author WHERE 0;

三、常见的数据类型

数值型:
整型:
小数:
定点数
浮点数
字符型:
较短的文本:char、varchar
较长的文本:text、blob(较长的二进制数据)
日期型:

3.1 整型

分类:

特点:

  • 如果不设置无符号还是有符号,默认是有符号,如果项设置无符号,需要添加unsigned关键字。
  • 如果插入的数据值超出了整型的范围,会报out of range异常,并且插入临界值。
  • 整型后面设置长度不是代表数值的范围,只是代表显示结果的最大宽度。
  1. 如何设置整型的有无符号?
CREATE TABLE tab_int(t1 INTt2 INT UNSIGNED);

3.2 小数

分类:

  1. 浮点型
    float(M,D)
    double(M,D)
  2. 定点型
    dec(M,D) 或 decimal(M,D)

特点

  • M:整数部位+小数部位总长度,D:小数部位长度,如果超出范围,则插入临界值。
  • M和D都可以省略,但是如果是decimal,则M默认为10,D默认为0.
  • 定点型的精确度较高,如果要求插入数值的精度较高如货币运算等则考虑使用。

原则:
所选择的类型越简单越好,能保存数值的类型越小越好。

3.3 字符型

分类:
较短的文本:
char
varchar
较长的文本:
text
blob(较大的二进制)

M为最大字符数。

char VS varchar

写法 M的意思 特点 空间的耗费 效率
char char(M) 最大的字符数,可以省略,默认为1 固定长度的字符 比较耗费
varchar varchar(M) 最大的字符数,不可以省略 可变长度的字符 比较节省

char设置最大的字符数后,无论插入字符长度为多少,都占用最大字符数的容量。



3.4 日期和时间类型


分类:
date 只保存日期
time 只保存时间
year只保存年
datetime 保存日期+时间
timestamp 保存日期+时间

四、常见约束

语法:

CREATE TABLE 表名(字段名 字段类型 约束
);

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

分类:六大约束

  • NOT NULL:非空,用于保证该字段的值不能为空,比如姓名、学号等
  • DEFAULT:默认,用于保证该字段有默认值,比如性别等
  • PRIMARY KEY:主键,用于保证该字段的值具有唯一性,并且非空,比如,学号,员工编号
  • UNIQUE:唯一,用于保证该字段的值具有唯一性,可以为空,比如座位号
  • CHECK:检查约束【mysql中不支持】,比如年龄、性别都可以用检查约束做限制
  • FOREIGN KEY:外键,用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值,在从表添加外键约束,用于引用主表中某列的值。比如学生表的专业编号,员工表的部门编号,员工表的工种编号。

添加约束的时机:

  • 创建表时
  • 修改表时

约束添加分类

  • 列级约束:六大约束语法上都支持,但外键约束没有效果
  • 表级约束:除了非空、默认,其他都支持

4.1 创建表时添加约束

添加列级约束

CREATE TABLE stuinfo(id INT PRIMARY KEY,stuName varchar(20) NOT NULL,gender CHAR(1) CHECK(gender in ('nan','nv'),seat INT UNIQUE,age INT DEFAULT 18,majorId INT FOREIGN KEY REFERENCES major(id));

查看stuinfo中所有索引,包括主键、外键、唯一
SHOW INDEX FROM stuinfo;

添加表级约束

语法:
【constraint 约束名】 约束类型(字段名)

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(major_id) REFERENCES major(id));

通用的写法

CREATE TABLE IF NOT EXISTS stuinfo(id INT PRIMARY KEY,stuname VARCHAR(20) NOT NULL,gender CHAR(1),age INT DEFAULT 18,seat INT UNIQUE,majorid INT,CONSTRAINT fk_stuinfo_major FOREIGN KEY(major_id REFERENCES major(id));

主键和唯一的大对比

保证唯一性 是否允许为空 一张表中可以有几个 是否允许组合
主键 × 只能有一个 √,但不推荐
唯一 × 可以有多个 √,但不推荐

外键的特点

  1. 要求在从表设置外键关系
  2. 从表的外键列类型和主表的关联列要求一致或兼容,名称无要求
  3. 要求主表中的关联列必须时一个key(一般是主键或唯一键)
  4. 插入数据时,先插入主表,再插入从表;删除数据时,先删除从表,再删除主表

4.2 修改表时添加约束

语法:

  1. 添加的是列级约束:
    `ALTER TABLE 表名 MODIFY COLUMN 字段名 字段类型 新约束。
  2. 添加的是表级约束:
    ALTER TABLE 表名 ADD 【constraint 约束名】约束类型(字段名) 【外键的引用】;

  1. 添加非空约束
    ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHR(20) NOT NULL;

  2. 添加默认约束
    ALTER TABLE stuinfo MODIFY CONLUMN age INT DEFAULT 18;

  3. 添加主键
    列级约束
    ALTER TABLE stuinfo MODIFY COLUMN id INT PRIMARY KEY;
    表级约束
    ALTER TABLE stuinfo ADD PRIMARY KEY(id);

  4. 添加唯一
    列级约束
    ALTER TABLE stuinfo MODIFY COLUMN seat INT UNIQUE;
    表级约束
    ALTER TABLE stuinfo ADD UNIQUE(seat);

  5. 添加外键
    ALTER TABLE stuinfo ADD FOREIGN KEY (majorid) REFERENCE major(id);

4.3 修改表时删除约束

  1. 删除某个字段的非空约束
    ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20);

  2. 删除主键
    ALTER TABLE stuinfo DROP PRIMARY KEY;

  3. 删除唯一
    ALTER TABLE stuinfo DROP INDEX seat;

  4. 删除外键约束
    ALTER TABLE stuinfo DROP FOREIGN KEY fk_stuinfo_major;

五、标识列

含义:又称为自增长列,可以不用手动的插入值,系统提供默认的序列值。
特点:

  • 标识列必须是一个key(主键,唯一键,外键)
  • 一个表中只能有一个标识列。
  • 标识列的类型只能是数值型。
  • 标识列可以通过SET auto_increment_increment=3;设置步长,也可以通过手动插入值设置起始值。

一、创建表时设置标识列

CREATE TABLE tab_identity(id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(20)
);

设置当前数据库中所有表的自增长的步长。
SET auto_increment_increment=3;

二、修改表时设置标识列

ALTER TABLE tab_identity MODIFY COLUMN id INT PRIMARY KEY AUTO_INCREMENT;

三、修改表时删除标识列

ALTER TABLE tab_identity MODIFY COLUMN id INT PRIMARY KEY;

sql语言学习——数据定义语言相关推荐

  1. SQL语言之DDL语言学习-----数据定义语言学习

    该语言主要的作用是: 对库和表的管理. 创建:create 修改:alter 删除:drop 一.库的管理 创建.修改.删除 1.创建库 CREATE DATABASE books; 为了避免已存在报 ...

  2. SQL语言之数据定义语言(Oracle)

    数据定义语言(DDL) 一.创建表(create table) 例 如上图创建表: Create table dept(deptno number(2) , dname varchar2(14) , ...

  3. DDL语言(数据定义语言)

    文章目录 前言 一.库的管理 1.库的创建 2.库的修改 3.库的删除 二.表的管理 1.表的创建 2.表的修改 3.表的删除 4.表的复制 测试 前言 数据定义语言主要包括库和表的管理. 一.库的管 ...

  4. mysql中数据定义语言_SQL数据定义语言(DDL)

    数据库模式定义语言DDL(DataDefinition Language),是用于描述数据库中要存储的现实世界实体的语言.一个数据库模式包含该数据库中所有实体的描述定义.这些定义包括结构定义.操作方法 ...

  5. Oracle 数据定义语言,oracle 数据定义语言(DDL)语法

    DDL语言包括数据库对象的创建(create).删除(drop)和修改(alter)的操作 1.创建表语法 create table table_name( column_name datatype  ...

  6. 【数据库和SQL学习笔记】1.SQL语言的功能和特点,数据定义语言和应用,主键和外键

    本专栏是我对数据库系统和SQL语言的学习笔记分享~ 数据库系统软件:SQL Server 2019 Express(免费,初学者使用足够,足够部署小型项目) 操作系统:Windows 10 安装过程略 ...

  7. 【ClickHouse SQL 极简教程】ClickHouse SQL之数据定义语言 DDL

    1.1. ClickHouse SQL之数据定义语言 DDL  本节介绍 ClickHouse 中进行数据库.表结构的定义和管理. 1.1.1. 概述 在SQL中,数据定义语言( DDL ) 用来创建 ...

  8. SQL语言概述与SQL语言的数据定义

    文章目录 前言 一.SQL概述 1.SQL语言的产生和发展 2.SQL语言支持关系数据库的三级模式 (1)基本表 (2)存储文件 (3)视图 3.SQL语言的特点 (1)综合统一 (2)非过程语言 ( ...

  9. 【SQL学习笔记】之数据定义语言(DDL)

    SQL语言的学习可以简单地分为以下五个部分: 数据查询语言(DQL):select 数据操作语言(DML):insert.update.delete 数据定义语言(DDL):create.alter. ...

最新文章

  1. JMS(1)——基本实例
  2. 计算机科学入门指南游戏攻略,【基础攻略】从零开始新手入门指南
  3. 2018年最新的single-cell-RNA-seq analysis repositories
  4. 洛谷 P1414 又是毕业季II (多个数的最大公因数)
  5. statsmodels学习——使用多元回归拟合数据
  6. sqlserver 参数化查询 允许为null_关于SQL Server的insert执行的秘密(上)一个最简单的insert分析...
  7. hadoop: hbase1.0.1.1 伪分布安装
  8. pandas - pd.date_range-生成时间索引
  9. logistic人口模型python代码_人口模型(马尔萨斯--vs--logistic).ppt
  10. 【AI视野·今日NLP 自然语言处理论文速览 第三十三期】Thu, 21 Apr 2022
  11. 音视频传输协议之 RTMP
  12. 物联网组成,主要包含哪些基本要素,物联网市场需求的特征是什么?
  13. 从杭州崩溃小伙说起:我们被灌输的价值观,真的对吗?
  14. 专访郑博闻:13岁的iOS开发者和创业者
  15. python进行EXCEL表格自动填充
  16. Qt-------->第六天,Qt高级编程
  17. 旧 Mac、PC 别扔,变身 Chromebook 了解一下
  18. 基于多时间尺度滚动优化的多能源微网双层调度模型
  19. Java各类技能知识点学习链接大全:七、Linux命令
  20. 地图四色着图的C语言实现

热门文章

  1. 做vr需要什么技术? 常用的vr技术板块
  2. 结构体内容引用自非结构体数组对象axes(handles.axes1)
  3. 【OpenVINO】OpenVINO 2022.1 安装教程(Windows)
  4. 参数估计:对无偏性的理解
  5. 知识点 - 割点与割边
  6. 刷步数作弊成了朋友圈必备技能
  7. 单极性归零NRZ码、双极性非归零NRZ码、2ASK、2FSK、2PSK、2DPSK及MATLAB仿真
  8. 实用创意马赛克效果短视频转场过渡pr模板
  9. BBR 加速比收敛讲解python示例
  10. layui 数据表格的搜索分页功能的实现