标签:base l命令 com 数据表 cli 成功 t权限 9.png 关系型数据库
MySQL是一个关系型数据库管理系统(relational database management system,RDBMS)
常用的关系型数据库软件有:MySQL、MariaDB、Oracle、SQL Server、PostgreSQL、DB2
包括:ISAM、MyISAM、InnoDB、Memory、CVS、BlackHole、Archive、Performance_Schema、Berkeley、Merge、Federated、Cluster/NDB等,其中MyISAM与InnoDB使用最广泛
1) MyISAM与InnoDB引擎功能对比
引擎特性 |
MyISAM |
InnoDB |
批量插入的速度 |
高 |
中 |
集群索引 |
不支持 |
支持 |
数据缓存 |
不支持 |
支持 |
索引缓存 |
支持 |
支持 |
数据可压缩 |
支持 |
不支持 |
硬盘空间使用 |
低 |
高 |
内存使用 |
低 |
高 |
外键支持 |
不支持 |
支持 |
存储限制 |
没有 |
64TB |
事务安全 |
不支持 |
支持 |
锁机制 |
表锁 |
行锁 |
B树索引 |
支持 |
支持 |
哈希索引 |
不支持 |
支持 |
全文索引 |
支持 |
不支持 |
A-原子性(atomicity):一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行其中的一部分操作,这就是事务的原子性
C-一致性(consistency):数据库总是从一个一致性的状态转换到另一个一致性的状态
I-隔离性(isolation):一个事务所做的修改在最终提交以前,对其他事务是不可见的
D-持久性(durability):在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚
有以下两种方法
1) 编辑vim /etc/my.cnf配置文件,在相应段中加入相应的参数字符集,修改完毕后重启MySQL服务即可
2) MySQL命令行中运行如下指令
mysql是一个简单的命令行SQL工具,该工具支持交互式和非交互式
例:mysql -u root -p -h 192.168.1.100
mysqladmin是一个执行管理操作的工具,使用它可以检查服务器配置、当前运行状态,以及创建、删除数据库等
1)修改root密码
mysqladmin -u root -p password ‘newpassword‘
2)创建数据库
mysqladmin -uroot -p create daba-test
3)删除数据库
mysqladmin -uroot -p drop daba-test
mysqldump是一个数据库逻辑备份程序,可以使用它对一个或多个MySQL数据库进行备份或将数据库传输至其他MySQL服务器,执行mysqldump时需要账户拥有SELECT权限才可以备份数据库
mysqldump不是大数据备份的解决方案,mysqldump需要通过重建SQL语句来实现备份功能,对于数据量比较大的数据库备份与还原操作速度比较慢
对于mysqldump备份的数据文件,可以使用mysql命令工具还原数据
1)备份所有数据库
mysqldump -u root -p --all-database > all_database_sql
2)备份mysql数据库
mysqldump -u root -p --database mysql > mysql_database_sql
mysqldump mysql > mysql_database_sql
两者之间的差别在于不使--database选项,则备份输出信息中不会包含CREATE DATABASE或USE语句。不使--database选项备份的数据文件,在后期进行数据还原操作时,如果该数据库不存在,必须先创建改数据库
3)备份mysql数据库下的user表
mysqldump -u root -p mysql user > user_table
4)使用all_database_sql数据库备份文件还原数据库
mysql -u root -p < all_database_sql
5)使用mysql_database_sql数据库备份文件还原数据库
myslq -u root -p mysql < mysql_database_sql
6)使用user_table数据库备份文件还原数据表
mysql -u root -p mysql < user_table
SQL(结构化查询语言)主要分为六部分:数据定义语言(DDL)、数据操作语言(DML)、数据查询语言(DQL)、数据控制语言(DCL)、事物处理语言(TPL)、指针控制语言(CCL)
用于数据库、表的创建与操作
1) CREATE
CREATE DATABASE test; 创建test数据库
CREATE TABLE tb (id INT NOT NULL AUTO_INCREMENT,name CHAR(20) NOT NULL,PRIMARY KEY (id)); 创建tb表
2) ALTER
ALTER DATABASE test DEFAULT CHARACTER SET=UTF8; 修改数据库默认的字符集
ALTER TABLE tb RENAME tb1; 重命名tb表为tb1
ALTER TABLE tb1 ADD PRIMARY KEY (id); 设置id为主键
ALTER TABLE tb1 DROP COLUMN name ; 删除name列
ALTER TABLE tb ADD index(name); 添加索引
3) DROP
DROP TABLE tb;
DROP INDEX name ON tb; 删除索引
DROP DATABASE test;
4) RENAME
RENAME TABLE tb TO temp;
RENAME TABLE tb TO temp,tb1 TO temp1;
用于添加,修改和删除表中的行
1) INSERT 向数据表中插入一行新的数据
INSERT INTO tb (id,name) VALUES (2,"jack");
2) UPDATE 更新数据表中现有的数据值
UPDATE tb SET name="xiaoming" WHERE id=2;
3) LOAD DATA INFILE
用来快速从文本文件中读取数据到数据表中。
分隔符:文件默认使用Tab键为列的分隔符,行分隔符为换行符。可以使用FIELDS TERMINATED BY设置列分隔符,通过LINES STARTING BY设置行分隔符
注:LOAD DATA LOCAL INFILE 文件从客户端主机读取
LOAD DATA INFILE文件必须位于服务器上, 且文件必须处于数据库目录或可被所有人读取的地方
4) DELETE
用来把满足条件的数据记录删除并返回删除的记录数量
DELETE FROM tb WHERE id=2;
用于查询数据表中的数据记录
SELECT * FROM tb; 查询数据表中的所有的数据记录
SELECT name FROM tb; 查询数据表中name记录
SELECT COUNT(id) FROM tb; 统计id记录的总数
SELECT * FROM tb WHERE id=1; 查询id为1的所有记录
用来设置或者更改数据库用户或角色权限的语句
1) GRANT
GRANT ALL ON test.* to ‘tomcat‘@‘localhost‘ IDENTIFIED BY ‘pass‘;
GRANT SELECT ON *.* to ‘tomcat‘@‘192.168.1.100‘ IDENTIFIED BY ‘pass‘;
2) REVOKE
撤销账户权限
REVOKE ALL ON test.* FROM tomcat@‘%‘;
REVOKE SELECT ON *.* FROM tomcat@‘%‘;
能确保被DML语句影响的表的所有行及时得以更新, TPL语句包括BEGIN TRANSACTION,COMMIT和ROLLBACK
像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于对一个或多个表单独行的操作
1) GRANT 创建账号并赋予权限
GRANT ALL ON test.* to ‘tomcat‘@‘localhost‘ IDENTIFIED BY ‘pass‘;
2) 直接修改数据库权限数据表mysql.user
修改root密码为newpwd,PASSWORD()的作用用来对密码加密存储,使用FLUSH PRIVILEGES更新该权限数据表
UPDATE mysql.user SET Password = PASSWORD(‘newpwd‘) WHERE User= ‘root‘;
FLUSH PRIVILEGES;
3) 通过mysqladmin设置账号密码(在shell中执行)
mysqladmin –u root –p password ‘centos‘
4) SET PASSWORD命名设置密码
设置root从192.168.1.100主机连接MySQL服务器的账号密码
SET PASSWORD FOR ‘root‘@‘192.168.1.100‘ = PASSWORD(‘newpwd‘);
设置root从本机连接MySQL服务器的账号密码
SET PASSWORD FOR ‘root‘@‘localhost‘ = PASSWORD(‘newpwd‘)
DROP USER ‘tomcat‘@‘localhost‘;
MySQL索引可以用来快速地寻找某些具有特定值的记录,所有MySQL索引都以B-树的形式保存。如果MySQL没有索引,执行select时会从第一个记录开始扫描整个表的所有记录,直到找到符合要求的记录
1)常见索引类型包括:
创建索引命令:ALTER TABLE tb ADD INDEX index_name(id);
index_name为索引名称,自定义
创建索引命令:ALTER TABLE tb ADD UNIQUE(id);
创建索引命令:ALTER TABLE tb ADD FULLTEXT(id);
创建索引命令:ALTER TABLE tb ADD PRIMARY KEY(id);
创建索引命令:ALTER TABLE tb ADD INDEX index_name(id1,id2);
2)查看索引:
show index from tb;
show keys from tb;
3)删除数据表索引
DROP INDEX index_name ON tb;
ALTER TABLE tb DROP INDEX index_name;
ALTER TABLE tb DROP PRIMARY KEY;
MySQL慢查询日志指运行时间超过long_query_time值得SQL语句,慢查询主要用于跟踪异常的SQL语句,可以分析出当前程序里哪些SQL语句比较耗费资源
show variables like "%slow%";
show variables like "%long_query%";
log_slow_queries 慢查询日志功能关闭开启状态
slow_launch_time thread create时间,单位为秒,如果thread create的时间超过了这个值, 该变量slow_launch_time的值加1
slow_query_log 慢查询日志关闭开启状态
slow_query_log_file 慢查询日志文件
long_query_time 慢查询超时时间,默认为10s
log_queries-not-using-indexes 记录未添加索引的SQL语句
两种方法:
1)set global slow_query_log=on;
2)修改my.cnf配置文件
log-slow-queries=/data/mysql/localhost.log
long_query_time=2
log-queries-not-using-indexes
1)参数说明:
-s:排序方式 按锁的时间l、返回的记录数r、查询的时间t、记录的次数c,倒序加r,平均锁定时间al,平均返回记录数ar,平均查询时间at
-t:查询前多少条记录
-g:支持正则表达式,以及忽略大小写
2)例:查询按时间返回前2条日志信息,
mysqldumpslow -s t -t 2 /data/mysql/localhost.log
标签:base l命令 com 数据表 cli 成功 t权限 9.png 关系型数据库
原文地址:https://www.cnblogs.com/longBlogs/p/9648101.html