mysql
SQL分类:
DDL—数据定义语言:create
,alter
,drop
,declare
DML—数据操纵语言:select
,delete
,update
,insert
DCL—数据控制语言:grant
,revoke
,commit
,rollback
用户操作
-- 增
create user '用户名'@ '本地主机IP' identified by '密码';
-- 删
drop user '用户名'@ '本地IP';
-- 改
-- 修改用户名
rename user '用户名'@ 'IP地址' to '新用户名'@ 'IP地址';
-- 修改密码
alter user '用户名'@ 'IP地址' identified by '密码';
-- 修改权限
grant 权限 on 表名 to 用户名;
revoke 权限 on 表名 from 用户名;
flush privileges;
-- 查
show grants for 用户名;
select user from mysql.user; # 注册用户的信息存放在mysql.user表中
常见权限:
select
update
delete
alter
grant select ,insert,update on <库>.<表> to "用户名"@'主机IP';
如果是以前的MySQL版本,常使用password函数来进行修改密码
mysql> update mysql.user set password=password('123456') where user='root';
但是MySQL8之后,没有了password字段和password()函数,所以不能使用上面的修改密码的方法。
我们也还可以使用mysqladmin命令来进行修改mysqladmin -u root -p '旧密码' password '新密码'
数据库操作
# 增
create database <数据库名>;
# 删
drop database <数据库名>;
# 改
alter database <数据库名> 新的选项信息;
# 查
show databases;
# 设置当前数据库
use <数据库名>;
# 显示当前数据库名
select database();
表的操作
-- 增
create table student (
id int primary key auto_increment,
name varchar(20) not null default 'name'
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- 删
drop table <表名>;
-- 改
truncate table <表名>; #清空表数据
alter table <旧表名> rename to <新表名>; #修改表名
-- 查
show tables from <库名>; #查看所有表
show tables from <库名> like 'pattern';
表的创建需遵循三范式原则
对表列操作
-- 增
alter table <表名> add column <列名> <列数据类型> after <某一列>;
alter table <表名> add column <列名> first;
-- 删
alter table <表名> drop column <列名>;
-- 改
alter table <表名> change <原列名> <新列名> <新列数据类型>;
# 查看表结构
show columns from <表名>;
# 删除主键属性(它没有删除主键列,只是这一列不再是主键)
alter table <表名> drop primary key;
# 添加主键
alter table <表名> add column <列名> <类型> primary key;
alter table <表名> change <原列名> <新列名> <类型> primary key;
表列的属性:主键primary key,唯一索引unique,普通索引index,外键foreign key;自增auto_increment,非空not null,默认值default 0;数据类型
数据类型
整数:tinyint smallint mediumint int bigint
浮点数:float double decimal
字符串:char, varchar, text 对应 binary, varbinary, blob
时间:datetime timestamp date time year
枚举 enum 集合 set
对表行操作
# 增
insert into <表名> set <列名1> = <值1>,<列名2> = <值2>,...;
# 删
delete from <表名> where <条件>;
# 改
update <表名> set <列名1> = <值1>,<列名2> = <值2>,...
where <条件>;
# 查
select columns_name -- 查找一列或多列,多列之间用逗号隔开
from <表名> -- 目标表
where <条件> -- 过滤条件
order by columns_name -- 按列排序
limit <开始行>, <row_count>; -- 对结果进行限定,开始行表示从哪行开始,row_count表示结果行数