MySQL 简洁速查手册

    技术2022-07-10  136

    MySQL 速查手册

    文章目录

    MySQL 速查手册1. 开启/关闭数据库2. 数据库操作3. 数据表操作4. 字段操作5. 数据操作6. 运算符7. 高级查询(group by、having、order by、limit)8. 高级插入9. 高级删除10. 高级更新11. 联合查询12. 连接查询12.1 左外连接12.2 右外连接 13. 子查询13.1 有关子查询的特定关键字

    1. 开启/关闭数据库

    开启关闭服务

    手动开启本地服务命令行开启net start mysql net stop mysql

    客户端连接

    mysql [-h主机名] [-P端口号] -u用户名 -p密码

    2. 数据库操作

    查看所有数据库

    show databases;

    创建数据库

    create database 数据库名 [charset 字符集] [collate 校对规则];

    查看数据库创建语句

    show create database 数据库名;

    删除数据库

    drop database 数据库名;

    修改数据库

    alter database 数据库名 charset 字符集 [collate 校对规则];

    使用数据库

    use 数据库名;

    3. 数据表操作

    创建数据表

    create table 表名( 字段1, 字段2... )[charset 字符集] [engine 表类型];

    查看所有数据表

    show tables;

    查看数据表结构

    desc 表名;

    查看表创建语句

    show create table 表名;

    删除数据表

    drop table 表名;

    修改表名

    alter table 表名 rename 新表名;

    修改表字符集

    alter table 表名 charset 字符集;

    4. 字段操作

    添加字段

    alter table 表名 add 字段名 字段类型 [字段属性] [after 某字段名 或 first];

    修改字段

    alter table 表名 change 旧字段名 新字段名 字段类型 [字段属性...]; -- 不修改字段名且只修改其它信息,则可以使用: alter table 表名 modify 字段名 字段类型 [字段属性...];

    删除字段

    alter table 表名 drop 字段名;

    5. 数据操作

    插入数据

    insert into 表名(字段名1,字段名2, ... ) values(数据1, 数据2, ...); -- 简写: insert into 表名 values(数据1, 数据2, ...);

    查询数据

    select * from 表名;

    删除数据

    delete from 表名 [where];

    修改数据

    update 表名 set 字段名 = 值 [where];

    6. 运算符

    distinct(消除重复行)

    select distinct 字段 from 表名;

    like(模糊查询运算符)

    -- 查询“吴”字开头,后面无所谓。 字段 like '吴%'; -- 查询“李”字开头,后面占两个字符 字段 like '吴__';

    between and(范围限定符)

    between 起始范围 and 结束范围;

    in(包含运算符)

    in(数据1, 数据2...);

    is(判空运算符)

    用于判断一个字段中的是“是否存在”(即有没有),只有两个写法 where 字段 is not null; where 字段 is null;

    7. 高级查询(group by、having、order by、limit)

    group by子句

    含义: 表示对所取得的数据,以所给定的字段来进行分组。 最后的结果就是将数据分成了若干组,每组作为一个“整体”成为一行数据。特别注意: 分组之后,只有“组信息” ,一行就是一组group by了之后通常只有两种情况: 分组本身的字段信息.一组的综合统计信息. group by 字段1, 字段2...

    having子句

    含义:having其实是相当于分组之后“有若干行数据”,然后对这些行再筛选。 having 筛选条件;

    order by子句

    含义:对数据进行排序,asc(正序), desc(倒序) order by 字段 [asc 或 desc];

    limit子句

    含义:某行开始取多少行数据。用于分页查询。 limit 起始行号,行数; MySQL5另一种写法 limit 行数 offset 起始行号;

    8. 高级插入

    同时插入

    insert into 表名 (字段1, 字段2...) values (数据1, 数据2...), ... (数据1, 数据2...);

    set插入

    insert into 表名 set 字段1 = 值, 字段2 = 值 ... ;

    蠕虫复制

    含义:用于压力测试。 -- 将查询的结果插入到指定表中 insert into 表名1 (字段1, 字段2...) select 字段1, 字段2... from 表名2; -- 蠕虫复制,也就是查询本身,然后再将数据插入到本身。 insert into 表名 select * from 表名;

    主键冲突

    方案1: 忽略; 终止插入,数据不变; insert ignore into 表名 values (数据1, 数据2...); 方案2: 替换; 删除原纪录,插入新纪录; replace into 表名 values (数据1, 数据2...); 方案3: 更新; 更新原有的数据 insert into 表名 values (数据1, 数据2...) on duplicate key update XX字段=新的值 ... ;

    9. 高级删除

    按指定顺序删除指定数量的数据

    delete from 表名 where ... [order by 字段名, ...] [limit 数量n];

    truncate清空

    含义:表示清空指定表中的所有数据并将表恢复到“初始状态”(就类似刚刚创建一样)对比“delete from 表名”,这个不会恢复“初始状态”。 truncate 表名;

    10. 高级更新

    update 表名 set 字段名1 = 字段值1 ... where ... [order by 字段名, ...] [limit 数量n];

    11. 联合查询

    含义:联合查询是指将2个或2个以上的字段数量相同的查询结果,“纵向堆叠”后合并为一个结果。 select查询1 union [all或distinct] select查询2 union [all或distinct] select查询3 ... [order by 字段 [asc或desc] ] [limit 起始行号,数量]; 注意: 查询表的字段的列数需要一致(名字可以不同)。查询表的字段类需要一致。最后的查询结果的列名是第一张表的列名。order by 和 limit 是对联合之后的结果进行排序和数量限定的。order by 排序的字段应该要使用第一张表的列名。

    12. 连接查询

    连接(join)查询是将两个查询的结果以“横向对接”的方式合并起来的结果。

    笛卡尔积

    from 表1 [cross] join 表2; 还有一种写法:from 表1, 表2;

    内连接

    from 表1 [inner] join 表2 on 连接条件;

    外连接

    12.1 左外连接
    from 表1 left [outer] join 表2 on 连接条件 特点与注意: 左外连接其实是保证左边表的数据都能够取出的一种连接。左外连接其实是在内连接的基础上,再加上左边表中所有不能满足条件的数据关键字“outer”可以省略。
    12.2 右外连接
    from 表1 right [outer] join 表2 on 连接条件 特点与注意: 右外连接其实是保证右边表的数据都能够取出的一种连接。右外连接其实是在内连接的基础上,再加上右边表中所有不能满足条件的数据。关键字“outer”可以省略。

    自连接

    含义:自连接不是一种新的连接,只是一个表“自己跟自己连接”。 from 表1 as a [连接形式] join 表1 as b on a.字段1 = b.字段2; 特点与注意: 自连接其实还是两个表连接,只是将一个表用不同的别名,当做两个表。自连接适用于一个表中的某个字段的值“来源于”当前表的另一个字段的情况。

    13. 子查询

    含义:子查询就是指一个“正常查询语句”中的某个部分(比如select部分,from部分, where部分)又出现了查询的一种查询形式此时,子查询所在上“上层查询”,就被称为主查询。

    标量子查询

    含义:标量子查询就是指子查询的结果是“单个值”(一行一列)的查询。

    列子查询

    含义:列子查询查出的结果为“一列数据”通常用来代替in运算符

    行子查询

    含义:行子查询查出的结果通常是一行使用: 行子查询的结果通常跟“行构造符”一起,在where条件子句中做为条件数据,类似这样: where [row](字段1, 字段2 ) = (行子查询);

    表子查询

    含义: 当一个子查询查出的结果是“多行多列”的时候,就是表子查询。 表子查询的结果相当于一个表,可以直接当做一个表来使用。使用: 表子查询通常用在主查询的from子句中,作为一个“数据源”。注意: 需要给该子查询设置一个别名,类似这样: from (select … 子查询 ) as tab1

    exists子查询

    含义: 该子查询如果“有数据”, 则该exists()的结果为“true”, 即相当于 where true (恒真) 该子查询如果“没有数据”,则该exists()的结果为“false”,即相当于where false(恒假) where exists(任何子查询); 特点与注意: 此子查询语句通常需要用到主查询语句中的字段作为查询条件。有意义exists子查询不能单独执行之前的4种子查询都可以单独执行

    13.1 有关子查询的特定关键字

    any关键字

    包含任意一个

    all关键字

    全部包含 还有视图、事务、变量、存储过程等内容,后面看情况补上...
    Processed: 0.011, SQL: 9