2018.1.28
1.数据库三大范式:讲的是涉及数据库表的三个原则。
首先强调3NF在2NF基础上,2NF在1NF基础上。
1NF是列不可再分,比如联系人这种可以再分的。这个是最简单的,重点说2NF和3NF。
2NF说的是每个非主键列必须依赖主键,不能部分依赖主键。(因为主键有时候不是一列) ps:主键不是必须的,但是一般要有,因为有了主键才能唯一确定一条记录。
3NF说的是非主键列之间不能有传递依赖,比如学号,姓名,性别,所在班级,班主任。尼玛班主任跟学号有啥关系。没有直接依赖的你放在一个表里,到时候班级表又有班主任这一项,这就会有大量数据冗余。2NF也是大量数据冗余。
DDL/DML/DQL这些你不需要记,你用多了自然就记住了。
DDL:
create database;
use database; 你必须use选中才能操作某个数据库。
数据类型: tinyint 1字节 有符号数 -2^7--2^7-1 无符号数 0-2^8-1
int 4字节 -2^31--2^31-1
float和double只需要记住精度:float是7位有效数字,double是16位有效数字就可以了,取值范围记不住。
MySQL:
CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (Id_O),
FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)
)
SQL Server / Oracle / MS Access:
CREATE TABLE Orders
(
Id_O int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
Id_P int FOREIGN KEY REFERENCES Persons(Id_P)
)
CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)
为了让数据库不乱码,dos窗口默认gbk编码,数据库我们一般用的utf-8,为了让表中不出现乱码。mysql命令行中添加 set names gbk;
还可以给字段添加注释 sid int(10) comment '学生id' 但是这个comment好像没啥吊用 在表数据里不会显示 你只有看表的信息时才会显示字段的注释和数据类型
常见其他DDL命令:
use myschool; 选中数据库
show tables; 查看有哪些表
describe(desc) student; 查看学生表结构
drop student if exists student;删除学生表
mysql用法帮助(mysql yog里也可以用):
help contents;查看用法(所有列表)
help datatypes;所有数据类型用法
help int; 教你int怎么用
help create table; 教你怎么创建数据库表
修改表:
先show tables确定有这个表。
alter table 旧表名 rename [to] 新表名
alter table 表名 add 字段名 数据类型 【字段属性(约束)】
alter table 表名 change 原字段名 新字段名 数据类型 【字段属性(也就是约束)】
alter table 表名 drop 字段名
※ 添加主键字段 alter table 表名 add constraint 主键名 primary key 表名(主键字段) 意思就是添加约束,然后起个主键名,然后说明是表的哪个字段作为主键。
DDL的部分到此为止,证明2018/01/28 学习了,这就够了。这些东西还不百分之百的熟悉。你需要每天敲一敲才行。