MySQL笔记

SQL语句的分类

DDL: 对数据库、数据表进行操作
DML:对数据表中的数据,进行增、删、改操作
DQL:对数据表中的数据,进行查询操作
DCL:对数据库、数据表进行权限管理、用户管理等操作

DDL操作

1. 对数据库进行操作

  • 创建数据库
    create database 数据库名称;
    create database if not exists 数据库名称;

  • 使用数据库

  • 选择数据库
    use 数据库名称;

  • 查看当前使用数据库
    select 数据库名称();

  • 查询数据库
    show databases;

  • 删除数据库
    drop database 数据库名称;

  • 如果存在才删除
    drop database if exists 数据库名称;

2. 数据表进行操作

  • 创建表
    create table 表名(
    字段名1 数据类型,
    字段名2 数据类型,
    … – 最后一个字段不加逗号
    );

  • 修改表名称
    alter table 表名 rename to 新表名;

  • 修改表结构
    1.修改表字段的数据类型
    alter table 表名 modify 字段名 新的数据类型;

    2.修改表字段的名称和数据类型
    alter table 表名 change 旧字段名 新字段名 新的数据类型;

    3.添加表字段
    alter table 表名 add 字段名 数据类型;

    4.删除表字段
    alter table 表名 drop 字段名;

DML操作

  • 添加数据

    给指定的字段字段数据
    insert into 表名(字段名1,字段名2…) values(值1,值2…);

    给所有字段添加数据
    insert into 表名 values(值1,值2…);

    批量添加(一次添加多条数据)
    给指定列一次添加多条数据
    insert into 表名(字段名1,字段名2…) values(值1,值2…),(值1,值2…);

    给所有列一次添加多条数据
    insert into 表名 values(值1,值2…),(值1,值2…),(值1,值2…);

  • 修改数据
    update 表名 set 字段名1=值1, 字段名2=值2 [where 条件]

  • 删除数据
    delete from 表名 [where 条件]

DQL操作

  • 基础查询

    – 查询表中所有字段的数据
    select * from 表名;

    – 查询表中指定字段的数据
    select 字段名1, 字段名2 from 表名;

  • 条件查询

    – 查询表中所有字段的数据
    select * from 表名;

    – 查询表中指定字段的数据
    select 字段名1, 字段名2 from 表名 where 条件

– where语句后跟的条件运算符

=
<
<=
=
!= 或者 <>

|| 或者 or
in(值1, 值2, 值3)

&& 或者 and 
between ... and ...

is null
is not null

not或者! 
  • 模糊查询
    "_“一个字符,”%"多个字符
    select 字段列表 from 表名 where 字段名 like “马__”
    select 字段列表 from 表名 where 字段名 like “%德%”

  • 分组查询

    – 分组查询必须和聚合函数一起使用
    select 分组字段, 聚合函数 from 表名 group by 分组字段;

    – 分组查询必须和聚合函数一起使用
    select 分组字段, 聚合函数 from 表名 [where条件] group by 分组字段 [having条件];

    –注意:[where条件] 分组之前的条件
    –注意: [having条件] 分组之后的条件

  • 排序查询

    select 字段列表 from 表名 order by 排序字段 [ASC]; – 升序
    select 字段列表 from 表名 order by 排序字段 desc; – 降序

    – 如果字段1相同,按照字段2降序排列
    select 字段列表 from 表名 order by 字段1 asc, 字段2 desc;

  • 分页查询

    – 起始索引从0开始
    – 起始索引 = (当前页-1)*每页条数
    select 字段列表 from 表名 limit 起始索引, 每页条数;

  • 多表查询
    –内连接
    –隐式内连接
    SELECT 字段列表 FROM 表1 , 表2 WHERE 条件 … ;

    –显式内连接
    SELECT 字段列表 FROM 表1 [ INNER ] JOIN 表2 ON 连接条件 … ;

    表的别名
    tablea as 别名1 , tableb as 别名2 ;
    tablea 别名1 , tableb 别名2 ;

  • 外连接
    –左外连接
    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 会对合并之后的数据去重

视图

  • 创建
    CREATE [OR REPLACE] VIEW 视图名称[(列名列表)] AS SELECT语句 [ WITH [CASCADED | LOCAL ] CHECK OPTION ];

  • 查询
    查看创建视图语句:SHOW CREATE VIEW 视图名称;
    查看视图数据:SELECT * FROM 视图名称 … ;

  • 修改
    方式一:
    CREATE [OR REPLACE] VIEW 视图名称[(列名列表)] AS SELECT语句 [ WITH[ CASCADED | LOCAL ] CHECK OPTION ];
    方式二:
    ALTER VIEW 视图名称[(列名列表)] AS SELECT语句 [ WITH [ CASCADED | LOCAL ] CHECK OPTION ];

  • 删除
    DROP VIEW [IF EXISTS] 视图名称 [,视图名称] … ;

存储过程

1.基础语法

  • 创建
    create procedure ([IN/OUT args])
    begin
    – SQL
    end;

  • 调用
    call 名称 ([ 参数 ]);

  • 查看
    SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA = ‘xxx’; – 查询指
    定数据库的存储过程及状态信息

    SHOW CREATE PROCEDURE 存储过程名称 ; – 查询某个存储过程的定义

  • 删除
    DROP PROCEDURE [ IF EXISTS ] 存储过程名称 ;

2.变量

  • 系统变量
    • 查看系统变量
      SHOW [ SESSION | GLOBAL ] VARIABLES ; – 查看所有系统变量
      SHOW [ SESSION | GLOBAL ] VARIABLES LIKE ‘…’; – 可以通过LIKE模糊匹配方
      式查找变量
      SELECT @@[SESSION | GLOBAL] 系统变量名; – 查看指定变量的值
    • 设置系统变量
      SET [ SESSION | GLOBAL ] 系统变量名 = 值 ;
      SET @@[SESSION | GLOBAL]系统变量名 = 值 ;
  • 用户定义变量
    • 赋值
      方法一
      SET @var_name = expr [, @var_name = expr] … ;
      SET @var_name := expr [, @var_name := expr] … ;

      方法二
      SELECT @var_name := expr [, @var_name := expr] … ;
      SELECT 字段名 INTO @var_name FROM 表名;

    • 使用
      SELECT @var_name ;

  • 局部变量
    • 声明
      DECLARE 变量名 变量类型 [DEFAULT … ] ;

    • 赋值
      SET 变量名 = 值 ;
      SET 变量名 := 值 ;
      SELECT 字段名 INTO 变量名 FROM 表名 … ;

触发器

  • 创建
    CREATE TRIGGER trigger_name
    BEFORE/AFTER INSERT/UPDATE/DELETE
    ON tbl_name FOR EACH ROW – 行级触发器
    BEGIN
    trigger_stmt ;
    END;
  • 查看
    SHOW TRIGGERS ;
  • 删除
    DROP TRIGGER [schema_name.]trigger_name ; – 如果没有指定 schema_name,默认为当前数
    据库 。

你可能感兴趣的:(笔记,mysql,笔记)