Mysql学习笔记

Mysql学习笔记

以下内容图片来自黑马程序员(黑马打钱)

SQL语法

  • DDL数据库操作

    查询
    查询所有数据库
    show databases;
    
    查询当前数据库
    select database();
    
    创建
    create database [if not exists] 数据库名 [default charset 字符集] [collate 排序规则];
    
    删除
    drop database [if exists] 数据库名;
    
    使用
    use 数据库名;
    
    查询当前数据库所有表
    show tables;
    
    查询表结构
    desc 表名;
    
    查询制定表的建表语句
    show create table 表名;
    
    创建表
    create table 表名(
    	字段1 字段1类型[comment 字段1注释],
    	字段2 字段2类型[comment 字段2注释],
    	字段3 字段3类型[comment 字段3注释],
    	...
    	字段n 字段n类型[comment 字段n注释]
    	)[comment 表注释];
    
    数据类型

    数值类型

    请添加图片描述

    精度代表位数 标度代表小数点位数
    123.45 M = 5, D = 2
    double(5, 2);
    

    字符类型

    在这里插入图片描述

    char(10) vachar(10)
    char 无论字符多大都会占用10字符空间 性能好
    varchar 低于10字符会只存储和所存储字符大小一样的空间 性能较差
    

    在这里插入图片描述

    修改
    alter table 表名 add 字段名 类型(长度) [comment 注释][约束];
    
    修改数据类型
    alter table 表名 modify 字段名 数据类型(长度);
    
    修改字段名和字段类型
    alter table 表名 change 旧字段名 新字段名 类型(长度)[comment 注释][约束];
    
    删除字段
    alter table 表名 drop 字段名;
    
    修改表名
    alter table 表名 rename to 新表名;
    
    删除表
    drop table [if exists] 表名;
    
    删除指定表,并重新创建该表
    truncate table 表名;
    
  • DML

    添加数据

    给指定字段添加数据

    insert into 表名(字段名1,字段名2,……) values(值1,值2);
    

    给全部字段添加数据

    insert into 表名 values(值1,值2,……);
    

    批量添加数据

    insert into 表名(字段名1,字段名2,……) values (值1,值2,……),(值1,值2,……),(值1,值2,……);
    
    insert into 表名 values (值1,值2,……),(值1,值2,……),(值1,值2,……);
    

    插入数据时,指定的字段顺序需要与值的顺序是一一对应的。

    字符串和日期型数据应该包含在引号中。

    插入的数据大小,应该在字段的规定范围内。

    修改数据
    update 表名 set 字段名1 = 值1, 字段名2 = 值2, ……[where 条件];
    
    删除数据
    delete from 表名[where 条件];
    

    delete语句的条件可以有也可以没有,如果没有条件,则会删除整张表的所有数据。

    delete语句不能删除某一个字段的值(可以使用update)

  • DQL

    select
    	字段列表
    from
    	表名列表
    where
    	条件列表
    group by
    	分组字段列表
    having
    	分组字段列表
    order by
    	排序字段列表
    limit
    	分页参数
    
    基本查询

    查询多个字段

    select 字段1, 字段2, 字段3…… from 表名;
    

    设置别名

    select 字段1[as 别名], 字段2[as 别名]…… from 表名;
    

    去除重复记录

    select distinct 字段列表 from 表名;
    
    where条件查询

    在这里插入图片描述

    聚合函数

    在这里插入图片描述

    select 聚合函数(字段列表) from 表名;
    

    null值不参与聚合函数运算。

    分组查询
    select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件];
    

    where 与 having 的区别

    执行时机不同:where是分组之前进行过滤,不满足where条件不进行分组,而having是分组之后对结果进行过滤。

    判断条件不同:where不能对聚合函数进行判断,而having可以。

    执行顺序:where > 聚合函数 > having

    分组之后查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。

    排序查询
    select 字段列表 from 表名 order by 字段1 排序方式1, 字段2 排序方式2……;
    

    排序方式

    asc升序 desc降序

    如果是多字段排序,当第一个字段相同时,才会根据第二个字段排序。

    分页查询
    select 字段列表 from 表名 limit 起始索引, 查询记录数;
    

    起始索引从0开始,起始索引 = (查询页码 - 1)* 每页的显示数

    如果查询的是第一页数据,起始索引可以省略,直接简写为limit 10

    执行顺序

    from -> where -> group by/having -> select -> order by -> limit

  • DCL

    查询用户
    use mysql;
    select * from user;
    
    创建用户
    create user '用户名'@'主机名' identified by '密码';
    
    修改用户密码
    alter user '用户名'@'主机名' identified with mysql_navtive_password by '新密码';
    
    删除用户
    drop user '用户名'@'主机名';
    
    权限控制

    在这里插入图片描述

    查询权限

    show grants for '用户名'@'主机名';
    

    授予权限

    grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';
    

    撤销权限

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

函数

  • 字符串函数

    在这里插入图片描述
    字符串索引从1开始。

  • 数值函数

    在这里插入图片描述

  • 日期函数

    在这里插入图片描述

  • 流程控制函数

    在这里插入图片描述

  • 约束

    在这里插入图片描述

  • 外键约束

    添加外键
    create table 表名(
    	字段名 数据类型,
      ……,
      [constraint] [外键名称] foreign key(外键字段名) references 主表(主表列名)
    );
    
    alter table 表名 add constraint 外键名称 foreign key(外键字段名) references 主表(主表列名);
    
    删除外键
    alter table 表名 drop foreign key 外键名称;
    
    删除/更新行为

    在这里插入图片描述

    alter table 表名 add constraint 外键名称 foreign key(外键字段) references 主表名(主表字段名) on update cascade on delete cascade;
    
  • 连接查询

    隐式内连接
    select 字段列表 from 表1, 表2 where 条件...;
    
    显式内连接
    select 字段列表 from 表1 [inner] join 表2 on 连接条件...;
    
    左外连接
    select 字段列表 from 表1 left [outer] join 表2 on 条件...;
    
    右外连接
    select 字段列表 from 表1 right [outer] join 表2 on 条件...;
    
    自连接
    select 字段列表 from 表A 别名A join 表A 别名B on 条件...;
    
    联合查询
    select 字段列表 from 表A...
    union [all]
    select 字段列表 from 表B...
    

    union all会把所有结果查询出来

    union会对查询结果进行去重

    子查询

    在这里插入图片描述

    列子查询

    在这里插入图片描述

事务

  • 查看/设置事务提交方式

    select @@autocommit;
    set @@autocommit = 0;
    
  • 提交事务

    commit;
    
  • 回滚事务

    rollback;
    
  • 事务隔离

    在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值