美文网首页
mysql语句

mysql语句

作者: JessWang | 来源:发表于2018-05-23 15:17 被阅读5次

    创建表:

        create table[if not exists] 表名(字段1,字段2,......[索引1,索引2,......])[表选项1,表选项2......]

        字段设定形式:

        字段名  类型  [字段属性1 字段属性2 ......]

        说明:

            1. 字段名可以自己取;

            2. 数据类型就是: int, tinyint, float, double, char(6), varchar(25), text, datetime...

            3. 字段属性可以有多个(根据具体的需要),相互之间直接空格隔开,主要有如下几个:

                auto_increment:  只用于整数类型,让该字段的值自动获得一个增长值.通常用于做一个表的第一个字段的设定,并且通常还当做主键(pinmary key);

                pinmary key: 用于设定该字段为主键,此时该字段的值就可以"唯一确定"一行数据;

                unique key: 设定该字段是"唯一的,不重复的"

                not null: 用于设定该字段不能为空(null)

                default: xx值用于设定该字段的默认值,此时insert没有给值的时候就使用该默认值

                comment '字段说明文字'

    索引

    什么是索引?

            索引是系统内部自动维护的隐藏的"数据表",它的作用是,可以极大地加快数据的查找速度! 

            这个隐藏的数据表,其中的数据是自动排好序的,其查找速度就是建立在这个基础上. 

            通常,所谓建立索引,其实是指定一个表的某些字段作为"索引数据字段"就可以了,形式为

                索引类型(要建立索引字段名)

            索引类型有如下几个:

                普通索引:    形式: key(字段名)

                                    含义: 就是一个索引而已,没有其他作用,只能加快查找速度.

                唯一索引:    形式: unique key(字段名)

                                    含义: 是一个索引,而且还可以设定其字段的值不能重复(唯一性)

                主键索引:    形式: primary key(字段名)

                                    含义: 是一个索引,而且还具有区分该表中的任何一行数据的作用(其实也是唯一性),它其实比唯一性索引多一点功能,唯一性可以为空,而主键不能为空.

                全文索引:    形式: fulltext(字段名)

    演示索引创建语法:

    此时,该表中如果以id,user_name或email做条件进行查找,就会"很快".而以age做条件就会"很慢".

    外键索引:    形式: foregin key(字段名) references 其他表(对应其他表中的字段名);

    什么叫外键.

            外键,就是指,这点某个表(tab1)某个字段(f1),它的数据的值,必须是在另一个表(tab2)中的某个字段(f2)中存在!

    此时,插入xuesheng表中的数据时,banji_id字段的值,就不可以随便插入了,而是必须是banji表中的id字段所已经有的数据值,才可以插入.

    演示数万级别的索引查找速度

    约束

        就是要求数据需要满足什么条件的一种"规定".

    主要有如下几种约束:

            主键约束: 形式 pinmary key(字段名)

                含义: 使该设定字段的值可以用于"唯一缺点一行数据",其实就是"主键"的意思

            唯一约束: 形式 unique key(字段名)

                含义: 使该设定字段的值具有"唯一性",自然也是可区分的.

            外键约束: 形式 foregin key(字段名) references 其他表名(对应其他表中的字段名)

                含义: 使该设定字段的值,必须在设定的对应表中的对应字段中已经有该值.

            非空约束: 形式 not null

            检查约束: 形式 check(某种判断语句), 比如:

                    create table tab1(

                            age tinyint,

                            check (age>=0 and age < 100)

                    )

    其实,主键约束,唯一约束,外键约束,只是"同一件事情的2个不同说法",他们同事也称为"主键约束"",唯一约束","外键约束".

    表选项列表

        表选项就是,创建一个表的时候,对该表的整体设定,主要有如下几个.

            charset = 要使用的字符编码;

            engine = 要使用的存储引擎(也叫表类型),

            auto_increment = 设定当前表的自增长字段的初始值,默认是1

            comment = '该表的一些说明文字'

        说明:

            1. 设定的字符编码是为了跟数据库设定的不一样,如果一样就不需要设定了,因为其会自动使用数据库级别的设定

            2. engine(存储引擎)在代码层面,就是一个名词: InnoDB, MyIsam,BDB,archive,Memory.默认是InnoDB

    什么叫存储引擎

            存储引擎是将数据存储到硬盘的"机制".

            不同的存储引擎,其实主要是从2个大的层面来设计存储机制: 

                1.尽可能快的速度

                2.尽可能多的功能

    选择不同的存储引擎,就是上述性能和功能的"权衡"

    大体如下:

    修改表

        几点说明:

                1.修改表,是指修改表的结构,正如创建表也是设定表的结构.

                2.创建表能做的事,修改表几乎都能做,但很不推荐去修改表,而是应该在创建表的时候就基本确定表的结构.

                3. 大体来说, 有:

                    3.1 可以对字段进行: 添加,删除,修改;

                    3.2 可以对索引进行:添加, 删除

                4. 表的选项,通常"都是"修改,即使不写任何表选项,他们都有其默认值.

    其他表的相关语句

    显示当前数据库中的所有表 show tables;

    显示某表的结构: desc 表名; 或: describe 表名.

    显示某表的创建语句: show create table 表名;

    重命名表: rename table 旧表名 to 新表名;

    从已有表复制表结构: create table [if not exists] 新表名 like 原表名;

    视图定义语句

            类比,什么叫函数    

                就是一段代码,我把它封装起来,并给一个名字,以后,要使用(执行)该段代码,就方便了,用该函数名就可以了.

                视图: 就是一个select语句(通常比较复杂),我们给其一个名字,以后,要使用(执行)该select语句,就方便了,用该名字就可以了

    什么叫做'依赖'?

        依赖,就是在一个表中,其中某个字段的值B可以由另一个字段的值A来"决定",则此时我们就称为:

            字段B依赖于字段A,

            或:  字段A决定字段B

    其一是是,如果根据字段A的某个值,一定可以找出一个确定的字段B的值,就是A决定B.对一个有主键的值,则其他字段肯定都确定了.也可以这样说,主键决定了其他字段,其他字段依赖于主键.

    什么叫做部分'依赖'

            如果某个字段,只依赖于部分主键字段,此时就称为部分依赖.--发生此情况的前提一定是: 主键字段有多个!!!

    什么叫完全依赖:

            就是某个字段,是依赖于"主键的所有字段".

            --推论: 如果一个表的主键只有一个字段,则此时必然是完全依赖.

    第三范式

            消除传递依赖

            使每个字段都独立地依赖于主键字段(独立性)  

    通常 ,在设计表的时候,基本你只要遵循这样一个远侧,就可以满足前述3范式要求:

            每一种数据,使用一个表来存储

    相关文章

      网友评论

          本文标题:mysql语句

          本文链接:https://www.haomeiwen.com/subject/frrmdftx.html