文章目录

  • 一、表的约束
    • 1、约束类型
    • 2、添加约束
  • 二、表的CRUD操作(DDL语句)
    • 1、C(Create):创建
    • 2、R(Retrieve):查询
    • 3、U(Update):更新
    • 4、D(Delete):删除
  • 三、小练习

一、表的约束

1、约束类型

非空约束

不能为空值NULL

not null

主键约束

唯一非空,能唯一标识一行记录,一个表只能有一个主键

primary key

唯一约束

唯一,并且可以为空值NULL并且空值NULL可以不唯一

unique

外键约束

主表 → 引用列
外键表 → 外键列

被引用的列必须是主键(primary key)或者唯一键(unique

外键表的外键列 引用 主表的引用列

foreign key

检查约束

在MySQL中,check关键字是不起作用的。

如果想要限制某一列的取值范围,应该使用触发器来实现。

默认值约束

设置默认值
Tips:有些分类中也不把默认值当成约束

default

2、添加约束

添加约束的时机

  • 创建表的时候
  • 修改表的时候

添加约束的分类

  • 列级别:所有约束都可以在列级别(MySQL中,外键约束写在列级别是不起作用的)
  • 表级别:除了非空约束默认值约束以外,其他约束都支持写在表级别

二、表的CRUD操作(DDL语句)

1、C(Create):创建

总体格式

create table if not exists 表名(列名1 数据类型1 [default 值1] [列级别约束],列名2 数据类型1 [default 值2] [列级别约束],......列名n 数据类型n [default 值n] [列级别约束],[表级别约束],[表级别约束],......[表级别约束]
) engine=INNODB default charset=utf8;

创建举例(创建学生表)

create table if not exists student(sno int primary key,sname varchar(20) not null,gender enum('男', '女') default '男',interest set('游泳', '打球', '跑步'),age int default 18
);create table if not exists student(sno int,sname varchar(20) not null,gender enum('男', '女') default '男',interest set('游泳', '打球', '跑步'),age int default 18,constraint stu_sno_pk primary key(sno)
);

2、R(Retrieve):查询

查询当前数据库下所有表的信息

show tables;

查询创建表的结构、信息(字符集等)

show create table 表名;
desc 表名;

Tips:具体的查询数据的操作放到以后讲

3、U(Update):更新

修改表的名字

alter table 表名 rename to 新表名;
rename table 表名 to 新表名;

修改表的字符集

alter table 表名 character set 字符集名称;

给表添加一列

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

修改表中某一列的名字、数据类型

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

删除表中某一列

alter table 表名 drop [column] 列名;

给表添加一个约束

  • 添加非空约束

    alter table 表名 modify [column] 列名 列类型 not null;
    
  • 添加默认值
    alter table 表名 modify [column] 列名 列类型 default 默认值;
    
  • 添加主键约束(列级别)
    alter table 表名 modify [column] 列名 列类型 primary key;
    
  • 添加主键约束(表级别)
    alter table 表名 add [constraint 约束名] primary key(列名);
    
  • 添加唯一约束(列级别)
    alter table 表名 modify [column] 列名 列类型 unique;
    
  • 添加唯一约束(表级别)
    alter table 表名 add [constraint 约束名] unique(列名);
    
  • 添加外键约束
    alter table 表名 add [constraint 约束名] foreign key(外键列) references 主表名(引用列);
    

删除表中一个约束

  • 删除非空约束

    alter table 表名 modify [column] 列名 列类型 [null];
    

    (Tips:要注意之前有没有默认值之类的,否则直接写上面的语句会把默认值也一并删除)

  • 删除默认值

    alter table 表名 modify [column] 列名 列类型;
    

    (Tips:要注意之前有没有非空约束之类的,否则直接写上面的语句会把默认值也一并删除)

  • 删除主键约束 (上面的两种方式是删不掉主键的)

    alter table 表名 drop primary key;
    
  • 删除唯一约束

    alter table 表名 drop index(列名) 约束名;
    

    (Tips:如果没有具体约束名是无法删除的)

  • 删除外键约束

    alter table 表名 drop foreign key(列名) 约束名;
    

    (Tips:如果没有具体约束名是无法删除的)

4、D(Delete):删除

删除表

drop table 表名;
drop table 表名 if exists 表名;

三、小练习

假设现在有员工表(emp),需要作出以下修改

  • 在【员工表】中添加【性别】一列,列名为gender、类型为char(2)、默认值为'男'

    alter table emp add column gender char(2) default '男';
    
  • 修改【员工表】中【性别】一列,使其数据类型为char(4)
    alter table emp modify column gender char(4) default '男';
    
  • 修改【员工表】中【性别】一列,使其默认值为'女'
    alter table emp modify column gender char(4) default '女';
    
  • 删除【员工表】中【性别】一列
    alter table emp drop column gender;
    

《SQL高级应用和数据仓库基础(MySQL版)》学习笔记 ·003【表的约束、表的CRUD操作(DDL语句)】相关推荐

  1. MySQL 8——学习笔记03(插入、更新、删除 数据 [DML语句]、查询数据 [DQL语句])

    MySQL 8--学习笔记03(插入.更新.删除 数据 [DML语句]) 一.插入数据 1.1 插入所有字段.插入部分字段 1.2 同时插入多条记录(批量插入) 1.3 将查询结果插入到表中 二.更新 ...

  2. 阿里云原生数据仓库AnalyticDB MySQL版学习

    阿里云原生数据仓库AnalyticDB MySQL版是融合数据库.大数据技术于一体的阿里云原生企业级数据仓库服务.AnalyticDB MySQL版支持高吞吐的数据实时增删改.低延时的实时分析和复杂E ...

  3. 《SQL高级应用和数据仓库基础(MySQL版)》学习笔记 ·001【数据库基本概念、MySQL安装与介绍】

    文章目录 一.数据库基本概念 1.DB与DBMS 2.数据库系统的构成 3.数据管理发展过程 4.数据库 5.关系型数据库 二.MySQL安装与卸载 三.与MySQL相关的常用命令 四.MySQL相关 ...

  4. 《SQL高级应用和数据仓库基础(MySQL版)》作业 ·006

    文章目录 问题列表 参考解答 前提补充 注意点整理 分解代码 整体代码 问题列表 1.使用如下语句,建立以下表 create table copy_emp (empno int(4),ename va ...

  5. 《SQL高级应用和数据仓库基础(MySQL版)》学习笔记 ·006【事务】

    文章目录 一.事务 1.事务介绍 2.事务组成 3.事务结束 4.MySQL事务处理 5.保存点与回档 6.事务隔离级别 7.脏读.不可重复读.幻读 一.事务 1.事务介绍 事务,也称工作单元,是由一 ...

  6. 《SQL高级应用和数据仓库基础(MySQL版)》学习笔记 ·005【表的CRUD操作(DML语句)】

    文章目录 一.表的CRUD操作(DML语句) 1.insert语句 2.update语句 3.delete语句 二.其他注意点 1.MySQL查询区分大小写的方式 2.truncate语句与delet ...

  7. 《SQL高级应用和数据仓库基础(MySQL版)》作业 ·005

    问题列表 1.使用如下语句,创建学生表student和班级表class create table student( -- 学生表xh char(4), -- 学号xm varchar(10), -- ...

  8. 《SQL高级应用和数据仓库基础(MySQL版)》作业 ·004

    问题列表 1.创建表date_test,包含列d,类型为date型.试向date_test表中插入两条记录,一条当前系统日期记录,一条记录为"1998-08-18".2.创建与de ...

  9. 《SQL高级应用和数据仓库基础(MySQL版)》学习笔记 ·002【SQL介绍、数据库的CRUD操作(DDL语句)】

    文章目录 一.SQL 1.介绍 2.格式 3.分类 (1).DDL(数据定义语句) (2).DML(数据操作语句) (3).DQL(数据查询语句) (4).DCL(数据控制语句) (5).TPL(事务 ...

最新文章

  1. 实战KVM|kvm安装|创建linux|控制台|克隆
  2. Linux下安装mysql(2) 及常见问题解决(CentOS)
  3. 【嵌入式开发】ARM 异常向量表 ( 异常概念 | 异常处理流程 | 异常向量 | 汇编代码 )
  4. C语言 —— sprintf()函数
  5. 数据中心水冷系统备品备件管理新思路
  6. Python学习week7-文件路径操作
  7. WindowsXP正版验证方法
  8. JDK源码(15)-Class
  9. 集合框架之Connection(马士兵教育视频教程总结笔记)
  10. 安卓移动端appium环境搭建流程
  11. JAVA中计算五子棋平局的算法_五子棋计算思路
  12. 学ps还是html,photoshop哪个版本好用?初学PS用哪个版本好?
  13. 自定义通知图标音量电池没有的解决方法
  14. 基于BERT的新闻文本分类
  15. Java 的守护线程是什么情况?
  16. vue3+ts 项目空格和回车代码出现红色波浪线
  17. 一个简单的猜数字游戏(附带关机惩罚)
  18. go-micro 安装
  19. JavaScript 设计模式之发布-订阅模式(下)
  20. 奥巴马胜选演说•文言版

热门文章

  1. 数据/方法论固然重要,但人为分析更有价值!
  2. hive 查询是否包含字符串_oracle判断一个字符串中是否包含另外一个字符串
  3. window难以实现的linux,工欲善其事必先利其器--几步实现window与linux之间的文件共享...
  4. 当前操作系统缺少黑体等字体_2020世界互联网大会:360视觉、360守望领域、360城市运营操作系统齐亮相...
  5. 让电脑代码满屏飞_程序员想让你的电脑死机,需要多久?
  6. python保留sqrt_python:quot;因式分解quot;引出的知识盲点
  7. 1-1 软件构造过程中的多维视图
  8. 数据结构实验 4.括号画家
  9. placeholder和assign速度对比
  10. javascript中的复制