[导读]第一范式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三大范式与数据库设计和表创建常用语句相关推荐

  1. oracle建表时添加comment,MYSQL中创建表时可以直接声明comment,ORACLE中似乎不可以,那么oracle该怎样简明地声明comment...

    CREATE TABLE `smbms_user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `userCode` varch ...

  2. 使用MySQL数据库创建表时添加外键约束

    /题目:创建表Book表,字段如下: bid整型,要求主键 bname学符型,要求设置唯一键,并非空 price浮点型,要求有默认值10 btypeId 类型编号,要求引用bookType表的id字段 ...

  3. mysql schema 保存数据_在MySQL中,所有触发器的定义都保存在information_schema数据库下的()表中。_学小易找答案...

    [单选题]如何将英制 的零件转为公制的零件 ( ). [判断题]连续选择边线创建倒角时,不能单独修改某一边线的倒角大小 [判断题]创建筋特征时截面必须是闭和的 [填空题]Hibernate 的会话接口 ...

  4. 禁止windows系统创建快捷方式时添加文字“- 快捷方式”

    转载自如何禁止windows系统创建快捷方式时添加文字"- 快捷方式",仅作学习交流使用 如何禁止windows系统创建快捷方式时添加文字"- 快捷方式" 20 ...

  5. 数据库设计模板 + Excel创建sql语句(VBA)

    数据库设计模板 + Excel创建sql语句-VBA 1. 表格设计 2. 效果展示 3. VB代码 4. Excel测试文件下载 1. 表格设计 直接看图,3个页签 <建表语句>页签,把 ...

  6. mysql创建表时添加范式_MySql三大范式与数据库设计和表创建常用语句

    [数据库设计的三大范式] 1.第一范式(1NF First Normal Fromate):数据表中的每一列(字段),必须是不可拆分的最小单元.也就是确保每一列的原子性. 例如: userInfo: ...

  7. mysql三大范式和反范式_数据库范式:三大范式、BC范式和反范式化

    一.什么是数据库范式 无规矩不成方圆,同理范式是数据表设计的一些约束和规范.为了让各个属性间的关系更加合理,减少数据冗余. 一般来说,主要满足 3NF 就可以了,因为范式过高,虽然对数据关系有更好的约 ...

  8. mysql 数据库设计 纵表_数据库查询技巧以及横纵表

    1. 查询技巧 查询时先写出查询结构,将需要连接的表进行join on 连接好,最后再写出查询的数据 select from join on [where] group by 字段[order by ...

  9. mysql查询动态表名的数据类型_Mysql中查询某个数据库中所有表的字段信息

    前言 有时候,需要在数据库中查询一些字段的具体信息,而这些字段又存在于不同的表中,那么我们如何来查询呢? 在每一个数据库链接的information_schema数据库中,存在这样一张表--COLUM ...

最新文章

  1. 黑盒测试之两两组合方法
  2. 「数据科学家」必备的10种机器学习算法
  3. Python编辑器与集成开发环境(IDE)选择
  4. php sql 字段名称,PHPSQL Server – 字段名称被截断
  5. localStorage使用总结
  6. 三年了总觉的还是该写点什么
  7. u-boot.lds 文件分析
  8. 如何创建SAP Commerce Cloud Page Templates
  9. 设计模式杂谈(一)——设计模式概述
  10. android Dialog提示框。单选项dialog,多选项dialog
  11. php sql取数据生成数组中,php中实现数组生成要执行的sql语句
  12. Java 算法 数字分类
  13. oracle唯一索引能删除吗,Oracle:ora-02429:无法用于删除强制唯一/主键的索引 解决...
  14. delphi framerect 画透明_闭上眼睛一起进入彩色画的梦境,幻彩花精灵,彩铅手绘教程...
  15. 改变变压器联接方式可消除某些特定次数的谐波_电工牛人10年经验,总结的4电工常用接线方法41例,电机、变压器、接触器..都有...
  16. Spring+MyBatis企业应用实战 - 笔记
  17. 【CentOS】 Nginx+jdk+tomcat 环境搭建
  18. Telnet 服务器软件的安装
  19. 创业公司的技术总监,去上市公司面试,结果凉了。
  20. PDF转JPG的工具

热门文章

  1. 经典SR锁存器(或非门)分析
  2. M1 芯片maven 编译protobuf生成Java代码时,不能找到protoc-gen-grpc-java:exe:osx-aarch_64问题记录
  3. MD5加密漏洞(MD5绕过方式-0e绕过/数组绕过/MD5碰撞/MD5SQL注入)
  4. php中mysql_affected_rows()更新记录返回0_php中mysql_affected_rows()返回-1带来的“陷阱”...
  5. vmware exsi 调整dpi设置
  6. 中国内地首家美高梅品牌城市酒店开业;斯凯孚集团现任CEO首度访华 | 美通企业日报...
  7. R6- React高阶组件详解
  8. 如何迅速提升企业固定资产管理水平?
  9. 基于Haar级联的人脸识别以及给人戴面具的操作
  10. 《python程序设计教程》第四章常用数据结构课后习题