Mysql 常用命令(超详细)

DDL

  1. 操作数据库
    1. 登录

      mysql -u用户名 -p密码

    2. 退出

      exit 或者 ctrl + z

    3. 创建数据库 并指定编码

      create database 数据库名 [character set utf8]

    4. 删除数据库

      drop database 数据库名

    5. 修改数据库编码:

      alter database 数据库名 character set gbk

    6. 进入数据库

      use 数据库名称

    7. 查看当前所在数据库:select database();

  2. 操作表:
    1. C:创建
      • 语法:
        create table 表名(
        		列名1 数据类型,
        		列明2 数据类型2,
        		...
        		列明n 数据类型n
        );
        
      • 数据类型可参照
        菜鸟教程mysql数据类型
      • 复制表: create table 表名 like 被复制的表名
      • CTAS:将查询结果创建表

        create table user3 as select * from user;

    2. R:
    3. U:修改
      • 修改表名
        alter table 表名 rename to 新的表名
      • 修改表字符集
        alter table 表明 character set 字符集名称
      • 添加一列
        alter table 表名 add 列名 数据类型
      • 修改列名称 类型
        alter table 表 modify 字段 varchar(6); # 只修改类型
        alter table 表 change 字段 新字段 数据类型
      • 删除列
        alter table 表 drop 列名
    4. D:删除: drop table 表名
DML:增删改表中数据
  1. 添加数据:
    * 语法
    insert into 表名(列名1,列名2,…列名n) values(值1,值2,…值n)
    insert into 表名 values(值1,值2,…值n)
  2. 删除数据:
    * 语法
    delete from 表名 [where 条件]
    truncate table 表名;先删除表,再创建一张一样的表
  3. 修改数据:
    * 语法:
    update 表名 set 列名1 = 值1,列名2 = 值2 …[where 条件]
DQL:查询语句
  1. 查询语句:
    查询所有 -> select * from 表名;
    去除重复结果:select distinct 字段 from 表

    • 排序查询

      • 语法:order by 子句
        • order by 排序字段1 排序方式1,排序字段2 排序方式2…
      • 排序方式
        • ASC:升序(默认
        • DESC:降序
    • 聚合函数: 将一列数据作为一个整体,进行纵向的计算

      • count:计算个数 select count(列名) from 表名;
      • max:计算最大值 select max(列名) from 表名;
      • min:计算最小值 select min(列名) from 表名;
      • sum:计算和 select sum(列名) from 表名
      • avg:计算平均成绩 select avg(列名) from 表名
    • 分组查询:group by 字段

      • 注意
        • 分组之后查询的字段:分组字段、聚合函数
        • where 和 having 的区别:
          • where 在分组之前进行限定,如果不满足条件,则不参与分组,having在分组之后进行限定,如果不满足结果,则不会被查询出来
          • where 后不可以跟聚合函数,having后可以跟聚合函数
    • 分页查询:limit 开始索引,每页查询条数

  2. 约束:

    • 概念:对表中的数据进行限定,保证数据的正确性、有效性、完整性

    • 外键删除更新行为
      在这里插入图片描述

      示例:alter table 表名 add foreign key(外键字段) reference 主表名(主表字段) ON UPDATE CASCADE ON DELETE CASCADE;

    • 分类:

      • 主键约束:primary key
        • 添加
          • 创建表时添加

            create table stu(
            id int primary key
            )

          • 创建表后添加

            alter table 表 modify 字段 数据类型 primary key;

        • 删除

          alter table 表 drop primary key

      • 非空约束:not null
      • 唯一约束:unique
        • 添加

          alter table 表 modify 字段 数据类型 unique

        • 删除

          alter table 表 drop index 字段

      • 外键约束:foreign key
        • 添加:alter table 表名 add foreign key(列名) reference 表名(列名)
        • 删除:alter table 表名 drop foreign key 外键名称
      • 级联操作:
        • 级联更新:on update cascade
        • 级联删除:on delete cascade

        alter table 表名 add foreign key(列名) reference 表名(列名) on update

      • 自动增长:auto_increment
        • 添加

          alter table 表 modify 字段 数据类型 auto_increment

        • 删除

          alter table 表 modify 字段 数据类型

  3. 数据库的备份与还原

    • 命令行:
      • 备份:mysqldump -u用户名 -p密码 数据库 > 保存路径
      • 还原:
        • 登录数据库
        • 创建数据库
        • 使用数据库
        • 执行文件。source 文件路径
  4. 多表查询

    1. 内连接查询:
      1. 隐式内连接:使用where条件消除无用数据

        select * from a,b where a.id = b.id

      2. 显示内连接:
        • 语法:select 字段列表 from 表名 [inner] join 表名2 on 条件

        select * from a inner join b on a.id = b.id #与1.的结果相同

    2. 外连接查询:
      1. 左外连接:select 字段列表 from 表1 left join 表2 on 条件
        查询的是左表所有数据以及交集部分
      2. 右外链接:select 字段列表 from 表1 right join 表2 on 条件
        查询的是右表所有数据及交集部分

事务:

  1. 事务的基本介绍:
    1. 概念:
      • 如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败
    2. 操作:
      1. 开启事务:start transaction;
      2. 回滚:rollback
      3. 提交:commit
      4. MySQL数据库中的事务默认自动提交
        • 一条DML(增删改)语句会自动提交一次事务
        • 事务提交的两种方式:
          • 自动提交:mysql就是默认提交的
          • 手动提交:需要先开启事务再提交
        • 修改事务的默认提交方式:
          • 查看事务的默认提交方式:@@autocommit; —1自动提交 —0手动提交
          • 修改默认提交方式:set @@autocommit = 0;
  2. 事务的四大特征:
    • 原子性:是不可分割的最小操作单位,要么同事成功,要么同时失败
    • 持久性:当事务提交或回滚后,数据库会持久化的保存数据
    • 隔离性:多个事务之间,相互独立
    • 一致性:事务操作前后,数据总量不变
  3. 事务的隔离级别:
    • 概念:多个事务之间相互独立,但如果多个事务操作同一批数据,则会引发一些问题,设置不同的隔离级别就可以解决这些问题
    • 存在的问题:
      • 脏读:一个事物,读取到另一个事务中没有提交的数据
      • 不可重复读(虚读):在同一个事务中,两次读取到的数据不一样
      • 幻读:一个事物操作数据表中所有记录,另一个事务添加了一条数据,则第一个事务查询不到自己的修改
    • 隔离级别
      • read uncommitted:读未提交

        • 产生的问题:脏读、不可重复读、幻读
      • read committed:读已提交

        • 产生的问题:不可重复读、幻读
      • repeatable read:可重复读(mysql默认):

        • 产生的问题:幻读
      • serializable:串行化

        • 可以解决所有的问题
      • 查看及修改当前隔离级别

        • 查看:select @@tx_isolation
        • 修改:set global transaction isolation level 级别字符串

DCL

  • sql分类:
    1. DDL:操作数据库和表
    2. DML:增删改查表中数据
    3. DQL:查询表中数据
    4. DCL:管理用户,授权
      • 管理用户
        • 添加用户:
          • create user ‘用户名’@‘主机名’ identified by ‘密码’
        • 删除用户:
          • drop user ‘用户名’@‘主机名’
        • 修改用户密码:
          • update user set password = password(‘新密码’) where user = ‘用户名’
          • set password for ‘用户名’@‘主机名’ = password(‘新密码’)
          • 修改 root 密码
            1. cmd --> net stop mysql 停止 mysql服务
            2. 使用无验证方式启动 mysql服务:mysqld --skip-grant-tables
            3. 打开新cmd窗口,直接输入 mysql 回车,则登录成功
            4. user mysql
            5. update user set password = password(‘新密码’) where user = ‘root’
            6. 关闭两个窗口
            7. 启动mysql服务
      • 授权
        • 查询权限:show grants for ‘用户名’@‘主机名’
        • 授予权限:

          grant 权限列表 on 数据库名,表名 to ‘用户名’@‘主机名’

        • 撤销权限:

          revoke 权限列表 on 数据库名.表名 from ‘用户名’@‘主机名’

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值