Mysql基础操作

一些基础知识

三范式及BC范式

一范式(1NF)

符合1NF的关系中的每个属性都是不可再分的,在使用数据库管理系统的时候比如mysql,sqlserver等创建的数据库都满足1NF,如果不满足这个范式,是不能够创建成功数据表的。属性不可再分的意思是每一个字段都是最小的,不包含其他字段。不重复,原子性。

二范式(2NF)

在1NF的基础上,消除了非主属性对码的部分函数依赖。

一个表中,可以唯一决定一个元组的属性“集合”。假设K为表中的某个属性,如果在K确定了的情况下,这个表里面其他的属性都可以确定,那么K就叫做候选码,也叫码。比如通过id可以获取到姓名,系名,系主任名,但是不能确定课名和分数。课名可以获取分数。id-----姓名,系名,系主任

课名------分数 (id,课名)这个属性组就叫做码。

非主属性

上面说到的码里面的属性就是主属性,包括id,课名。不是主属性的就是非主属性,包括姓名,系名,系主任,分数。

函数依赖

函数y = f(x)代表了给定一个x的值,y的值也是确定的。在数据表中,在属性x确定的情况下。必定能确定y的值,那就是说y函数依赖与x写作X---Y。比如:在表中,给定一个学号,必定能得到一个唯一的一个姓名。那就说姓名函数依赖于学号。写作:学号---姓名。

完全函数依赖

在一张表中字段分为 X 和 Y 两个集合,X集合数据唯一确定一条数据 Y ,X集合字段中的任何一个字段都不能确定唯一一条数据 Y ,就称 Y 完全函数依赖于 X

比如(学号,课名)-----成绩,学号和课名都是x的真子集,但是如果只有学号,或者只有课名,是不能得到一个唯一的成绩。满足完全函数依赖的要求,所以y完全函数依赖于x.

部分函数依赖

在一张表中分为 X 和 Y 集合,X集合数据唯一确定一条数据Y,并且X中任意字段或组合字段都可以唯一确定Y集合数据,则称 Y 部分函数依赖于 X

比如(学号,课名)-----姓名。由学号可以得到唯一的姓名,但是由课名不能得到唯一的姓名。所以称为y部分函数依赖x.

判断是否符合2NF

就是看数据表中是否存在非主属性对于码的部分函数依赖。若存在,则数据表最高只符合1NF的要求,若不存在,则符合2NF的要求。

三范式

在2NF的基础上,消除了非主属性对于码的传递函数依赖。也就是说,如果存在非主属性对与码的传递函数依赖,则不符合3NF的要求。

传递函数依赖

如果y依赖于x,z又依赖于y,那就说z依赖于x.

比如:系名依赖于学号,系主任依赖于系名,那么系主任传递函数依赖于学号。不满足3NF

BC范式

满足BC范式的关系将消除任何属性(主属性和非主属性)对关系键的部分函数依赖和传递函数依赖。 在第三范式下,举个例子 如果不存在(A,B) –>C , B–>C 类似这样的情况,也就是说部分函数依赖。也不存在A–>B , B–>C 这种情况,也就是传递函数依赖,不管这些ABC属性是主属性还是非主属性,反正就是不存在 “部分函数依赖和传递函数依赖” ,这就是BC范式。

速记

符合1NF的关系中的每个属性都是不可再分的;

2NF在1NF的基础上,消除了非主属性对码的部分函数依赖;

3NF在2NF的基础上,消除了非主属性对于码的传递函数依赖;

BCNF在3NF基础之上,消除任何属性(主属性和非主属性)对关系键的部分函数依赖和传递函数依赖。

DML

DML英文全称是Data Manipulation Language(数据操作语言),用来对数据库中表的数据记录进
行增、删、改操作。
  添加数据(INSERT)
  修改数据(UPDATE)
  删除数据(DELETE)

添加数据

INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...);
案例: 给employee表所有的字段添加数据 ;
insert into employee(id,workno,name,gender,age,idcard,entrydate) 
values(1,'1','Itcast','',10,'123456789012345678','2000-01-01');
给全部字段添加数据
INSERT INTO 表名 VALUES (值1, 值2, ...);
案例:插入数据到employee表,具体的SQL如下:
insert into employee values(2,'2','张无忌','',18,'123456789012345670','2005-01- 01');
批量添加数据
INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...), (值1, 值2, ...), (值 1, 值2, ...) ;
INSERT INTO 表名 VALUES (值1, 值2, ...), (值1, 值2, ...), (值1, 值2, ...) ;
案例:批量插入数据到employee表,具体的SQL如下:
insert into employee 
values(3,'3','韦一笑','',38,'123456789012345670','2005-01- 01'),(4,'4','赵敏','',18,'123456789012345670','2005-01-01');

注意事项:

  • 插入数据时,指定的字段顺序需要与值的顺序是一一对应的。
  • 字符串和日期型数据应该包含在引号中。
  • 插入的数据大小,应该在字段的规定范围内。

修改数据

修改数据的具体语法为:
UPDATE 表名 SET 字段名1 = 值1 , 字段名2 = 值2 , .... [ WHERE 条件 ] ;
案例:
修改id为1的数据, 将name修改为小昭, gender修改为 女
update employee set name = '小昭' , gender = '' where id = 1;
注意事项:
  • 修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。

删除数据

删除数据的具体语法为:
DELETE FROM 表名 [ WHERE 条件 ] ;
案例
删除gender为女的员工
delete from employee where gender = '';
注意事项:
  • DELETE 语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数
据。
  • DELETE 语句不能删除某一个字段的值(可以使用UPDATE,将该字段值置为NULL即
可)。

 

posted @ 2022-07-16 12:56  锦此  阅读(30)  评论(0编辑  收藏  举报