mysql实操总结(进阶篇-下)

进阶篇--SQL语句语法详解
1)数据定义语句:
1.1.ALTER DATABASE:用于更改数据库的全局特性
1.2.ALTER TABLE:用于更改表的结构
1.3.CREATE DATABASE:用于创建数据库,并进行命名
1.4.CREATE INDEX:新增索引
mysql > CREATE INDEX part_of_name ON customer (name(10));
1.5.CREATE TABLE:创建TABLE
1.5.1.复制TABLE:
mysql > CREATE TABLE new_tb1 LIKE orig_tb1;
1.5.2.完全克隆一张表的内容及结构:
mysql > CREATE TABLE new_tb1 SELECT * FROM orig_tb1;
1.6.DROP DATABASE:删除数据库
1.7.DROP INDEX:删除索引
mysql > DROP INDEX index_name ON tb1_name;
1.8.DROP TABLE:移除一个或多个表
1.9.RENAME TABLE:对一个或多个表进行重命名

2)数据操作语句:
2.1.DELETE 语句
如果DELETE语句中含有ORDER BY子句,则按照子句中指定的顺序删除,再结合LIMIT语句会非常好。
mysql > DELETE FROM someling WHERE user='Jcole' ORDER BY timestamp_colum LIMIT 1;
2.2.Do语句:Do expr [, expr] ...
2.3.HANDLER语法:提供了通往表存储引擎接口的直接通道。可以用于MyISAM和ImoDB表。
2.4.INSERT语法:用于向一个已有的表中插入新行:
mysql > INSERT INTO tab1_name (a, b, c) VALUES (1, 2, 3);
2.5.LOAD DATA INFILE语法:从一个文本文件中读取行
mysql > LOAD DATA INFILE '文件路径/文件名' INTO TABLE 表名字;
2.6.REPLACE语法
2.7.SELECT语法
2.8.JOIN语法
2.9.UNION语法:用于把来自多个SELECT语句的结果组合到一个结果集中
SELECT...
UNION
SELECT...
2.10.UPDATE语法
mysql > UPDATE tab1_name SET col_name1 = expr1
     -> WHERE where_definion
     -> ORDER BY ...
     -> LIMIT row_count;

UPDATE语法可以将新值更新到原有表中的行和列。SET子句指示要修改哪些列和要给与哪些值。WHERE子句指定应更新哪些行。如果指定了ORDER BY子句,则按照被指定的顺序对行进行更新。LIMIT子句用于给定一个限值,限制可以被更新的行的数目。
例如,表t中的id列有1和2这两个值,并且在2被更新到3之前,1会被更新为2,那么就会出错。为了避免这个问题,添加一个ORDER BY子句让拥有较大id值的行更早的更新。
mysql > UPDATE t SET id = id + 1 ORDER BY id DESC;

3)MySQL实用工具语法
3.1.DESCRIBE语法:获取表内列的信息
mysql > DESCRIBE tb1_name;
3.2.USE语法

4)MySQL事务处理和锁定语句:
4.1.START TRANSACTON, COMMIT和ROLLBACK语法:
4.1.1.START TRANSACTON 和 BEGIN 语句可以开始一项新的事务
4.1.2.COMMIT 可以提交当前事务,使其永久更改
4.1.3.ROLLBACK 可以滚回当前事务,取消变更
4.1.4.SET AUTOCOMMIT 语句可以禁用或启用当前连接中默认的autocommit模式

4.2.SAVEPOINT 和 ROLLBACK TO SAVEPOINT语法
4.3.LOCK TABLES 和 UNLOCK TABLES语法
4.4.SET TRANSACTION语法

5)数据库管理语句:
5.1. CREATE USER语法:用于创建新的MySQL账户
5.2. DROP USER语法:用于删除一个或多个MySQL账户
5.3. GRANT 和 REVOKE语法:允许系统管理员创建MySQL用户账号,授予权限和撤销权限
5.4. RENAME UESR语法:对原有MySQL账户重命名
mysql  > RENAME USER 'jeffery'@'localhost' TO 'jeff'@'127.0.0.1';
5.5. SET PASSWORD语法:
5.5.1. SET PASSWORD = PASSWORD('some password'); 为当前用户设置密码
5.5.2. SET PASSWORD FOR USER = PASSWORD('some password'); 为当前服务器主机上的一个特定账户设置密码
5.6. ANALYZE TBALE语法:用于分析和存储表的关键字分布
5.7. CHECK TABLE语法
5.8. CHECKSUM TABLE语法:报告表的检验和
5.9. OPTIMIZE TABLE语法
5.10. REPAIR TABLE语法:用于修复被破坏的表
5.11. SET语法
5.12. SHOW CHARACTER SET语法:用于显示所有可用的字符集
mysql > SHOW CHARCTER SET [LIKE 'pattern'];
如果选定LIKE子句,该子句用于指定哪些字符集名称可以匹配
5.13. SHOW COLUMNS语法:显示一个给定表中的各列的信息
mysql > SHOW [FULL] COLUMNS FROM tab1_name [FROM db_name] [LIKE 'pattern'];
5.14. SHOW CREATE DATABASE语法:显示CREATE DATABASE语句创建的给定数据库,也可以使用SHOW CREATE SCHEMA.
mysql > SHOW CREATE {DATABASE | SCHEMA} db_name;
5.15. SHOW CREATE TABLE:显示CREATE TABLE语句创建的给定表格
mysql > SHOW CREATE TABLE tb1_name;
5.16. SHOW DATABASES
5.17. SHOW ENGINE语法:显示存储引擎的日志或状态信息
mysql > SHOW ENGINE engine_name {LOGS | STAUTS};
5.18. SHOW ENGINES语法:显示存储引擎状态信息
5.19. SHOW ERRORS语法:该语句与SHOW WARNING接近,不过该语句只显示错误,并不同时显示错误、告警和注意信息
5.20. SHOW GRANTS:列出了在为MySQL用户账户复制权限时必须发布的GRANT语句
mysql > SHOW GRANTS FRO user;
5.21. SHOW INDEX:返回表索引信息
mysql > SHOW INDEX FROM tb1_name [FROM db_name];
5.22. SHOW INNODB STATUS语法
5.23. SHOW [BDB] LOGS;
5.24. SHOW  OPEN TABLES;
5.25. SHOW PRIVILEGES:语法显示MySQL服务器支持的系统权限列表
5.26. SHOW PROCESSLIST:显示正在运行的线程
5.27. SHOW STATUS:提供服务器状态信息
5.28. SHOW TABLE STATUS:类似于SHOW TABLE,不过可以提供每个表的大量信息
mysql > SHOW TABLE STATUS [FROM db_name] [LIKE 'pattern'];
5.29. SHOW TABLES
5.30. SHOW TRIGGERS语法:列出了目前被MySQL服务器定义的触发程序

6)其他管理语句:
6.1. CACHE INDEX语法:把表索引分配给某个关键缓存
6.2. FLUSH:清除MySQL使用部分的内部缓存
6.3. KILL语法:
mysql > KILL [CONNECTION | QUERY] thread_id;
每个与MySQL的连接都在一个独立的线程里运行,可以使用SHOW PROCESSLIST语句查看哪些线程正在运行,并使用KILL thread_id语句来终止其中一个线程
6.4. LOAD INDEX INTO CACHE:语句会把一个表索引预载入到某个关键缓存中
6.5. RESET语法:用于清除不同的服务器操作的状态,它也作为FLUSH语句的更强大的版本

7)复制语句:
7.1. PURGE MASTER LOGS语法
7.2. RESET MASTER语法:删除列于索引文件中的所有二进制日志,把二进制日志索引文件重新设置为空,并创建一个新的二进制日志文件
7.3. SET SQL_LOG_BIN = {0 | 1};禁用或启用当前连接的二进制日志记录
7.4. SHOW BINLOG EVENTS:显示二进制日志中的事件
7.5. SHOW MASTER LOGS:列出服务器中的二进制日志文件
7.6. SHOW MASTER STATUS:用于提供主服务器上二进制日志文件的状态信息
7.7. SHOW SLAVE HOSTS语法:用于显示当前使用主服务器注册的克隆从属服务器的清单
7.8. CHANGE MASTER TO语法:更改从属服务器用于与主服务器进行连接和通讯的参数
7.9. MASTER_POS_WAIT()语法
7.10. RESET SLAVE语法:用于让从属服务器忘记其在主服务器的二进制日志中的复制位置
7.11. SET GLOBAL SQL_SLAVE_SKIP_COUNTER = n; 作用是跳过来自主服务器上的n个事件
7.12. START SLAVE / STOP SLAVE:启动/中止从属服务器线程

进阶篇--MySQL触发器
1)调用MySQL程序:
shell > mysql test --user=root 使用test数据库
shell > mysqladmin extended - status variables
shell > mysqlshow --help --user = root
shell > mysqldump --user = root personned

2)批量执行SQL语句:
创建一个文本文件text_file, 并包含要执行的语句,然后在命令行终端调用MySQL
shell > mysql db.name < text_file--user = root
如果text_file文件中已经使用了USE db_name指定了数据库,那么可以直接在命令行输入
shell > mysql < text_file --user=root
如果正在运行MySQL,可以使用source或\.命令执行SQL脚本文件text_file.sql
mysql > source text_file.sql
mysql > \.text_file.sql
注:如果脚本文件不存在MySQL的工作目录下,则需要指定脚本文件的绝对路径名称
mysql > source /home/shiyanlou/text_file.sql

3)CREATE TRIGGER语法:触发器,当表上出现特定事件时,将激活该对象
CREATE TRIGGER trigger_name trigger_time trigger_event ON tb1_name FOR EACH ROW trigger_stmt
3.1. 触发程序与tb1_name表相关。tb1_name必须是永久性表被引用,不能将触发程序与TEMPORARY表或视图关联起来
3.2. trigger_time是触发程序的动作时间,它可以是BEFORE 或 AFTER,以指明触发程序是在激活它的语句之前还是之后触发
3.3. trigger_event指明了激活触发程序的语句的类型。trigger_event可以是下述值之一:
*INSERT / *UPDATE / *DELETE

4)DROP TRIGGER语法:舍弃触发程序
mysql > DROP TRIGGER [schema_name] trigger_name; [schema_name]:方案名称(可省略,如省略则从当前方案中舍弃触发程序)

进阶篇--MySQL数据库管理
1)向MySQL增加新用户账户
1.1. mysql > GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost' IDENTIFIED BY 'some_pass' WITH GRANT OPTION;

1.1.1. ALL PROVOLEGES 是表示所有权限,也可以使用SELECT、UPDATE等权限
1.1.2. ON 是用来指定权限针对哪些库和表
1.1.3. *.* 中前面的*号用来指定数据库名,后面的*号用来指定表名
1.1.4. TO 是表示将权限赋予某个用户
1.1.5. 'monty'@'localhost' 表示monty用户,@后面接限制的主机,可以是IP、IP段、域名 以及 %(%表示任何地方)
1.1.6. IDENTIFIED BY 指定用户的登录密码
1.1.7. WITH GRANT OPPION 表示该用户可以将自己拥有的权限授权给别人

2)删除用户:DROP USER
3)限制账户资源
4)设置账户密码:
4.1. shell > mysqladmin -u user_name -h host_name password 'newpwd';
该命令为Host为host_name, User为user_name账户添加密码newpwd
4.2. mysql > SET PASSWORD FOR 'jeffery'@'%' = PASSWORD('biscuit');
只有root等可以更新MySQL数据库的用户可以更改其他用户的密码
如果你没有以匿名用户连接,省略FOR子句便可以更改自己的密码
mysql > SET PASSWORD = PASSWORD('biscuit');
4.3. 在全局级别使用GRANT USAGE语句(ON)来指定某个账户密码而不影响账户当前的权限
mysql > GRANT USAGE ON *.* TO 'Jeffery'@'%' IDENTIFIED BY 'biscuit';

5)数据库备份

猜你喜欢

转载自blog.csdn.net/zhaocen_1230/article/details/80847318