// DDL语句
// 查询所有数据库
// show databases;
show databases;
// 查询当前数据库
// select database();
select database();
// 创建数据库
// create database [if not exists] 数据库名 [default charset 字符集] [collate 排序规则];
create database [if not exists] name;
// 删除数据库
// drop database [if exists] name;
drop database [if exists] name;
// 使用
// use 数据库名;
use name;
// 查询当前数据库的所有表
// show tables;
show tables;
// 查询表结构
// desc 表名;
desc name;
// 查询指定表的建表语句
// show create table 表名
show create table name;
// 创建数据库表
// create table 表名 (
// 字段1 字段1类型 [comment 字段1注释],
// 字段2 字段2类型 [comment 字段2注释]
// )[comment 表注释];
create table user (
name varchar(255) [comment '姓名'],
id char(10) [comment 'id号']
)[comment '用户表'];
// 添加字段
// alter table 表名 add 字段名 类型(长度) [comment 注释] [约束];
alter table user add number char(12) [comment '电话号码'];
// 修改字段名和字段类型
// alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释] [约束];
alter table user change number num varchar(12) [comment '新电话号码'];
// 删除字段
// alter table 表名 drop 字段名;
alter table user drop num;
// 修改表名
// alter table 表名 rename to 新表名;
alter table user rename to new_user;
// 删除表
// drop table [if exists] 表名;
drop table [if exits] user;
// 删除指定表并重新创建该表
// truncate table 表名;
truncate table user;
// ---------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------
// DML语句
// 给指定字段添加数据
// insert into 表名 [(字段1,字段2,.....)] values(值1,值2,....);
insert into user values('小明', '123');
// 批量添加数据
// insert into 表名 [(字段1,字段2,...)] values(值1,值2,...), (值1,值2,...), (值1,值2,...);
insert into user values('小明', '111'), ('小美', '222'), ('小壮', '333');
// 删除数据
// delete from 表名 [where 条件]
delete from user [where name = '小明'];
// 修改数据
// update 表名 set 字段1 = val1 where 条件;
update user set name = 'marry' where id = 1;
// ---------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------
// DQL语句
// 查询多个字段
// select 字段1, 字段2, ... from 表名;
select name, id from user;
select * from user;
// 设置查询多个字段的别名
// select 字段1[as 别名1], 字段2[as 别名2] ... from 表名;
select name(as '姓名'), id(as 'id号') from user;
// 对于查询的字段去重
// select distinct 字段列表 from 表名;
select distinct name from user;
// 条件查询
// select 字段列表 from 表名 where 条件列表;
// > ...
// >= ...
// < ...
// <= ...
// == ...
// <>或!= 不等于
// between ... and ... 在某个范围之间(包含最大最小值)
// in(...)多重or
// like 模糊匹配'_' '%';
// is null
select * from user where name = '小明';
// 聚合函数
// count 统计数量
// max ...
// min ...
// avg 平均值
// sum 求和
select count(*) from user;
// 分组查询
// select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件];
select gender, count() from user group by gender;
select age, count() from user group by gender having age > 25;
// 排序查询
// select 字段列表 from 表名 order by 字段1 排序方式1, 字段2 排序方式2, ...;
// asc 升序排序
// desc 降序排序
select name, gender from user order by ageder asc;
// 分页查询
// select 字段列表 from 表名 limit 起始索引, 查询记录数;
select name, id from user limit 0, 10;
// ---------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------
// DCL语句
// 查询用户
// use 数据库名;
// select * from user;
// 因为数据库用户信息都存在user表中,以mysql这个数据库为例
// 创建用户
// create user '用户名@主机名' identified by '密码';
// 主机名设为localhost表示只能在当前主机上访问该数据库
// 主机名设为%表示可以在任意主机访问该数据库
create user 'itcast@localhost' identified by '123456';
// 修改用户密码
// alter user '用户名@主机名' identified with mysql_native_password by '新密码';
alter user 'itcast@localhost' identified with mysql_native_password by '123';
// 删除用户
// drop user '用户名@主机名';
drop user 'itcast@localhost';
// 权限控制
// all 所有权限
// select 查询数据
// insert 插入数据
// update 修改数据
// delete 删除数据
// alter 修改表
// drop 删除数据库/表/视图
// create 创建数据库/表
// 查询权限
// show grants for '用户名'@'主机名';
show grants for 'root'@'localhost';
// 授予权限
// 多个权限之间,使用逗号分隔
// 授权时,数据库名和表名可以使用*进行通配,代表所有
// grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';
grant all on test.user to 'itcast'@'localhost';
// 撤销权限
// remove 权限列表 on 数据库名.表名 to '用户名'@'主机名';
remove all on test.user to 'itcast'@'localhost';