做网站申请域名空间,公司网站优化推广,广告设计和平面设计有什么区别,便宜的网站建设【数据库设计的三大范式】1.第一范式(1NF First Normal Fromate)#xff1a;数据表中的每一列(字段)#xff0c;必须是不可拆分的最小单元。也就是确保每一列的原子性。例如#xff1a; userInfo: ‘山东省烟台市 13181621008’ userAds:’山东省烟台市’tel:’13181621…【数据库设计的三大范式】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.2FOREIGN KEY:设置外键约束。【外键】1、设置外键有哪些注意事项1、设置外键有哪些注意事项只有innoDB的数据库引擎支持外键。修改my.ini文件设置default-storage-engineINNODB②外键与参照列的数据类型必须相同③设置外键的字段必须要有索引。如果没有索引设置外键时会自动生成一个索引[数值型要求长度和无符号都相同字符串要求类型相同长度可以不同]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;