韩顺平_循序渐进学Java零基础_第24章 零基础学MySQL(P731 - P820)
731. 数据库的使用
732. MySQL5.7安装配置
- 删除 MySQL 服务:sc delete mysql
733. 命令行连接到MySQL
- 启动服务:net start mysql
- 关闭服务:net stop mysql
- 登录:mysql -h 主机名 -P 端口 -u 用户名 -p 密码
734. Navicat安装和使用
735. SQLyog安装和使用
736. MySQL三层结构
737. Java操作MySQL
Driver driver = new com.mysql.jdbc.Driver();
Properties properties = new Properties();
properties.setProperty("user", "userName");
properties.setProperty("password", "password");
String url = "jdbc:mysql://localhost:3306/fishing_cost";
Connection connection = driver.connect(url,properties);
Statement statement = connection.createStatement();
738. 创建数据库
CREATE DATABASE [IF NOT EXISTS] db_name [create_specification]···
[DEFAULT] CHARACTER SET char_set_name
[DEFAULT] COLLATE collation_name
739. 查询数据库
SHOW DATABASES;
SHOW CREATE DATABASE db_name
DROP DATABASE [IF EXISTS] db_name
740. 备份恢复数据库
mysqldump -u 用户名 -p -B 数据库1 数据库2 数据库n > 文件名.sql
mysqldump -u 用户名 -p 数据库 表1 表2 表n > 文件名.sql
Source 文件名.sql
741. 创建表
CREATE TABLE table_name (
field1 datatype,
field2 datatype,
fieldn datatype
) CHARACTER SET 字符集 COLLATE 校对规则 ENGINE 引擎;
- 如果表没有指定字符集、校对规则、引擎,则以数据库的设置为准
742. 列类型有哪些
数据类型 | 说明 |
---|
BIT(M) | 位类型。M 指定位数,8位一个字节,默认值是 1,范围[1,64],按二进制显示 |
TINYINT [UNSIGNED] | 占 1 个字节,带符号[-128,127],无符号[0,255],默认带符号 |
SMALLINT [UNSIGNED] | 占 2 个字节,带符号[215,215-1],无符号[0,216-1],默认带符号 |
MEDIUMINT [UNSIGNED] | 占 3 个字节,带符号[223,223-1],无符号[0,224-1],默认带符号 |
INT [UNSIGNED] | 占 4 个字节,带符号[231,231-1],无符号[0,232-1],默认带符号 |
BIGINT [UNSIGNED] | 占 8 个字节,带符号[263,263-1],无符号[0,264-1],默认带符号 |
FLOAT [UNSIGNED] | 浮点数,占 4 个字节 |
DOUBLE [UNSIGNED] | 浮点数,占 8 个字节 |
DECIMAL(M,D) [UNSIGNED] | 定点数,M 指定长度,D 指定小数点位数 |
CHAR(size) | 定长字符串,size 最大 255 个字符 |
VARCHAR(size) | 变长字符串,size 最大 65535 个字节 |
BLOB | 二进制数据,存储位数[0,216-1] |
LONGBLOB | 二进制数据,存储位数[0,232-1] |
TEXT | 文本数据,[0,216-1] |
LONGTEXT | 文本数据,[0,232-1] |
DATE | 日期类型(YYYY-MM-DD),占3个字节 |
TIME | 时间类型(HH:MM:SS),占3个字节 |
YEAR | 年,占1个字节 |
DATETIME | 日期时间类型(YYYY-MM-DD HH:mm:ss),占8个字节 |
TIMESTAMP | 时间戳,可自动记录 INSERT、UPDATE操作时间,占4个字节 |
743. 列类型之整型
744. 列类型之bit
745. 列类型值小数型
- DECIMAL(M,D):若省略 M,则默认值为 10;若省略 D,默认为 0
746. 列类型之字符串1
- CHAR(size):定长字符串,最大 255 个字符
- VARCHAR(size):变长字符串,最大 65535 个字节,实际上不能存放这么多
- Unicode编码中一个字符占 3 个字节,GBK编码中一个字符占 2 个字节
- UTF8 编码最大存放 21844 个字符,需要用 1~3 个字节用于记录字段大小即(65535字节 - 3字节)/ 3字节每字符 )
- GBK编码最大存放 32766 个字符,需要用 1~3 个字节用于记录字段大小即(65535字节 - 3字节)/ 2字节每字符 )
747. 列类型之字符串2
- CHAR(4) 数字 4 表示字符数,不管是中文还是英文都存放 4 个;VARCHAR(4) 数字 4 表示字符数,不管是字符还是中文都以定义好的表的编码来存放数据。即不管是中文还是英文字母,最多存放 4 个字符。其中VARCHAR(size) :如果编码为 UTF8,则 size 最大为 21844;如果编码是 GBK,则 size 最大为 32766。CHAR(size) 最大范围是 255 。
- CHAR(4) 所谓定长,指的是分配的空间是固定的,哪怕你只是插入了 “aa”,占用的空间也是 4 个字符的空间。
- VARCHAR(4) 所谓变长,指的是占用的空间是动态大小,即根据实际占用的空间大小进行分配。VARCHAR 本身还需要占用 1~3 个字节来存放内容长度信息。
- CHAR 的查询速度高于 VARCHAR
- 在存放文本时,也可以使用 TEXT 数据类型,可以将 TEXT 列视为 VARCHAR 列,注意 TEXT 不能有默认值。大小范围为 [0,216-1] 字节。如果希望存放更多字符,可以使用 MEDIUMTEXT[0,224-1] 或 LONGTEXT[0,232-1]
748. 日期类型
TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
749. 创建表练习
CREATE TABLE t01 (
id INT PRIMARY KEY,
name VARCHAR (32),
sex CHAR(1),
birthday DATE,
entry_date DATE,
job VARCHAR (32),
salary DOUBLE,
`resume` TEXT
) CHARSET utf8 COLLATE utf8_bin ENGINE INNODB ;
750. 修改表
ALTER TABLE `table_name` ADD column1 datatype,columnn datatype
ALTER TABLE `table_name` ADD column1 datatype AFTER column_name
ALTER TABLE `table_name` MODIFY column1 datatype,columnn datatype
ALTER TABLE `table_name` DROP column1,columnn
ALTER TABLE `table_name` CHANGE old_column_name new_column_name datatype
ALTER TABLE `table_name` CHARSET character_set_name
DESC `table_name`
RENAME TABLE old_table_name TO new_table_name
751. insert基本使用
- CRUD:create、read、update、delete
752. insert注意事项
INSERT INTO t01 VALUES (),(),()
- 如果是给表中所有字段添加数据,则可以省略字段名称
- 当不给某个字段添加值时,如果有默认值则自动添加默认值,否则报错
753. update语句
UPDATE `table_name` SET col_name = exp1,col_name = exp2 WHERE ···
754. delete语句
DELETE FROM `table_name` WHERE ···
- 使用 DELETE 语句不能删除某一列的值,可用 UPDATE 语句将该列设为 NULL
- 使用 DELETE 语句仅删除记录,不能删除表本身。如要删除表,使用 DROP TABLE table_name 语句
755. select语句1
756. select语句2
757. select语句3
表达式 | 作用 |
---|
BETWEEN···AND··· | 显示在某一区间的值,闭区间 |
IN(set) | 显示在 IN 列表中的值 |
LIKE | 模糊查询 |
NOT LIKE | 模糊查询 |
IS NULL | 是否为空 |
AND | 与 |
OR | 或 |
NOT | 非 |
758. select语句4
- ORDER BY 对指定的列进行排序,排序的列既可以是表中的列名,也可以是 SELECT 语句后指定的别名
- ASC:升序 DESC:降序
759. 统计函数
- COUNT(*) 返回满足条件的的记录的行数;COUNT(列) 统计满足条件的某列有多少个,会排除 NULL
760. 分组统计
- 使用 HAVING 子句可以对分组后的结果进行筛选
SELECT col1,col2,coln FROM `table_name` GROUP BY col_name HAVING exp
761. 字符串函数
函数名 | 作用 |
---|
CHARSET(str) | 返回字符串字符集 |
CONCAT(str1,str2···) | 连接字符串 |
INSTR(str,substr) | 返回 substr 在 str 中的出现位置,没有出现返回 0 |
UCASE(str) | 转换成大写 |
LCASE(str) | 转换成小写 |
LEFT(str,len) | 从 str 中的左边起取 len 长度个字符 |
LENGTH(str) | str 的长度,以字节为单位 |
REPLACE(str,search_str,replace_str) | 在 str 中用 replace_str 替换 search_str |
STRCMP(str1,str2) | 逐字符比较字符串大小 |
SUBSTRING(str,pos,len) | 在 str 中从pos开始取 len 个字符,pos 从1开始 |
LTRIM | 去除前端空格 |
RTRIM | 去除后端空格 |
TRIM | 去除前后端空格 |
- SUBSTRING(str,pos,len):如果省略 len,则从 pos 位置开始截取完所有字符。例如:SUBSTRING(‘SpringBear’,1,6) 从位置 1 开始截取 6 个字符,返回结果为:Spring
- DUAL 表是系统的亚元表,在无表可用的情况下可以用 DUAL 来进行测试
762. 字符串函数练习
763. 数学函数
函数名 | 功能 |
---|
ABS(num) | 绝对值函数 |
BIN(decimal_number) | 十进制转二进制 |
CEILING(num) | 向上取整,得到比 num 大的最小整数 |
CONV(num,from_base,to_base) | 进制转换,从指定的 from 进制转换到 to 进制 |
FLOOR(num) | 向下取整,得到比 num 小的最大整数 |
FORMAT(num,decimal_places) | 四舍五入保留指定的小数位数 |
HEX(num) | 转十六进制 |
LEAST(num1,num2···) | 求最小值 |
MOD(numerator,denominator) | 求余 |
RAND([seed]) | 随机数[0,1] |
764. 日期函数1
函数名 | 功能 |
---|
CURRENT_DATE() | 当前日期 |
CURRENT_TIME() | 当前时间 |
CURRENT_TIMESTAMP() | 当前时间戳 |
DATE(datetime) | 返回 datetime 的日期部分 |
DATE_ADD(date,INTERVAL d_value d_type) | 在 date上加上一个日期或时间 |
DATE_SUB(date,INTERVAL d_value d_type) | 在 date 上减去一个时间 |
DATEDIFF(date1,date2) | 日期差,结果是天 |
TIMEDIFF(time1,time2) | 时间差,结果是时分秒 |
NOW() | 当前时间,年月日时分秒 |
YEAR(datetime) | 年 |
MONTH(datetime) | 月 |
UNIX_TIMESTAMP() | 返回 1970-1-1 到当前时间的秒数 |
FROM_UNIXTIME() | 将一个秒数转换成指定格式,例如年月日 |
765. 日期函数2
- DATE_ADD() 、DATE_SUB() 函数中的 date 可以是 date、datetime、timestamp,d_type 可以是年月日时分秒
766. 日期函数3
SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(),'%Y-%m-%d %H:%i:%s') FROM DUAL
767. 加密函数
SELECT USER() FROM DUAL
SELECT DATABASE() FROM DUAL
SELECT MD5(str) FROM DUAL
SELECT PASSWORD(str) FROM DUAL
SELECT * FROM 'db_name'.user
768. 流程控制函数
IF(exp1,exp2,exp3)
IFNULL(exp1,exp2)
SELECT CASE WHEN exp1 THEN exp2 WHEN exp3 THEN exp4 ELSE exp5 END;
- 判断是否为空不使用 = NULL,使用 IS NULL
769. 查询增强
770. 分页查询
- SELECT ··· LIMIT start, rows 从 start + 1 行开始,取出 rows 行,start 从 0 开始计算
771. 分组增强
772. 多子句查询
SELECT col1,col2,coln
FROM table_name
GROUP BY col
HAVING `condition`
ORDER BY col
LIMIT `start`, `rows`
773. 多表笛卡尔集
- 多表查询的条件不能少于表的个数 -1,否则会出现笛卡尔集
774. 多表查询
775. 自连接
SELECT * FROM `table_name` alias1, `table_name` alias2
776. 多行子查询
- 子查询是指嵌入在其它 SQL 语句中的 SELECT 语句,也叫嵌套查询。
- 单行子查询:只返回一行数据的子查询语句
- 多行子查询:返回多行数据的子查询,使用关键字 IN 进行连接
777. 子查询临时表
778. all和any
779. 多列子查询
SELECT ··· WHERE (字段1,字段2···) = (SELECT 字段1,字段2 FROM ···)
780. 子查询练习
- table_name.* 表是把该表的所有列信息都显示出来
781. 表复制和去重
- 自我复制也称蠕虫复制,为了对某条 SQL 语句进行效率测试,当我们需要海量数据时,可以进行蠕虫复制。
INSERT INTO `table_name` (field1,field2···) SELECT field1,field2 FROM `table_name`
CREATE TABLE `table_name` LIKE `table`
- 去除表中的重复记录:创建一张与原表结构相同的表,从原表中将记录去重后插入到临时表,清除原表中的所有记录,再将临时表中的记录插入到原表,删除临时表
782. 合并查询
- 为了合并多个 SELECT 语句的结果,可以使用集合操作符号 UNION,UNION ALL
- UNION ALL 操作符用于取得两个结果集的并集,不会去除重复行,UNION会自动去重
783. 外连接需求
784. 左外连右外连
- 左外连接:左侧的表完全显示;
- 右外连接:右侧的表完全显示
- 用 ON 关键字进行条件过滤
SELECT ··· FROM table1 LEFT JOIN table2 ON condition1
SELECT ··· FROM table1 RIGHT JOIN table2 ON condition1
785. 主键
- 约束:确保数据库的数据满足特定的规则
- MySQL 中的约束条件共有 5 个:NOT NULL、UNIQUE、PRIMARY KEY、FOREIGN KEY、CHECK
- 主键不能重复且不能为空,一张表中最多有一个主键,可以是复合主键(多个字段构成主键)
786. unique
- 当指定过滤 UNIQUE 约束后,该列值是不能重复的。如果没有指定 NOT NULL,则 UNIQUE 字段可以有多个 NULL
787. 外键介绍
- 外键:用于定义主表和从表之间的关系:外键约束要定义在从表上,主表则必须具有主键约束或是 UNIQUE 约束,当定义了外键约束后,要求外键列数据必须在主表的主键列存在或是为 NULL
FOREIGN KEY (本表字段名) REFERENCES 主表名(主键名或UNIQUE字段名)
788. 外键使用细节
- 表的引擎为 INNODB,这样的表才支持外键
- 外键字段的类型要和主键字段的类型一致
- 外键字段的值,必须在主键字段中出现过或是为 NULL,前提是外键字段允许为 NULL
- 一旦建立了主外键关系,数据的删除原则应遵循先删外键所在从表的记录,才能删除主表中对应的记录
789. check
- MySQL5.7 目前还不支持 check,只做语法校验,但不会生效。在 MySQL 中实现 check 的功能,一般是在程序中控制或是通过触发器完成
790. 商店表设计
sex ENUM('男','女') NOT NULL
791. 自增长
INSERT INTO `table_name` (字段1,字段2,···) VALUES (NULL,值2,···)
INSERT INTO `table_name` (字段2,字段3,···) VALUES (值2,值3,···)
INSERT INTO `table_name` VALUES (NULL,值2,值3,···)
- 一般来说自增长是和主键配合使用的,也可以单独使用但需要配合一个 UNIQUE,一般情况只用于整数
ALTER TABLE `table_name` AUTO_INCREMENT = digit
- 如果添加数据过程中存在指定的自增长值,则下一条记录从指定值之后开始自增
792. 索引优化速度
CREATE INDEX `index_name` ON `table_name`(fidld_name)
793. 索引机制
- 索引的代价:1. 磁盘空间占用; 2. 对 DML(update,delete,insert) 语句的效率影响,因为会重新构建索引所需数据结构
- 没有创建索引查询时会进行全表扫描,创建索引之后会使用创建的数据结构进行查询,查询效率明显提高
794. 创建索引
- 主键索引:主键自动为主索引
- 唯一索引:UNIQUE
- 普通索引:INDEX
- 全文索引:FULLTEXT,适用于 MyISAM
- 在开发中一般不使用 MySQL 自带的索引,考虑使用全文搜索框架 Solr 和 ElasticSearch
SHOW INDEXES FROM `table_name`
CREATE [UNIQUE] INDEX index_name ON `table_name` (col_name)
ALTER TABLE `table_name` ADD INDEX [index_name] (index_col_name)
ALTER TABLE `table_name` PRIMARY KEY (col_name)
- 索引选择:如果某列保证不可能重复,则优先考虑唯一索引
- 如果在建表语句中指定了 PRIMARY KEY 或 UNIQUE,则会自动创建索引;若没有指定,则可以在建表完成后通过添加索引语句创建索引
795. 删除索引
DROP INDEX index_name ON `table_name`
ALTER TABLE `table_name` DROP PRIMARY KEY
796. 创建索引规则
- 较频繁的作为查询添加的字段应该创建索引
- 唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件
- 更新非常频繁的字段不适合创建索引
797. 事务有什么用
- 事务:用于保证数据的一致性,它由一组相关的 DML 语句组成,该组的 DML 语句要么全部成功,要么全部失败
- 事务和锁:当执行事务操作时( DML 语句),MySQL 会在表上加锁,防止其它用户改表的数据
start transaction
savepoint point_name
rollback to point_name
rollback
commit
798. 事务操作
799. 事务注意事项
- 如果不开启事务,默认情况下,DML 操作是自动提交的,不能回滚
- MySQL 的事务机制需要 INNODB 的存储引擎,MyISAM 不可用
start transaction
set autocommit = off
800. 4种隔离级别
- 事务隔离级别:多个连接开启各自事务操作数据库中的数据时,DBMS 要负责隔离操作,以保证各个连接在获取数据时的准确性,如果不考虑隔离性,可能会引发如下问题:脏读、不可重复读、幻读
- 脏读(dirty read):当一个事务读取到另一个事务尚未提交的操作时产生脏读
- 不可重复读(nonrepeatable read):同一查询在同一事务中多次进行,由于提交事务所做的修改或删除,每次返回不同的结果集,此时发生不可重复读
- 幻读(phantom read):同一查询在同一事务中多次进行,由于提交事务所做的插入操作,每次返回不同的结果集,此时发生幻读
问题 | 描述 |
---|
脏读(dirty read) | 一个事务读取到另一个事务尚未提交的操作 |
不可重复读(nonrepeatable read) | 一个事务读取到另一个事务已提交的删除或修改操作 |
幻读(phantom read) | 一个事务读取到另一个事务已提交的插入操作 |
- 事务隔离级别:MySQL 隔离级别定义了事务与事务之间的隔离程度
MySQL隔离级别 | 脏读 | 不可重复读 | 幻读 | 加锁读 |
---|
读未提交(read uncommintted) | Y | Y | Y | N |
读已提交(read committed) | N | Y | Y | N |
可重复读(repeatable read) | N | N | N | N |
可串行化(serializable) | N | N | N | Y |
- Y:可能出现 N:不出现 | | | | |
- 加锁:有且仅有一个事务正在处理数据 | | | | |
801. 隔离级别演示1
802. 隔离级别演示2
- 可串行化:有一张表正在被另一个事务操作没有提交时,当前事务会停下等待,直到另一个事务提交操作时当前事务才可继续操作
803. 设置隔离
SELECT @@tx_isolation
SELECT @@global.tx_isolation
SET SESSION TRANSACTION ISOLATION LEVEL isolation_name
SET GLOBAL SESSION TRANSACTION ISOLATION LEVEL isolation_name
- MySQL 默认的事务隔离级别是 REPEATABLE READ,没有特殊情况一般不修改
- MySQL 事务的 ACID 特性
名称 | 描述 |
---|
原子性(atomicity) | 事务是一个不可分割的工作单位,要么都发生,要么都失败 |
一致性(consistency) | 事务保证数据库从一个一致性状态转换到另一个一致性状态 |
隔离性(isolation) | 多个并发事务之间根据隔离级别不同相互隔离 |
持久性(durability) | 事务一旦提交,对数据的改变就是永久性的 |
804. 存储引擎1
- MySQL的表类型由存储引擎决定,常用的是 InnoDB、MyISAM、Memory
- MySQL数据表主要支持六种类型,分别是:InnoDB、MyISAM、Memory、CSV、Archive、MRG_MyISAM
- 六种类型又分为两类:事务安全型 (transaction-safe) 和非事务安全型 (non-transaction-safe)。除了 InnoDB 是事务安全型,其余的都是非事务安全型(不支持事务)
SHOW ENGINES
特点 | InnoDB | MyISAM | Memory | Archive |
---|
批量插入速度 | 低 | 高 | 高 | 非常高 |
事务安全 | 支持 | | | |
全文索引 | | 支持 | | |
锁机制 | 行锁 | 表锁 | 表锁 | 行锁 |
存储限制 | 64TB | 无限制 | 有限制 | 无限制 |
B树索引 | 支持 | 支持 | 支持 | |
哈希索引 | 支持 | | 支持 | |
集群索引 | 支持 | | | |
数据缓存 | 支持 | | 支持 | |
索引缓存 | 支持 | 支持 | 支持 | |
数据可压缩 | | 支持 | | 支持 |
空间使用 | 高 | 低 | | 非常低 |
内存使用 | 高 | 低 | 中等 | 低 |
支持外键 | 支持 | | | |
- MyISAM 不支持事务,不支持外键,但其访问速度快,对事务完整性没有要求
- InnoDB 提供了具有提交、回滚和崩溃恢复能力的事务安全。但是比起 MyISAM 存储引擎,InnoDB 写入数据的处理效率相对较低并且会占用更多的磁盘空间以保留数据和索引
- Memory 存储引擎使用内存来创建表。每个 Memory 表实际上值对应一个磁盘文件。表访问速度非常快,因为它的数据存放于内存中,并且默认使用 Hash 索引。一旦 MySQL 服务关闭,表中所有数据都会丢失,但表的结构仍然存在
805. 存储引擎2
- 存储引擎的选择:如果不需要事务操作,只是处理基本的 CRUD 操作,MyISAM 是不二之选;如果需要支持事务,InnoDB 非选不可;Memory 经典用法:用户的在线状态
ALTER TABLE `table_name` ENGINE = engine_name
806. 视图原理
- 视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含列,其数据映射自对应的真实表(基表)
- 基表与视图的修改会相互影响,视图中的数据并不物理保存,视图只是映射基表中的数据
807. 视图使用细节
CREATE VIEW view_name AS SELECT field1··· FROM `table_name`
ALTER VIEW view_name AS SELECT field1··· FROM `table_name`
SHOW CREATE VIEW view_name
DROP VIEW view_name
- 创建视图后,磁盘中只会存在一个视图结构文件,不存在数据存储文件,因为视图中的数据映射自基表
- 视图中可以再创建视图
808. 视图应用案例
- 视图应用最佳实践:
- 安全:创建视图让用户只能通过视图查询到表中部分字段的数据,隐藏保密字段
- 性能:关系数据库的数据常常会分表存储,使用外键维护这些表之间的关系。查询时难免用到连接(JOIN)。这样做不仅麻烦,效率也比较低。如果建立视图,将相关的表和字段组合在视图中,就可以避免使用 JOIN 查询数据
- 灵活:如果系统中有一些旧的表,这些表由于设计的问题,即将被废弃。然而,很多应用都依赖于这些表,不易修改。这时就可以建立一张视图,视图中的数据映射到这些表。这样,就可以少做很多改动,也达到了升级数据表的目的
809. MySQL用户管理
- MySQL中的用户,都存储在系统数据库 mysql 中的 user 表中
- user 表字段说明:Host:允许登录的位置
CREATE USER user_name @ip_addr IDENTIFIED BY pwd
DROP user_name @ip_addr
SET PASSWORD = PASSWORD(pwd)
SET PASSWORD FOR user_name @ip_addr = PASSWORD(new_pwd)
810. MySQL权限管理
权限 | 内容 |
---|
ALL | 设置除 GRANT OPTION 之外的所有简单权限 |
ALTER | ALTER TABLE |
ALTER ROUTINE | 更改或取消已存储的子程序 |
CREATE | CREATE TABLE |
CREATE ROUTINE | 允许已存储的子程序 |
CREATE TEMPORARY TABLES | CREATE TEMPORARY TABLES |
CREATE USER | CREATE USER、DROP USER、RENAME USER、REVOKE ALL PRIVILEGES |
CREATE VIEW | CREATE VIEW |
DELETE | DELETE |
DROP | DROP TABLE |
EXECUTE | 语序用户运行已存储的子程序 |
FILE | SELECT···INTO OUTFILE、LOAD DATA INFILE |
INDEX | CREATE INDEX、DROP INDEX |
INSERT | INSERT |
LOCK TABLES | 对拥有 SELECT 权限的表使用 LOCK TABLES |
PROCESS | SHOW ALL PROCESSLIST |
REFERENCES | 未被实施 |
RELOAD | FLUSH |
REPLICATION CLIENT | 允许用户询问从属服务器或主服务器的地址 |
SELECT | SELECT |
SHOW DATABASES | SHOW DATABASES |
SHOW VIEW | SHOW CREATE VIEW |
SHUTDOWN | 允许使用 mysqladmin shutdown |
SUPER | CHANGE MASTER、KILL、PURGE MASTER LOGS、SET GLOBAL、mysqladmin debug;允许您连接(一次),即使已达到max_connections |
UPDATE | UPDATE |
USAGE | 无权限 |
GRANT OPTION | 允许授予权限 |
GRANT 权限列表 ON 库.对象 TO 用户名 @登录位置 [IDENTIFIED BY pwd]
GRANT SELECT,DELETE··· ON ···
第24章 零基础学MySQL 章节练习题
学习笔记导航
学习笔记导航
学习笔记导航
零基础学Python--------第11章 使用Python操作数据库
韩顺平循序渐进学Java零基础 第12章 异常