mysql创建表时添加范式,MySql三大范式与数据库设计和表创建常用语句
[导读]第一范式1NF First Normal Fromate:数据表中的每一列字段,必须是不可拆分的最小单元。也就是确保每一列的原子性。
【数据库设计的三大范式】
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(
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(255),
age SMALLINT UNIQUE,
hight DOUBLE(3,2) DEFAULT(1.2)
);
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三大范式与数据库设计和表创建常用语句相关推荐
- oracle建表时添加comment,MYSQL中创建表时可以直接声明comment,ORACLE中似乎不可以,那么oracle该怎样简明地声明comment...
CREATE TABLE `smbms_user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `userCode` varch ...
- 使用MySQL数据库创建表时添加外键约束
/题目:创建表Book表,字段如下: bid整型,要求主键 bname学符型,要求设置唯一键,并非空 price浮点型,要求有默认值10 btypeId 类型编号,要求引用bookType表的id字段 ...
- mysql schema 保存数据_在MySQL中,所有触发器的定义都保存在information_schema数据库下的()表中。_学小易找答案...
[单选题]如何将英制 的零件转为公制的零件 ( ). [判断题]连续选择边线创建倒角时,不能单独修改某一边线的倒角大小 [判断题]创建筋特征时截面必须是闭和的 [填空题]Hibernate 的会话接口 ...
- 禁止windows系统创建快捷方式时添加文字“- 快捷方式”
转载自如何禁止windows系统创建快捷方式时添加文字"- 快捷方式",仅作学习交流使用 如何禁止windows系统创建快捷方式时添加文字"- 快捷方式" 20 ...
- 数据库设计模板 + Excel创建sql语句(VBA)
数据库设计模板 + Excel创建sql语句-VBA 1. 表格设计 2. 效果展示 3. VB代码 4. Excel测试文件下载 1. 表格设计 直接看图,3个页签 <建表语句>页签,把 ...
- mysql创建表时添加范式_MySql三大范式与数据库设计和表创建常用语句
[数据库设计的三大范式] 1.第一范式(1NF First Normal Fromate):数据表中的每一列(字段),必须是不可拆分的最小单元.也就是确保每一列的原子性. 例如: userInfo: ...
- mysql三大范式和反范式_数据库范式:三大范式、BC范式和反范式化
一.什么是数据库范式 无规矩不成方圆,同理范式是数据表设计的一些约束和规范.为了让各个属性间的关系更加合理,减少数据冗余. 一般来说,主要满足 3NF 就可以了,因为范式过高,虽然对数据关系有更好的约 ...
- mysql 数据库设计 纵表_数据库查询技巧以及横纵表
1. 查询技巧 查询时先写出查询结构,将需要连接的表进行join on 连接好,最后再写出查询的数据 select from join on [where] group by 字段[order by ...
- mysql查询动态表名的数据类型_Mysql中查询某个数据库中所有表的字段信息
前言 有时候,需要在数据库中查询一些字段的具体信息,而这些字段又存在于不同的表中,那么我们如何来查询呢? 在每一个数据库链接的information_schema数据库中,存在这样一张表--COLUM ...
最新文章
- 黑盒测试之两两组合方法
- 「数据科学家」必备的10种机器学习算法
- Python编辑器与集成开发环境(IDE)选择
- php sql 字段名称,PHPSQL Server – 字段名称被截断
- localStorage使用总结
- 三年了总觉的还是该写点什么
- u-boot.lds 文件分析
- 如何创建SAP Commerce Cloud Page Templates
- 设计模式杂谈(一)——设计模式概述
- android Dialog提示框。单选项dialog,多选项dialog
- php sql取数据生成数组中,php中实现数组生成要执行的sql语句
- Java 算法 数字分类
- oracle唯一索引能删除吗,Oracle:ora-02429:无法用于删除强制唯一/主键的索引 解决...
- delphi framerect 画透明_闭上眼睛一起进入彩色画的梦境,幻彩花精灵,彩铅手绘教程...
- 改变变压器联接方式可消除某些特定次数的谐波_电工牛人10年经验,总结的4电工常用接线方法41例,电机、变压器、接触器..都有...
- Spring+MyBatis企业应用实战 - 笔记
- 【CentOS】 Nginx+jdk+tomcat 环境搭建
- Telnet 服务器软件的安装
- 创业公司的技术总监,去上市公司面试,结果凉了。
- PDF转JPG的工具
热门文章
- 经典SR锁存器(或非门)分析
- M1 芯片maven 编译protobuf生成Java代码时,不能找到protoc-gen-grpc-java:exe:osx-aarch_64问题记录
- MD5加密漏洞(MD5绕过方式-0e绕过/数组绕过/MD5碰撞/MD5SQL注入)
- php中mysql_affected_rows()更新记录返回0_php中mysql_affected_rows()返回-1带来的“陷阱”...
- vmware exsi 调整dpi设置
- 中国内地首家美高梅品牌城市酒店开业;斯凯孚集团现任CEO首度访华 | 美通企业日报...
- R6- React高阶组件详解
- 如何迅速提升企业固定资产管理水平?
- 基于Haar级联的人脸识别以及给人戴面具的操作
- 《python程序设计教程》第四章常用数据结构课后习题