mysql创建表时添加范式_MySql三大范式与数据库设计和表创建常用语句
【数据库设计的三大范式】
1.第一范式(1NF First Normal Fromate):数据表中的每一列(字段),必须是不可拆分的最小单元。也就是确保每一列的原子性。
例如: userInfo: ‘山东省烟台市 13181621008’
=> userAds:’山东省烟台市’
tel:’13181621008′
2.第二范式(2NF):满足1NF后,要求:表中所有的列,都必须功能依赖于主键,而不能有任何一列与主键没有关系。(一张表值描述一件事情)
3.第三范式(3NF):满足2NF后,要求:表中的每一列都要与主键直接相关,而不是间接相关。(表中的每一列,只能依赖于主键)
例如:订单表中,需要有客户相关信息,在分离出客户表之后。订单表中,只需要有一个用户ID
即可。而不能有其他的客户信息。因为,其他的用户信息是直接关联于用户ID。而不是关联于订单ID。
【第二范式与第三范式的本质区别】
在于有没有分出两张表,第二范式是说一张表中包含了多种不同实体的属性,那么必须要分成多张表。第三范式要求,已经分好了多张表的话,那么,一张表中只能有另一张表中的ID(主键),而不能有其他的信息(其他的信息,一律使用主键在另一种查询)。
*/
USE mydb;
— 创建表:
定义列:列名 数据类型 列定义关键字
常用的列定义关键字:
UNSIGNED:设置列为无符号列。只能设置类型为数字类型的列
AUTO_INCREMENT :设置自动增长列。 自动增长列必须是主键。
【主键】
1.主键的注意事项? ① 主键默认非空! ② 只有主键才能设置自动增长(主键不一定自动增长,自动增长必须是主键)
2.设置主键的方式? ① 在列定义时设置:id INT PRIMARY KEY
② 在列定义完成后设置: PRIMARY KEY(id)
UNIQUE:设置唯一性约束。该字段不能出现重复值。
NOT NULL:设置非空约束。该字段不能为空。
DEFAULT:设置默认值约束。hight DOUBLE(3,2) DEFAULT(1.2) height如果不输入默认1.2
FOREIGN KEY:设置外键约束。
【外键】
1、设置外键有哪些注意事项?
1、设置外键有哪些注意事项?
只有innoDB的数据库引擎支持外键。
修改my.ini文件设置default-storage-engine=INNODB
②外键与参照列的数据类型必须相同
③设置外键的字段必须要有索引。如果没有索引,设置外键时会自动生成一个索引
[数值型要求长度和无符号都相同,字符串要求类型相同,长度可以不同]
2、设置外键的语法?
[CONSTRAINT 外键名] FOREIGN KEY(外键字段)REFERENCES 参照表(参照字段)
[ON DELETE SET NULL ON UPDATE CASCADE] — 设置参照完整性
3、外键约束的参照操作。
参照操作:当对参照表的参照字段进行删除或更新时,外键表中的外键如何应对。
参照操作可选值:DESTRTCT 拒绝参照表删除或更新参照字段
NO ACTION 与 RESTRICT相同,但这个指令只在MySQL生效
CASCADE 删除或更新参照表的参照字段时,外键表的记录同步删除更新
SET NULL 删除或更新参照表的参照字段时,外键表的外键设为NULL
*/
CREATE TABLE IF NOT EXISTS tb1(
-- IF NOT EXISTS 可以省略,省略后面重复创建报错。如果不省略,则创建时表是否已存在,如果表存在则不再执行创建
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(255), -- name 是系统关键字,所以使用反引号``包裹
age SMALLINT UNIQUE,
hight DOUBLE(3,2) DEFAULT(1.2)
-- PRIMARY KEY(id)
);
DROP TABLE IF EXISTS CLASSES;
CREATE TABLE IF NOT EXISTS CLASSES(
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
CLASSNAME VARCHAR(255) NOT NULL
);
DROP TABLE IF EXISTS `USER`;
CREATE TABLE IF NOT EXISTS `USER`(
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
CLSID INT UNSIGNED NOT NULL,
`NAME` VARCHAR(255) NOT NULL,
CONSTRAINT user_fk_classes FOREIGN KEY (clsid) REFERENCES classes(id)
);
SHOW COLUMNS FROM CLASSES;
SHOW TABLES;
— 显示表结构
SHOW COLUMNS FROM tb1;
— 显示表的建表语句
SHOW CREATE TABLES TB1;
— 删除表
DROP TABLE IF EXISTS tb1;
— 修改表名 ALTER TABLE 旧表名 RENAME [TO] 新表名;
ALTER TABLE TB1 RENAME TB2;
— 同时修改多表名 RENAME TABLE TB3 TO TB1[,`USER` TO USER1 ……];
RENAME TABLE TB3 TO TB1,`USER` TO USER1;
— 修改字段 列
— ALTER TABLE 表名 CHANGE 旧列名 新列名 列定义 [FIRST | AFTER 某一列]
— FIRST 将这个字段调整为表格第一列 AFTER 某一列:将这个字段放到某一列后面
ALTER TABLE TB1 CHANGE `NAME` `USERNAME` VARCHAR(200) NOT NULL AFTER AGE;
— MODIFY 只修改定义,不能改名
ALTER TABLE TB1 MODIFY `USERNAME` VARCHAR(200) NOT NULL AFTER AGE;
— 删除表中某一列
ALTER TABLE TB1 DROP HEIGHT;
— 新增一列 必须部分:ALTER TABLE tb1 ADD HEIGHT DOUBLE(8,2)
ALTER TABLE tb1 ADD HEIGHT DOUBLE(8,2) DEFAULT 1.2 AFTER AGE;
— 新增多列 不能调整列的位置,只能插在最后。
ALTER TABLE TB1 ADD(
WEIGHT DOUBLE(3,2) UNSIGNED,
school VARCHAR(255)
)
— 增加主键约束
ALTER TABLE tb1 ADD PRIMARY KEY(id);
— 删除主键约束
ALTER TABLE tb1 DROP PRIMARY KEY;
— 新增唯一性约束
ALTER TABLE TB1 ADD UNIQUE KEY (USERNAME);
— 删除唯一性约束:由于创建唯一性约束会默认创建索引,所以删除时,需删除索引
ALTER TABLE TB1 DROP INDEX USERNAME;
— 设置默认值约束
ALTER TABLE TB1 ALTER AGE SET DEFAULT 20;
— 删除默认值约束
ALTER TABLE TB1 ALTER AGE DROP DEFAULT;
— 设置外键约束 必选部分:ALTER TABLE tb1 ADD FOREIGN KEY (CLSID) REFERENCES CLASSES(ID)
ALTER TABLE tb1 ADD FOREIGN KEY (CLSID) REFERENCES CLASSES(ID) ON DELETE SET NULL ON UPDATE CASCADE;
— 删除外键约束。由于创建外键时会默认
ALTER TABLE tb1 DROP FOREIGN KEY TB1_FK_CLASSES;
SHOW COLUMNS FROM TB1;
SHOW TABLES;
mysql创建表时添加范式_MySql三大范式与数据库设计和表创建常用语句相关推荐
- mysql查询动态表名的数据类型_Mysql中查询某个数据库中所有表的字段信息
前言 有时候,需要在数据库中查询一些字段的具体信息,而这些字段又存在于不同的表中,那么我们如何来查询呢? 在每一个数据库链接的information_schema数据库中,存在这样一张表--COLUM ...
- mysql 创建表时提示错误代码_MySQL创建表时遇到的错误
学习MySQL第一个程序就遇到了bug .创建表时需注意的事项加以总结: 1.先创建数据库: create database 数据库名:然后连接要用的数据库 use 数据库名:下面就可以执行建表语句 ...
- 使用MySQL数据库创建表时添加外键约束
/题目:创建表Book表,字段如下: bid整型,要求主键 bname学符型,要求设置唯一键,并非空 price浮点型,要求有默认值10 btypeId 类型编号,要求引用bookType表的id字段 ...
- mysql 表中添加数据类型_MySQL数据表添加字段(三种方式)
MySQL 数据表是由行和列构成的,通常把表的"列"称为字段(Field),把表的"行"称为记录(Record).随着业务的变化,可能需要在已有的表中添加新的字 ...
- 禁止windows系统创建快捷方式时添加文字“- 快捷方式”
转载自如何禁止windows系统创建快捷方式时添加文字"- 快捷方式",仅作学习交流使用 如何禁止windows系统创建快捷方式时添加文字"- 快捷方式" 20 ...
- mysql schema 保存数据_在MySQL中,所有触发器的定义都保存在information_schema数据库下的()表中。_学小易找答案...
[单选题]如何将英制 的零件转为公制的零件 ( ). [判断题]连续选择边线创建倒角时,不能单独修改某一边线的倒角大小 [判断题]创建筋特征时截面必须是闭和的 [填空题]Hibernate 的会话接口 ...
- 数据库设计模板 + Excel创建sql语句(VBA)
数据库设计模板 + Excel创建sql语句-VBA 1. 表格设计 2. 效果展示 3. VB代码 4. Excel测试文件下载 1. 表格设计 直接看图,3个页签 <建表语句>页签,把 ...
- mysql创建表时添加范式,MySql三大范式与数据库设计和表创建常用语句
[导读]第一范式1NF First Normal Fromate:数据表中的每一列字段,必须是不可拆分的最小单元.也就是确保每一列的原子性. [数据库设计的三大范式] 1.第一范式(1NF First ...
- mysql创建表时默认默认_mysql创建数据表时指定默认值教程
指定默认值 如果在插入行时没有给出值,MySQL允许指定此时使用的默认值.默认值用 CREATE TABLE 语句的列定义中的 DEFAULT 关键字指定. 请看下面的例子: 输入:create ta ...
最新文章
- 论论资排辈和有能者居之
- 项目日报模板_第一届全国技能大赛现场直击:混凝土建筑项目全场最“高”
- 2014电池测试软件,【技术】关于锂电池GB31241-2014洗涤测试要求
- 使用localhost访问远程tensorboard
- ExtJS2.0开发与实践笔记[4]——Ext中的动画处理
- MySQL Replicaction Error 一例
- GULP 案例 1 代码解释:声子色散曲线和态密度的计算
- SpringBoot-DDD领域驱动设计的概念
- 视频 码率控制类型和内涵
- Arcgis实例操作9--空间分布趋势图、分割多部分要素、导出矢量数据的文本文件
- java 线程的插队运行_java笔记–线程的插队行为
- mysql reads sql data_在其声明中使用DETERMINISTIC,NO SQL或READS SQL DATA并启用二进制日志记录...
- Android中MVC,MVP和MVVM的区别
- python from win32com import client 出现弹框 隐藏模块中出现编译错误
- ISO3834国际焊接认证简介
- 2015美国计算机研究生就业,2015年美国计算机专业研究生排名
- 【MATLAB教程案例26】图像特征点提取算法matlab仿真与分析——sift,surf,kaze,corner,BRISK等
- PyCharm配置解释器
- 利用LSTM进行空气指数预测
- Java--进制转换(一)
热门文章
- python中布尔类型是特殊的_Python中的特殊方法以及应用详解
- datax 持续数据同步_采用DataX实现多表增量数据同步
- python关于路径需使用的方法笔记
- android message 代码,Android Handler移除Message详解及实例代码
- alexeyab darknet 编译_【目标检测实战】Darknet—yolov3模型训练(VOC数据集)
- android官方架构组件,Android 架构组件官方文档01——LifeCycle
- php redis并发读写,PHP使用Redis实现防止大并发下二次写入的方法
- mac json格式化工具_简洁好用的工具都是相似的
- SFP光模块基本概念及使用注意事项详解
- rs-485光端机的使用你真的清楚吗?