mysql语句速成

一、用户相关

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
LIMIT 来设定返回的记录数。
OFFSET 指定 SELECT 语句开始查询的数据偏移量。默认情况下偏移量为 0

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
触发器的程序体
触发器名字:名称
触发器时机:为 BEFORE 或者 AFTER
触发事件:为 INSERT DELETE 或者 UPDATE,( select不会触发触发器
表名:表示建立触发器的表明,就是在哪张表上建立触发器
触发器的程序体:可以是一条 SQL 语句或者是用 BEGIN END 包含的多条语句
所以可以说 MySQL 创建以下六种触发器:
BEFORE INSERT,        BEFORE DELETE,        BEFORE UPDATE
AFTER INSERT,           AFTER DELETE,            AFTER UPDATE
举例:
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 '文件路径名';
你可以通过命令选项来设置数据输出的指定格式,以下实例为导出 CSV 格式:
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';
LOCAL 关键词:表明从客户主机上按路径读取文件。如果没有,则文件在服务器上按路径读取文件
FIELDS LINES 子句的语法是一样的。两个子句都是可选的,但是如果两个同时被指定,FIELDS 子句必须出现在 LINES 子句之前。
如果用户指定一个 FIELDS 子句,它的子句( TERMINATED BY 、[OPTIONALLY] ENCLOSED BY 和 ESCAPED BY) 也是可选的,不过,用户必须至少指定它们中的一个。

不会,就多动手练

不会,就多动手练

不会,就多动手练

  • 28
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值