《SQL高级应用和数据仓库基础(MySQL版)》学习笔记 ·003【表的约束、表的CRUD操作(DDL语句)】
文章目录
- 一、表的约束
- 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语句)】相关推荐
- MySQL 8——学习笔记03(插入、更新、删除 数据 [DML语句]、查询数据 [DQL语句])
MySQL 8--学习笔记03(插入.更新.删除 数据 [DML语句]) 一.插入数据 1.1 插入所有字段.插入部分字段 1.2 同时插入多条记录(批量插入) 1.3 将查询结果插入到表中 二.更新 ...
- 阿里云原生数据仓库AnalyticDB MySQL版学习
阿里云原生数据仓库AnalyticDB MySQL版是融合数据库.大数据技术于一体的阿里云原生企业级数据仓库服务.AnalyticDB MySQL版支持高吞吐的数据实时增删改.低延时的实时分析和复杂E ...
- 《SQL高级应用和数据仓库基础(MySQL版)》学习笔记 ·001【数据库基本概念、MySQL安装与介绍】
文章目录 一.数据库基本概念 1.DB与DBMS 2.数据库系统的构成 3.数据管理发展过程 4.数据库 5.关系型数据库 二.MySQL安装与卸载 三.与MySQL相关的常用命令 四.MySQL相关 ...
- 《SQL高级应用和数据仓库基础(MySQL版)》作业 ·006
文章目录 问题列表 参考解答 前提补充 注意点整理 分解代码 整体代码 问题列表 1.使用如下语句,建立以下表 create table copy_emp (empno int(4),ename va ...
- 《SQL高级应用和数据仓库基础(MySQL版)》学习笔记 ·006【事务】
文章目录 一.事务 1.事务介绍 2.事务组成 3.事务结束 4.MySQL事务处理 5.保存点与回档 6.事务隔离级别 7.脏读.不可重复读.幻读 一.事务 1.事务介绍 事务,也称工作单元,是由一 ...
- 《SQL高级应用和数据仓库基础(MySQL版)》学习笔记 ·005【表的CRUD操作(DML语句)】
文章目录 一.表的CRUD操作(DML语句) 1.insert语句 2.update语句 3.delete语句 二.其他注意点 1.MySQL查询区分大小写的方式 2.truncate语句与delet ...
- 《SQL高级应用和数据仓库基础(MySQL版)》作业 ·005
问题列表 1.使用如下语句,创建学生表student和班级表class create table student( -- 学生表xh char(4), -- 学号xm varchar(10), -- ...
- 《SQL高级应用和数据仓库基础(MySQL版)》作业 ·004
问题列表 1.创建表date_test,包含列d,类型为date型.试向date_test表中插入两条记录,一条当前系统日期记录,一条记录为"1998-08-18".2.创建与de ...
- 《SQL高级应用和数据仓库基础(MySQL版)》学习笔记 ·002【SQL介绍、数据库的CRUD操作(DDL语句)】
文章目录 一.SQL 1.介绍 2.格式 3.分类 (1).DDL(数据定义语句) (2).DML(数据操作语句) (3).DQL(数据查询语句) (4).DCL(数据控制语句) (5).TPL(事务 ...
最新文章
- 实战KVM|kvm安装|创建linux|控制台|克隆
- Linux下安装mysql(2) 及常见问题解决(CentOS)
- 【嵌入式开发】ARM 异常向量表 ( 异常概念 | 异常处理流程 | 异常向量 | 汇编代码 )
- C语言 —— sprintf()函数
- 数据中心水冷系统备品备件管理新思路
- Python学习week7-文件路径操作
- WindowsXP正版验证方法
- JDK源码(15)-Class
- 集合框架之Connection(马士兵教育视频教程总结笔记)
- 安卓移动端appium环境搭建流程
- JAVA中计算五子棋平局的算法_五子棋计算思路
- 学ps还是html,photoshop哪个版本好用?初学PS用哪个版本好?
- 自定义通知图标音量电池没有的解决方法
- 基于BERT的新闻文本分类
- Java 的守护线程是什么情况?
- vue3+ts 项目空格和回车代码出现红色波浪线
- 一个简单的猜数字游戏(附带关机惩罚)
- go-micro 安装
- JavaScript 设计模式之发布-订阅模式(下)
- 奥巴马胜选演说•文言版
热门文章
- 数据/方法论固然重要,但人为分析更有价值!
- hive 查询是否包含字符串_oracle判断一个字符串中是否包含另外一个字符串
- window难以实现的linux,工欲善其事必先利其器--几步实现window与linux之间的文件共享...
- 当前操作系统缺少黑体等字体_2020世界互联网大会:360视觉、360守望领域、360城市运营操作系统齐亮相...
- 让电脑代码满屏飞_程序员想让你的电脑死机,需要多久?
- python保留sqrt_python:quot;因式分解quot;引出的知识盲点
- 1-1 软件构造过程中的多维视图
- 数据结构实验 4.括号画家
- placeholder和assign速度对比
- javascript中的复制