一、数据库基本操作
    1、开启mysql服务命令
        net start mysql 

    2、进入mysql的两种方式
        明文进入:mysql -uroot -proot  格式:mysql -u帐号 -p密码
        密文进入:mysql -uroot -p 
        按enter会提示你输入密码(Enter pssword:),此时你写的密码就会显示为***这样。 
             
    3、查看mysql中所有的数据库(一般在固定的单词命令就会是用大写,这个要习惯,看多了敲多了就认识了)
        前面四个数据库是mysql中自带的,也就是必须的.
        SHOW DATABASES;

    4、创建名为test_1的数据库
        格式:CREATE DATABASE 数据库名
        CREATE DATABASE test_1;

    5、删除名为test_1的数据库
        格式:DROP DATABASE 数据库名
        DROP DATABASE test_1;


二、数据库表的基本操作

1.创建表结构

CREATE TABLE Employee
    (Eno CHAR(4) NOT NULL UNIQUE,
    Ename CHAR(8)NOT NULL,
    Sex CHAR(2) NOT NULL ,
    Age INT NULL,
    Is_Marry CHAR(1) NULL,
    Title CHAR(6) NULL,
2.添加列   
    ALTER TABLE Employee ADD Emgr CHAR(4) NULL;

    3.修改列的数据类型
        ALTER TABLE Employee CHANGE Emgr Emgr CHAR(12);
        ALTER TABLE Employee MODIFY Emgr CHAR(12);

        注:mysql中alter语句中change和modify的区别:
        Change :对列进行重命名或更改列的类型,需给定旧的列名称和新的列名称、当前的类型;
        modify :可以改变列的类型,此时不需要重命名(不需给定新的列名称)。

    4.删除列
        ALTER TABLE Employee DROP COLUMN Emgr;

    5.增加某列必须取唯一值的约束条件
        ALTER TABLE Employee  ADD CONSTRAINT UQ_name UNIQUE(Ename);//用户为该唯一值约束设定约束名
        ALTER TABLE Employee  ADD UNIQUE(Ename);//系统自动命名

三、细节
    1.一个表或者视图只允许有一个聚簇索引(CLUSTERED),建立聚簇索引后,表在磁盘中的物理存储顺序将与聚簇索引中的一致。
    在最常查询的列上建立聚簇索引可以加快查询速度;在经常更新的列上建立聚簇索引,则DBMS维护所以代价太大。

四、关系数据库规范化理论
    1.未规范的问题
        1.1 数据冗余度大
        1.2 修改异常
            冗余度大,不仅兰妃存储空间,在对数据进行修改时,易造成数据的不一致性。如当某个表中的工资变化时,满足某个条件的人的工资都需要修改,一旦遗漏就会使数据不一致,产生修改异常。
        1.3 插入异常
            无法插入某部分信息的插入异常。因为码为空的情况下无法插入相应的数据
        1.4 删除异常
            删除掉不应删除的信息为删除异常。在删除某个信息时连带其他信息被删除。

    2. 函数依赖
        2.1 函数依赖是指在关系R中,X、Y为R的两个属性或属性组,如果对于R的所有关系r都存在:对于X的每一个具体值,Y都只有一个具体值与之对应。
        则称属性Y函数依赖于属性X。或者说属性X函数决定属性Y,记做X->Y

        2.2 联系中存在的依赖
            1)如果两属性集X、Y是一对一联系,则存在函数依赖 X<-->Y
            2) 如果两属性集X、Y是多对一联系,则存在函数依赖 X-->Y
            3)如果两属性集X、Y是多对多联系,则不存在函数依赖 
            4)假设两属性集X、Y间 X-->Y成立,如果Y属于X,则称X-->Y是平凡函数依赖,反之是非平凡函数依赖。

    3. 关系模式的规范化
        当一个关系中的所有分量都是不可分的数据项时,该关系是规范化的。
        注:规范化程度较高者必定是较低者的子集。

        1)部分函数依赖与完全函数依赖:
            设X、Y是关系R的两个不同的属性或属性组,且X-->Y。如果存在X的某一个真子集X1,使得X1-->Y,则称Y部分函数依赖于X
            反正则为完全函数依赖。

        2)传递依赖:
            在关系R中,如果X、Y、Z是R中的三个不同的属性或属性组,如果X-->Y,Y-->Z,但Y-/->X,且Y不是X的子集,则称Z传递依赖于X

        3.1 范式的种类:
            1NF,2NF,3NF(BCNF),4NF,5NF

        3.2 第一范式(1NF)
            定义:如果关系模式R中不包含多值属性,则R满足第一范式
            存在问题:存在部分函数依赖不是2NF,存在传递函数依赖不是3NF

        3.3 第二范式 
            如果一个关系R属于1NF,且它的所有非主属性都完全依赖于R的任意候选码,则R属于第二范式。
            即:第二范式中不存在部分函数依赖

            推论:如果关系模式是第一范式,且它的每一个候选码都是单码,则这个关系模式是第二范式。

        3.4 第三范式
            如果关系模式R属于第二范式,且它的每一个非主属性都不传递依赖于任何候选码,则称R是第三范式。

            推论1:如果关系模式属于第一范式,且它的每一个非主属性既不部分依赖、也不传递依赖于任何候选码,则该模式属于第三范式。
            推论2:不存在非主属性的关系模式一定为第三范式。

        3.5 改进的第三范式:BCNF
            定义:设关系模式是第一范式,若F的任一函数依赖X-->Y(且Y不属于X)中X都包含了R的一个码,则称R是BCNF范式。

            推论:
                1)R中所有非主属性对每一个码都是完全函数依赖
                2)R中所有主属性对每一个不包含它的码,都是完全函数依赖
                3)R中没有任何属性完全函数依赖于非码的人格一组属性

            定理:如果R是BCNF范式,则R一定是第三范式

            3NF比BCNF放宽了一个限制,即允许因素不包含码。

如有错误,还请指正哦~