美文网首页
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范式要求:

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

相关文章

  • php操作mysql语句

    mysql语句 php操作mysql语句

  • 2018-03-20

    MYSQL查询语句 MYSQL复杂操作语句 MYSQL多表查询方法 函数部分

  • BigData-MySQL总结大全(一)苏暖人

    BigData之MySQL总结大全 MYSQL常用的基本语句 MYSQL常用的基本语句 例:SELECT TOP ...

  • mysql常用语句

    一、Mac端:打开MYSQL服务器语句:brew services start mysql关闭MYSQL服务器语句...

  • MySQL常用语句

    MySQL常用语句 tags: MySQL 常用语句 语法 随便写的标签 建表 insert 语句 msyql 把...

  • MySQL基础——DML语句

    上篇文章我们学习了MySQL基础——DDL语句,这篇文章学习MySQL基础——DML语句。 DML语句 DML英文...

  • MySQL基础——DCL语句

    上篇文章学习了MySQL基础——DQL语句,这篇文章学习MySQL基础——DCL语句。 DCL语句 DCL英文全称...

  • MySQL基础——DQL语句

    在上篇文章中,我们学习了MySQL基础——DML语句,这篇文章学习MySQL基础——DQL语句。 DQL语句 DQ...

  • Linux [MySQL]

    @[TOC](Linux [MySQL]) Database MySQL 注意: MySQL 的SQL语句以分号...

  • Mysql update语句赋值嵌套select

    MySQL课程练习中题目遇到Mysql update语句赋值嵌套select 语句如下: update tc_sc...

网友评论

      本文标题:mysql语句

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