简介

DDL:数据定义语言,库和表的管理

库的管理:

  1. 创建
  2. 修改
  3. 删除

表的管理:

  1. 创建
  2. 修改
  3. 删除

命令:

  1. 创建:create
  2. 修改:alter
  3. 删除:drop

库的管理

创建

语法

普通:create datebase 库名

提高容错性:create datebase if not exists 库名

修改(一旦创建库,一般不修改)

语法

重命名:rename database 库名 to 新库名; (已经废弃)

修改字符集:alter database 库名 character set 字符集;

删除

语法

删除库:

  1. drop database 库名;(不安全)
  2. drop database if exists 库名;(安全)

表的管理

创建

语法

create table is not exists 表名(

列名 列的数据类型【(类型长度) 约束】,

列名 列的数据类型【(类型长度) 约束】,

......

列名 列的数据类型【(类型长度) 约束】

);

修改

修改列名

alter table 表名 change column 旧列名 新列名 数据类型;

列的类型或约束

修改某一列的数据类型:

alter table 表名 modify column 列名 新数据类型;

添加列

alter table 表名 add column 新列名 数据类型;

alter table 表名 add column 新列名 数据类型 【first|after 字段名】; 调整字段顺序

删除列

alter table 表名 drop column 列名;

修改表名

alter table 表名 rename to 新表名;

删除

语法

drop table if exists 表名;

复制

仅复制表结构

语法

create table 新表 like 已存在的表;

复制表结构+数据

语法

create table 新表 select * from 旧表;

复制表结构+部分数据

语法

create table 新表 select * from 旧表 where 筛选条件;

常见约束

含义

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

分类

六大约束

  • not null(该字段不能为空约束)
  • default(默认,用于保证该字段有默认值)
  • primary key(主键,用户保证该字段值具有唯一性,非空字段)
  • unique(唯一,用于保证该字段的值具有唯一性,可为空)
  • check(检查约束,【Mysql不支持,语法不报错,但无效果】)
  • poreign key(外键约束,用于限制两个表的关系,该字段值必须来自主表关联字段的值,在从表添加外键约束,用于引用主表中某列的值)

添加分类

  • 列级分类

    • 六大约束语法上都支持,但外键约束没效果
  • 表级分类
    • 除了非空约束(not null)和默认约束(default),其它都支持

创建表时添加约束

添加列级约束

语法:

直接在字段名和类型后面追加 约束类型 即可。

支持的约束:默认(default)、非空(not null)、主键(primary key)、唯一(unique)

示例:
create database students;	# 创建数据库
use students; # 进入数据库
# 学生表
create table stu_info(
id int(11) primary key, # 主键约束
stu_name varchar(20) not null, # 非空约束
sex char(1) check(sex ='男' or sex='女'), # 检查约束,Mysql不生效,仅作演示
seat int(11) unique, # 唯一约束
age int(3) default 18, # 默认约束,默认18岁
# major_id int(11) foreign key references major(id) # 外键约束
major_id int(11) references major(id) # 外键约束
);
# 专业表
create table major(
id int(11) primary key, # 主键约束
major_name varchar(50)
);

查看 学生表 信息:



查看 学生表 所有索引:



可以看到,外键约束并没有起作用。

添加表级约束

语法:
  • 在各个字段最下面
  • constraint 约束名 约束类型(字段名)
  • constraint关键字就是为添加的约束起个别名不写也行,
    • 注意:主键约束别名为primary,改了也不生效
示例:
create database students;	# 创建数据库
use students; # 进入数据库
# 学生表
create table stu_info(
id int(11) ,
stu_name varchar(20),
sex char(1) ,
seat int(11),
age int(3),
major_id int(11),
constraint pk primary key(id), #主键
constraint uq unique(seat), #唯一
constraint ck check(sex='男' or sex='女'), #检查约束
constraint fk_major foreign key(major_id) references major(id) #外键
);
# 专业表
create table major(
id int(11) primary key, # 主键约束
major_name varchar(50)
);

查看 学生表 信息:



查看 学生表 所有索引:



可以看到,表级约束中外键约束起到了作用。

列、表级约束一起写

语法:
create database students;	# 创建数据库
use students; # 进入数据库
# 学生表
create table stu_info(
id int(11) primary key, # 主键约束
stu_name varchar(20) not null, # 非空约束
sex char(1) check(sex ='男' or sex='女'), # 检查约束,Mysql不生效,仅作演示
seat int(11) unique, # 唯一约束
age int(3) default 18, # 默认约束,默认18岁
major_id int(11),
constraint fk_major foreign key(major_id) references major(id) #外键
);
# 专业表
create table major(
id int(11) primary key, # 主键约束
major_name varchar(50)
);

主键约束和唯一约束对比

保证唯一性 是否允许为空 表中是否可有多个 是否允许组合
主键约束 × 主键只能有一个;但是可创建多个列联合主键 两个列组合成一个主键:允许
唯一约束 可以有多个 两个列组合成一个唯一:允许
多个列联合主键示例
create table stu_info(
id int(11) ,
stu_name varchar(20) not null, # 非空约束
sex char(1) check(sex ='男' or sex='女'), # 检查约束,Mysql不生效,仅作演示
seat int(11) unique, # 唯一约束
age int(3) default 18, # 默认约束 默认18岁
primary key(`id`,`stu_name`) # id和stu_name组合成主键
);
# 成功添加:
truncate table stu_info;
insert into stu_info value(1, '张三', '男', 12, 18);
insert into stu_info value(2, '张三', '男', 13, 19);
# 成功添加:
truncate table stu_info;
insert into stu_info value(1, '张三', '男', 12, 18);
insert into stu_info value(1, '李四', '男', 13, 19);
# 失败添加:
truncate table stu_info;
insert into stu_info value(1, '张三', '男', 12, 18);
insert into stu_info value(1, '张三', '男', 13, 19);

外键

特点
  • 在从表上设置外键关系
  • 从表的外键列的类型和主表的关联列的类型要求一致或兼容
  • 主表中关联列必须是一个key(一般是主键、唯一键)
  • 插入数据要先插入主表再插入从表
  • 删除数据先删除从表再删除主表

修改表时添加约束

示例
# 修改非空约束
alter table 表 modify column字段 varchar(20) not null;
# 默认约束,默认值:'demo'
alter table 表 modify column字段 varchar(20) default 'demo';
# 添加主键
alter table 表 modify column 字段 int(11) primary key;
alter table 表 add primary key(字段) ;
# 添加唯一键
①列级约束
alter table 表 modify column 字段 int(11) unique;
②表级约束
alter table 表 add unique(字段);
# 添加外键
alter table 表 add foreign key(字段) references 【外键的作用】;

修改表时删除约束

示例
 # 删除非空约束
alter table 表 modify column字段 varchar(20) null;
# 删除主键
alter table 表 drop primary key;
# 删除唯一约束
alter table 表 drop index;

标识列(自增长列)

含义

可以不用手动插入值,系统提供默认序列值

特点

  • 标识列必须和主键搭配吗?不一定,但要求必须是一个key
  • 一个表可有多个标识列吗?至多一个
  • 标识列类型只能是数值型,如 int、float、double
举例
create table demo(
id int primary key auto_increment, # id为主键并设为自增
name varchar(10)
)
# 插入五条数据
insert into demo values(null, 'AAA'),(null, 'BBB'),(null, 'CCC'),(null, 'DDD');
# 查看
select * from demo;
+----+------+
| id | name |
+----+------+
| 1 | AAA |
| 2 | BBB |
| 3 | CCC |
| 4 | DDD |
+----+------+

五、DDL语言的更多相关文章

  1. Android For JNI(五)——C语言多级指针,结构体,联合体,枚举,自定义类型

    Android For JNI(五)--C语言多级指针,结构体,联合体,枚举,自定义类型 我们的C已经渐渐的步入正轨了,基础过去之后,就是我们的NDK和JNI实战了 一.多级指针 指针的概念我们在前面 ...

  2. 【转】ORACLE SQL基础—DDL语言 礼记八目 2017-12-23 21:26:21

    原文地址:https://www.toutiao.com/i6502733303550837261/ SQL语言分为:DDL数据定义语言,DML数据操纵语言,DCL是数据库控制语言,TC事务控制语言 ...

  3. MySQL笔记总结-DDL语言

    DDL语言 数据类型 一.数值型 1.整型 tinyint.smallint.mediumint.int/integer.bigint 1 2 3 4 8 特点: ①都可以设置无符号和有符号,默认有符 ...

  4. 手把手和你一起实现一个Web框架实战——EzWeb框架(五)[Go语言笔记]Go项目实战

    手把手和你一起实现一个Web框架实战--EzWeb框架(五)[Go语言笔记]Go项目实战 代码仓库: github gitee 中文注释,非常详尽,可以配合食用 本篇代码,请选择demo5 中间件实现 ...

  5. DDL 语言

    数据库模式定义语言并非程序设计语言,DDL数据库模式定义语言是SQL语言(结构化查询语言)的组成部分. SQL语言包括四种主要程序设计语言类别的语句:数据定义语言(DDL),数据操作语言(DML),数 ...

  6. (五)c语言条件编译#ifdef与#if defined

    c语言条件编译#ifdef与#if defined defined NAME是用来判断NAME是否被定义了(被用define定义了). #ifdef NAME == #if defined(NAME) ...

  7. Oracle-04:DDL语言数据表的操作

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- DDL操作: --创建学生表 create table student( sno number(4) not  ...

  8. MySql DDL语言(数据库和数据表的管理)

    数据定义语言,负责数据库和数据表的管理 ⒈数据库的管理 1.创建数据库 create database if not exists DatabaseName; #if not exists可以省略 2 ...

  9. 快用Visual Studio(五)- 语言特性

    HTML 自带Emment $ SHIFT + OPTION + F:格式化代码 其他语言特性提示 CSS & LESS hover属性,提示样式对象标签 $ CMD + SHIFT + O: ...

随机推荐

  1. [!] The version of CocoaPods used to generate the lockfile (1.4.0.beta.1) is higher than the version of the current executable (1.3.0.beta.1). Incompatibility issues may arise.

    今天在看一个开源Demo代码的时候,需要执行pod install命令,直接报错如下: 解决方法: 执行:pod update 命令更新资源库即可.

  2. DIV+CSS 让同一行的图片和文字对齐【转藏】

    DIV+CSS 让同一行的图片和文字对齐 DIV+CSS 让同一行的图片和文字对齐 在div+css布局中,如果一行(或一个DIV)内容中有图片和文字的话,图片和文字往往会一个在上一个在下,这是一个新 ...

  3. Spring Aop(七)——基于XML配置的Spring Aop

    转发:https://www.iteye.com/blog/elim-2396043 7 基于XML配置的Spring AOP 基于XML配置的Spring AOP需要引入AOP配置的Schema,然 ...

  4. 华为Liteos移植到stm32F03ZE

    华为Liteos和物联网设备侧sdk移植到stm32F03ZE霸道板子上 推荐官方教程:https://liteos.github.io/ 啥是LIteos "开源免费"的实时操作 ...

  5. Flutter磨砂玻璃效果制作

    Flutter的Fliter Widget 也是非常强大的,它可以制作出你想要的神奇滤镜效果.下面制作一个毛玻璃效果. 这个和以前的写法都一样,所以就直接贴代码了. import 'package:f ...

  6. Opengl_入门学习分享和记录_03_渲染管线(三)借助顶点数组对象VAO提高绑定属性效率

    目前我们已经知道了,如果想要顶点着色器解释理解我们的输入数据,就必须要按照以下繁琐的步骤:第一步:将输入的数据复制一份到缓冲区,供OpenGL使用.而这块新出现的区域由VBO管理和表示.(若有多个输入 ...

  7. centos(linux)-Tomcat配置

    1.在apache官网下载tomcat 2.解压缩:tar -zxvf apache-tomcat-7.0.73.tar.gz 注:是否在前面加上sudo根据自己的具体情况决定 3.配置环境变量 (1 ...

  8. Docker三

    将本地镜像发布到阿里云 有时候需要共享镜像或者习惯使用自己定义的镜像,可以注册私有仓库,国内推荐使用阿里云 步骤: 1.登录阿里云容器镜像服务:https://cr.console.aliyun.co ...

  9. Want To Become A Web Design Expert? Read This Piece

    Want To Become A Web Design Expert? Read This Piece It can be very expensive to hire a web design fi ...

  10. VS.vs15

    1.20190615 安装的 vs2015(cn_visual_studio_enterprise_2015_with_update_3_x86_x64_dvd_8923298.iso) 的目录为: ...