一、用户相关
1、创建用户
create user '用户名'@'范围' identified by '密码';
用户名 密码 不做解释;
范围:有三种
a、ip: 只能从指定地址登入
b、localhost:只能是本机
c、%:任何地址
注意事项:用户名、范围、密码都要写在''里面,@前后不要有空格
2、赋予用户权限
grant 权利 on 数据库名字.表名 to '用户名'@'范围';
权利有以下几种:
SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER,EXECUTEINDEX,REFERENCESALTER ROUTINE,CREATE ROUTINE,CREATE TEMPORARYSHOW VIEW,LOCK TABLES,ALL
数据库名字 和 表名 可以填写*表示所有
3、撤销用户权限
revoke 权利 on 数据库名字.表名 from '用户名'@'范围';
注意事项:赋予权限是 to ,撤销权限是 from
二、仓库相关
1、创建仓库
create database 数据仓库名;
注意事项:数据库名称不要使用奇怪的字符
2、指派仓库权限给用户
grant 权利 on 数据库名字.表名 to '用户名'@'范围';
3、删除库
drop database 数据仓库名;
4、切换数据库
use 数据仓库名;
三、表相关
1、创建表
create table if not exists `表名称`(
`列名称1` 数据类型 关键字列表 默认值
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
数据类型请看这一篇:
关键字如下:mysql的数据类型和C++中的数据类型-CSDN博客
AUTO INCREMENT 自动增加,只能用于整数类型列
NOT NULL 列不能为空
NULL 列可以为空
PRIMARY KEY 主键 表中主键的值是唯一的,可以用于标记和查找数据
主键的数据类型,他不能是变长的数据类型,比如TEXT,BLOB
UNSIGNED 无符号的数,只能修饰整数类型列
DEFAULT 默认值 用于指定列的默认值
UNIQUE 表示唯一,该列的要么为 NULL 要么就必须是唯一的,不可重复
ZEROFILL 0 值填充,如果没有指定该列的值,则会填入 0
2、删除表
drop table '表名称';
四、增删改查
1、增
INSERT INTO table_name ( field1, field2,...fieldN )
VALUES
( value1, value2,...valueN );
2、删
DELETE FROM table_name WHERE Clause
3、改
SELECT table_name.column_name,column_name,...
FROM table_name,table_name2,...
WHERE Clause
LIMIT N OFFSET M
4、查
UPDATE table_name
SET field1=new-value1, field2=new-value2,...
WHERE Clause
五、联合查询
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
UNION [ALL | DISTINCT]
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];
ALL:显示全部的信息
DISTINCT:去除重复的后再现式,默认是这个
SELECT 列名1,列名2, ...
FROM 表1
JOIN 表2 ON 表1.列名 = 表2.列名,....;
join又分为inner join;left join ;right join ;full join,有兴趣的话可以再去深究一下
六、索引
1、创建索引
a、普通索引
create index 索引的名字 on 表名(列名);
b、唯一索引
create UNIQUE index 索引的名字 on 表名(列名1 , 列名2 ,...);
c、复合索引
create index 索引的名字 on 表名(列名1 , 列名2 ,...);
d、主键索引
这个是在创建表的时候,定义主键的时候添加的。
e、全文索引
CREATE FULLTEXT INDEX 索引的名字 ON 表名(列名1 , 列名2, ...);
当然还有一些不常用的,大家可以自行学习:空间索引、哈希索引、位图所用等等
2、查询索引
show index from 表名;
3、丢弃索引
drop index 索引名字 on 表名;
七、事务
1、开始事务后语句都正确然后提交事务
-- 开始事务
START TRANSACTION;
-- 执行一系列SQL语句
INSERT INTO your_table (column1, column2) VALUES ('value1', 'value2');
UPDATE another_table SET column3 = 'new_value' WHERE column4 = 'condition';
DELETE FROM some_table WHERE column5 = 'another_condition';
-- 提交事务
COMMIT;
2、开始事务后语句有错误然后回滚
-- 开始事务
START TRANSACTION;
-- 执行一系列SQL语句
INSERT INTO your_table (column1, column2) VALUES ('value1', 'value2');
UPDATE another_table SET column3 = 'new_value' WHERE column4 = 'condition';
-- 发生错误或者其他原因需要回滚
ROLLBACK;
八、触发器
CREATE TRIGGER 触发器名字 触发器时机 触发器事件
ON 表名 FOR EACH ROW
触发器的程序体
CREATE TRIGGER my_trigger
AFTER INSERT ON your_table
FOR EACH ROW
BEGIN
-- 触发器的操作,可以是一系列 SQL 语句
INSERT INTO log_table (event_description) VALUES ('Data inserted');
END;
这里面的begin和end包含的部分可以被视为一个事务,确保了触发器的原子性。
九、数据备份和恢复
1、数据备份
SELECT 列名1,列名2,... FROM `表名` INTO OUTFILE '文件路径名';
SELECT 列名1,列名2,... FROM `表名`
INTO OUTFILE '文件路径名'
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\r\n';
2、数据恢复
LOAD DATA LOCAL INFILE '文件路径名' INTO TABLE 表名
FIELDS TERMINATED BY ':'
LINES TERMINATED BY '\r\n';