MYSQL不用区分大小写,但在一些关键字尽量大写以便观看
MYSQL所有操作的最后都需要添加 ; 才可运行程序, ; 是英文输入法的
通用语法及分类
DDL、DML、DQL、DCL
DDL:定义数据库对象(数据库、表、字段)
数据库操作
查询所有数据库:
show databases;
查询当前数据库:
select database();
创建数据库:
create database[IF NOT EXISTS] 数据库名称[DEFAULT CHARSET字符集][COLLECT 排序规则];
删除数据库:
drop database[IF EXISTS]数据库名称;
使用数据库:
use 数据库名称;
表操作
查询当前数据库所有表:
show tables;
查询表结构:
desc 表名;
查询指定表的建表语句:
show create table 表名;
创建表
create table(
字段1 类型[comment 注释],
字段2 类型[comment 注释],
字段3 类型[comment 注释],
…
字段 n 类型[comment 注释]
)comment 表注释;
添加字段
alter table 表名 add 字段 类型(长度) [comment 注释] [约束];
修改数据类型
alter table 表名 modify 字段 新数据类型(长度);
删除字段
alter table 表名 drop 字段;
修改表名
alter table 表名 rename to 新表名;
删除表
drop table [IF EXISTS] 表名;
删除表并重新创建该表
turncate table 表名;
由于在控制台操作繁琐,效率不是高,可以从SQL,navicat,datagrip三款软件中选取一款进行操作(本人后续操作实在datagrip中进行,网上均有教程可自行挑选)
DML: 对数据库表中的数据进行增删改
添加数据
指定字段:
insert into 表名 (字段1,字段2,...) vaules (值1,值2,...);
全部字段:
insert into 表名 vaules (值1,值2,...);
批量添加数据:
insert into 表名 (字段1,字段2,...) vaules (值1,值2,...),(值1,值2,...);
insert into 表名 vaules (值1,值2,...),(值1,值2,...);
多个数据之间用英文输入法的 , 分割; 在mysql中 * 代表所有,后续会经常用到
修改和删除数据
修改数据:
update 表名 set 字段1=值1,字段2=值2,...[where 条件];
删除数据:
delect from 表名 [where 条件];
DQL:用来查询数据库中表的记录
语法
select
字段
from
表名
where
条件
group by
字段
having
条件
order by
字段 排序方法
limit
参数
基础查询
查询多个字段:
select 字段1, 字段2, 字段3, ... from 表名;
select * from 表名;
设置别名:
select 字段1 [ as 别名1 ], 字段2 [ as 别名2 ], 字段3 [ as 别名3 ], ... from 表名;
select 字段1 [ 别名1 ], 字段2 [ 别名2 ], 字段3 [ 别名3 ], ... from 表名;
去除重复记录:
select distinct 字段 from 表名;
条件查询
语法:
select 字段 from 表名 where 条件;
数据类型:主要有3类,数值类型、字符串类型、日期时间类型。
比较运算符 | 功能 |
---|---|
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
= | 等于 |
<> 或 != | 不等于 |
BETWEEN … AND … | 在某个范围内(含最小、最大值) |
IN(…) | 在in之后的列表中的值,多选一 |
LIKE 占位符 | 模糊匹配(_匹配单个字符,%匹配任意个字符) |
IS NULL | 是NULL |
逻辑运算符 | 功能 |
---|---|
AND 或 && | 并且(多个条件同时成立) |
OR 或 || | 或者(多个条件任意一个成立) |
NOT 或 ! | 非,不是 |
聚合查询
常见的聚合函数:
函数 | 功能 |
---|---|
count | 统计数量 |
max | 最大值 |
min | 最小值 |
avg | 平均值 |
sum | 求和 |
语法:
select 聚合函数(字段) from 表名;
分组查询
语法:
select 字段 from 表名 [where 条件] group by 字段 [ having 分组后的条件 ];
where和having的区别:若未满足where分组条件,则不执行having分组条件;
where不可对聚合函数进行判断,而having可以
排序查询
语法:
select 字段 from 表名 order by 字段1 排序方式1, 字段2 排序方式2;
排序方式:
asc:升序(默认) desc:降序
分页查询
语法:
select 字段 from 表名 limit 起始索引, 查询记录数;
起始索引 = (页码-1)*记录数
若查询第一页,则可写为limit 记录数;
DQL的编写和执行顺序
-- 编写顺序 select 字段 from 表名 where 条件 group by 字段 having 条件 order by 字段 排序方法 limit 参数
-- 执行顺序 from 表名 where 条件 group by 字段 having 条件 select 字段 order by 字段 排序方法 limit 参数
DCL:用来创建数据库用户、控制数据库的控制权限
管理用户
查询用户:
use mysql;
select * from user;
创建用户:
create user '用户名'@'主机名' identified by '密码';
修改用户密码:
alter user '用户名'@'主机名' identified with mysql_native_password by'新密码';
删除用户:
drop user '用户名'@'主机名';
权限控制
常用权限:
权限 | 说明 |
---|---|
ALL, ALL PRIVILEGES | 所有权限 |
SELECT | 查询数据 |
INSERT | 插入数据 |
UPDATE | 修改数据 |
DELETE | 删除数据 |
ALTER | 修改表 |
DROP | 删除数据库/表/视图 |
CREATE | 创建数据库/表 |
查询用户:
show grants for '用户名'@'主机名';
授予权限:
grant 权限 on 数据库.表名 to '用户名'@'主机名';
撤销权限:
revoke 权限 on 数据库.表名 from '用户名'@'主机名';