为了账号安全,请及时绑定邮箱和手机立即绑定

MYSQL 指令集合

标签:
MySQL

手动不易,转发请注明出处  --Trance

数据库系统命令:


          (1).查看存储过程状态:show procedure status;

          (2).显示系统变量:show variables (最好使用模糊查询)

          (3).查询当前系统正在执行的进程(相当于DDL(数据库定义语言) 或 DML(数据库操作语言) 或 DCL(数据库控制语言)):show processlist

          (4).显示操作对于的操作内容权限:show privileges

          (5).显示数据库支持引擎:show engines

          (6).显示最后一个执行的语句所产生的错误、警告和通知:show warnings

          (7).显示最后一个执行语句的错误:show errors

          (8).数据库帮助命令:在登录情况下help

          (9).数据库退出指令:exit 或 quit

          (10).数据库操作命令大全:在未登录情况下 mysql - help

          (11).set names = 编码 进入数据库后马上设置 防止乱码


操作术语:


             DDL:

                 Data Definition Language 数据定义语言

             DML:

                 Data Manipulation Language 数据操纵语言

             DQL:

                 Data Query Language 数据查询语言

             DCL:

                 Data Control Language 数据控制语言

             TCL:

                 Transaction Control Language 事务控制语言



数据库设计原则(三大范式 3NF):


                             第一范式(1NF):

                             原子性:数据不可再分:一个表中的数据(字段值)不可再分  (注意:从应用需求来决定,没有绝对性)

                             例子(错误):

                             id        name

                             1         张三,重庆

                             例子(正确):

                             id        name        address

                             1         张三        重庆

                             第二范式(2NF):

                             唯一性:保证行数据的唯一性

                             例子(错误):

                             id        name

                             1         张三

                             1         李四

                             例子(正确):

                             id        name     

                             1         张三       

                             2         李四                           

                             第三范式(3NF):

                             独立性:消除传递依赖:禁止非主键字段依赖非主键依赖,在发生数据冗余,难以维护修改 (注意:发生这种情况一定是多主键表)

                             例子(错误):

                             id        name        classno        classname

                             1         张三        1              一班

                             1         李四        2              二班

                             例子(正确):

                             id        name        classno       

                             1         张三        1             

                             1         李四        2

                             classno       classname

                             1             一班                   

                             2             二班


数据库连接方式:


               连接本地:

                        mysql -u 用户名 -p \n

                        输入密码

               连接远程:

                        mysql -h 主机名 -u 用户名 \n (在对方的数据库中拥有登录用户并且有权限)

                        输入密码


数据库用户操作:


               查询所有用户:

                        select user from user;

               创建用户:

                        create user 用户名 identified by 密码

               用户授权:

                        grant 权限名称(如:select、delete等DML语句、全部(ALL)) on *.*(注意这里前面的*是代表数据库,第二个*是表名,这里表示所有的数据库.表) to 用户

               撤销用户权限:

                        revoke 权限 on *.* from 用户

               删除用户:

                        drop user 用户名 (这个有点问题,待解决)

                        delete from mysql where user = '用户名称'

               查询用户信息:

                        show grants for 用户名

               密码转换:

               select password('密码') 注意:这是一个41个长度的16进制密码,如果在登录后设置密码必须转换为41个长度16进制密码,否则报错

               未登录设置用户密码:

                        mysqladmin -u 用户名 -p 新密码(注意这里是第一次安装设置)

               修改用户密码:

                        mysqladmin -u 用户名 -p 旧密码 password 新密码

               登录后设置用户密码:

                        set password for 用户名 = password(新密码),如果是当前用户直接set password = password(新密码)

               修改用户名:

                          MYSQL5.0以后 rename user 用户名 to 新用户名

                          update 表名 set user = '新用户名' where user = '旧用户名'

                刷新权限:

                          flush privileges

                权限列表:

          表的创建、插入、修改、删除、查询权限:

                                               create

                                               insert

                                               update

                                               delete

                                               select (select(列名...),可以作用在某列上)

                数据库与表的删除和修改权限:

                                           drop

                                           alter

                                           modify

                                           chanage

                                  外键权限:

                                           references

                                临时表权限:

                                           create temporary tables

                                索引权限:

                                         index

                                视图权限:

                                         create view

                                         show view

                      存储过程、函数权限:

                                         cteate routine

                                         alter routine

                                         execute(execute on procedure)

                                         execute(execute on function)

                                重载权限:

                                         reload

                                锁表权限:

                                         lock tables

                                复制权限:

                                         replication client

                                         replication slave

                          查看数据库权限:

                                         show databases

                            查看进程权限:

                                         process

                            创建用户权限:

                                         create user

                            文件访问权限:

                                         file

                            杀死线程权限:

                                         super


数据库管理员命令:


                 mysqladmin -V 数据库版本信息

                 mysqladmin -u 用户 -p 旧密码 password 新密码 修改密码

                 mysqladmin -i(number) 重复执行间隔数

                 mysqladmin -c(count) 重复执行次数

                 mysqladmin variables 数据库变量

                 mysqladmin -? 数据库帮助

                 mysqladmin -u root -p reload 重载权限信息

                 mysqladmin -uroot -p shutdown 使用安全模式关闭数据库

                 待研究...


库操作:


       (1).查看存在数据库:

                          show databases

       (2).创建数据库:

                      create database if not exists 数据库名称 (注意:后面最好加上字符编码,防止乱码) -> create database 数据量名称 character set utf8(你需求的字符编码) collate utf8_general_ci(子集)

       (3).使用数据库:

                      use 数据量名称

       (4).删除删除库:

                      drop database if exists 数据库名称

       (5).查看创建数据库信息:

                              show create database 数据库名称


表操作:


       (1).查看数据库表:show tables

       (2).创建表:

                  create table if not exists 表名(

                  属性名称 属性类型[完整性约束条件],

                  属性名称 属性类型[完整性约束条件],

                  属性名称 属性类型[完整性约束条件]

                  )engine=引擎类型,charset=字符编码集,comment=表备注;

       (3)完整性约束条件表:

                           primary key 主键约束

                           foreign key 外键约束

                           unique      唯一约束

                           not null    不能为空

                           auto_increment 自增

                           default     默认值

       (4)设置表主键:

                     create table 表名(

                     属性名称 属性类型 primary key,       <---- 光标

                     属性名称 属性类型[完整性约束条件],

                     属性名称 属性类型[完整性约束条件]

                     )engine=引擎类型,charset=字符编码集;         

          多字段主键:

                     create table 表名(

                     属性名称 属性类型[完整性约束条件],   

                     属性名称 属性类型[完整性约束条件],

                     primary key(属性1,属性2,...)          <---- 光标

                     )engine=引擎类型,charset=字符编码集;

          添加主键:

                   alter table 表名 add primary key(列名)

          修改主键:

                   alter table 表名 change 列名 属性名称 属性类型[完整性约束条件]

          删除主键:

                   alter table 表名 drop primary key

    修改自增变量值:

                   alter table 表名 auto_increment = 从数字几开始.

       (5)设置外键:

                   外键是表的一个特殊字段。如果字段id是一个表A的属性,且依赖于表B的主键.

                   那么,称表B为父表,表A为子表,id为表A的外键。通过id字段将父表B和子表A建立关联关系.

                   设置表的外键指在创建表设置某个字段为外键.

                   外键的好处:可以使得两张表关联,保证数据的一致性和实现一些级联操作.


          级联操作:

                   on delete (在删除的时候) restrict(限制外表中的外键改动) cascade(跟随外键改动) set null(设置为空) set default(设置默认值) no action(无动作,默认的)

                   on update (在删除的时候) restrict(限制外表中的外键改动) cascade(跟随外键改动) set null(设置为空) set default(设置默认值) no action(无动作,默认的)         

  创建表时设置外键:

                   create table 表名(

                   属性名称 属性类型[完整性约束条件],   

                   属性名称 属性类型[完整性约束条件],

                   constraint 外键名称 foreign key(主键表列属性(也就是本表列属性)) references 外键表名称(外键表列属性) on (update 级联操作 或 delete 级联操作) <---- 光标

                   )engine=引擎类型,charset=字符编码集;

      单独设置外键:

                   alter table employee add constraint 外键名称 foreign key(外键表列属性(也就是本表列属性)) references department(主键表列属性) on (update 级联操作 或 delete 级联操作)

          修改外键:

                   外键不支持修改

          删除外键:

                   alter table 表名 drop foreign key 外键名称

       (6).设置唯一约束:

           创建唯一约束:

             建表时创建:

                   create table 表名(

                   属性名称 属性类型[完整性约束条件],

                   constraint 唯一约束名称 unique key(列名)    <---- 光标

                   )engine=引擎类型,charset=字符编码集;

             建表后创建:

                   alter table 表名 add constraint 唯一约束名称 unique key(列名)

           删除唯一约束:

                   alter table 表名 drop index 约束

           修改唯一约束:

                   唯一约束不支持修改

       (7).设置默认值:

           建表时创建:

                   create table 表名(

                   属性名称 属性类型[完整性约束条件] default 默认值  <---- 光标

                   )engine=引擎类型,charset=字符编码集;

           建表后创建:

                   alter table 表名 alter column 列名 set default 默认值

           删除默认值:

                   alter table 表名 alter column 列名 drop default

           修改默认值:

                   同创建方式

     (8).设置不为空值:

           建表时创建:

                   create table 表名(

                   属性名称 属性类型[完整性约束条件] not null  <---- 光标

                   )engine=引擎类型,charset=字符编码集;

           建表后创建:

                   alter table 表名 change 列名 列名(属性名称) 属性类型[完整性约束条件]

       修改不能为空值:

                   alter table 表名 modify 列名 属性类型[完整性约束条件] not null

             删除空值:

                   (在实际意义上算是修改字段属性了)  alter table 表名 change 列名 列名(属性名称) 属性类型[完整性约束条件]

     (9).自增变量:

                 auto_increment 默认是从1开始递增

       建表时创建:

                  create table 表名(

                  属性名称 属性类型[完整性约束条件] auto_increment  <---- 光标

                  )engine=引擎类型,charset=字符编码集,(如果要改变自增变量起始值)auto_increment = 起始值;

       建表后创建:

                  alter table 表名 modify 列名 int auto_increment (注意:自增的前提 此列必须为主键 或者 唯一约束)

                  alter table 表名 auto_increment = 起始值

         删除自增:

                  alter table 表名 modify 列名 属性类型[完整性约束条件]

         修改自增:

                  同建表后创建

     (10).删除表:

                drop if exists 表名

     (11).清空表数据:

                     truncate 表名

     (12).改变列名称:

                   alter table 表名 change 列名 列名(属性名称) 属性类型[完整性约束条件]

     (13).改变列类型属性约束:

                   alter table 表名 modify 列名(属性名称) 属性类型[完整性约束条件]

     (14).增加一列:

                   alter table 表名 add column 列名(属性名称) 属性类型[完整性约束条件]

     (15).删除一列:

                   alter table 表名 drop column 列名

     (16).表引擎:

创建时指定表引擎:

                 create table 表名(

                 属性名称 属性类型[完整性约束条件]

                 )engine=引擎类型;                  <---- 光标

      修改表引擎:

                 alter table 表名 engine = 引擎名称

      删除表引擎:

                 不存在

        引擎类型:(存储机制,也称为表类型)

                 InnoDB

                 MyIsam

                 BDB

                 archive

                 Mermory

                 ...

                 默认是innodb

     (17).查看表状态:

                 show table status from 数据库名称 where name = '表名'

                 show table status

     (18).查看一个表几行几列:

                 mysqlshow -u root -p 数据库名称 -v -v

     (19).查看表列信息:

                 show columns from 表名 或者 show columns from 数据库.表名

     (20).表备注:

        创建表时:

                 create table if not exists 表名(

                 属性名称 属性类型[完整性约束条件],

                 属性名称 属性类型[完整性约束条件],

                 属性名称 属性类型[完整性约束条件]

                 )engine=引擎类型,charset=字符编码集,comment=表备注;

        创建表后:

                 alter table 表名 comment = 备注信息

      修改表备注:

                 同创建表后

      删除表备注:

                 暂时未发现

     (21).创建相似表:

                     create if not exists table 表名 like 存在表名 (注意:只是复制了表结构,数据不会复制)


数据类型:


         数值类型:

         整数类型:

                  tinyint -> 1字节 -> 小整数值

                 smallint -> 2字节 -> 大整数值

                mediumint -> 3字节 -> 大整数值

                      int -> 4字节 -> 大整数值     

                   bigint -> 8字节 -> 极大整数值

                    float -> 4字节 -> 单精度浮点数值

                   double -> 8字节 -> 双精度浮点数值

                  decimal 附属double


      字符串类型:

                 char -> 0-255字节 -> 定长字符串

              varchar -> 0-255字节 -> 变长字符串

             tinyblob -> 0-255字节 -> 不超过255个字符的二进制字符串

             tinytext -> 0-255字节 -> 短文本字符串

            blob -> 0-65535字节 -> 二进制形式的长文本数据

              text -> 0-65535字节 -> 长文本数据

            mediumbob -> 0-16777215字节 -> 二进制形式的中等长度文本数据

            mediutext -> 0-16777215字节 -> 中等长度文本数据

            logngblob -> 0-4294967295字节 -> 二进制形式的极大文本数据

             longtext -> 0-4294967295字节 -> 极大文本数据

           varbinary(m) -> 允许长度0-m个字节的定长字符串,值的长度+1个字节

            binary(m) -> 允许长度0-m个字节的定长字符串


  日期和时间类型:

                 date -> 4字节 -> 1000-01-01/9999-12-31 yyyy-mm-dd -> 年/月/日

                 time -> 3字节 -> '-838:59:59'/'838:59:59' hh:mm:ss -> 时/分/秒

                 year -> 1字节 -> 1901/2155 yyyy -> 年

             datetime -> 8字节 -> 1000-01-01 00:00:00/9999-12-31 23:59:59 yyyy-mm-dd hh:mm:ss -> 年/月/日 时/分/秒

            datestamp -> 4字节 ->  1970-01-01 00:00:00/2037  yyyymmdd hhmmss -> 时间戳 年/月/日 时/分/秒

       复合类型:

                enum -> 包含65536个元素,其中一个元素保留,用来保存错误信息 -> enum('值1','值2'...)

                 set -> 包含64个元素,不能包含2个相同的元素 -> set('值1','值2'...)


索引:


    (1).查看索引:

                 show index from 表名

                 show keys from 表名

        创建索引

                 create index 索引名称 on 表名(列名);

                 alter table 表名 add index 索引名称(列名)

        唯一索引:

                 create unique index 索引名称 on 表名(列名)

                 alter table 表名 add unique 索引名称(列名)

                 与普通索引相似,但是要求索引列值是唯一不能重复的,可以为空.

        主键索引:

                 create primary key on 表名(列名)

                 alter table 表名 add primary key(列名)

                 就是主键列,不允许为空值,一般为Int类型和自增

        组合索引:

                 create index 索引名称 on 表名(列名1,列名2,...)

        全文索引:

                 create fulltext 索引名称 on 表名(列名1,列名2,...)

                 alter table 表名 add fulltext (列名1,列名2,...)

        删除索引:

                 drop index 索引名称 on 表名

                 alter table 表名 drop index 索引名称

                 (注意如果有主外键约束,需要先删除主外键约束)             



作者:Trance_b54c
链接:https://www.jianshu.com/p/db720ab0b93e


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消