MySQL客户端命令--笔记

MySQL客户端命令

mysql
-u:指定用户
-p:指定密码
-S:指定socket文件
-P:指定端口
-h:指定主机域
-e:指定sql语句

mysql> status \s 查看状态
mysql> select * from mysql.user\G 格式化成key:value的形式
mysql> \T /tmp/a.log 记录操作日志
mysql> \c 结束操作
mysql> \. /root/world.sql source 导入sql文件
mysql> \u test 切换数据库
mysql> \q 退出

mysql> select database();
+------------+
| database() |
+------------+
| test |
+------------+

 

mysqladmin
#检测MySQL是否存活
[root@elk01 ~]# mysqladmin -uroot -p123 ping
-返回:mysqld is alive
#查看状态
[root@elk01 ~]# mysqladmin -uroot -p123 status
#关闭数据库
[root@elk01 ~]# mysqladmin -uroot -p123 shutdown
#查看参数
[root@elk01 ~]# mysqladmin -uroot -p123 variables
#删库
[root@elk01 ~]# mysqladmin -uroot -p123 drop test
#建库
[root@elk01 ~]# mysqladmin -uroot -p123 create oldboy
#修改密码
[root@elk01 ~]# mysqladmin -uroot -p123 password '1'


SQL语句:

DDL:数据定义语言
库操作:
#创建oldboy数据库
mysql> create database oldboy;

mysql> drop database oldboy;

mysql> alter database oldboy charset gbk;


表操作:
#创建表
mysql> create table student1(
sid INT,
sname VARCHAR(20),
sage TINYINT,
sgender ENUM('m','f'),
cometime DATETIME);


#创建表加其他属性
mysql> create table student(
sid INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '学号',
sname VARCHAR(20) NOT NULL COMMENT '学生姓名',
sage TINYINT UNSIGNED COMMENT '学生年龄',
sgender ENUM('m','f') NOT NULL DEFAULT 'm' COMMENT '学生性别',
cometime DATETIME NOT NULL COMMENT '入学时间')charset utf8 engine innodb;

 

mysql> alter table student1 add renyachun varchar(10);
mysql> alter table student1 add huwentao varchar(10) first;
mysql> alter table student1 drop renyachun;
mysql> alter table student1 add renyachun varchar(10) after huwentao;
mysql> alter table student1 rename st1;

 


A B C D
AI bigdata cloud DBA

 

DCL:数据控制语言

mysql> grant all privileges on *.* to test@'%' identified by '123';
mysql> grant all on *.* to test1@'%' identified by '123';
mysql> revoke select on *.* from test1@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> show grants for test1@'%';


DML:数据操作语言

insert
update
delete

update代替delete做伪删除

1)在表中添加一个状态列
mysql> alter table world.city add status enum('0','1') default '1';
2)update 伪删除数据
mysql> update world.city set status='0' where id=4079;
3)查询时加条件
mysql> select * from world.city where status='1';


添加索引:
mysql> alter table world.city add index idx_pop(Population);
#查看索引
mysql> show index from world.city;

添加前缀索引
mysql> alter table world.city add index idx_name(name(4));
删除索引
mysql> alter table world.city drop index idx_name;

 

MySQL的存储引擎:
查看存储引擎
show engines;
查询当前实例中innodb存储引擎的表
mysql> select table_schema,table_name,engine from information_schema.tables where engine='innodb';

mysql> select table_schema,table_name,engine from information_schema.tables where engine='myisam';

查询当前使用的存储引擎
mysql> SELECT @@default_storage_engine;

临时设置存储引擎
mysql> SET @@storage_engine=innodb;

修改共享表空间配置
innodb_data_file_path=ibdata1:50M;ibdata2:50M:autoextend

在没有备份的情况下表损坏企业案例:

1)找开发拿到建表语句
CREATE TABLE `city_new` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Name` char(35) NOT NULL DEFAULT '',
`CountryCode` char(3) NOT NULL DEFAULT '',
`District` char(20) NOT NULL DEFAULT '',
`Population` int(11) NOT NULL DEFAULT '0',
`status` enum('0','1') DEFAULT '1',
PRIMARY KEY (`ID`),
KEY `CountryCode` (`CountryCode`),
KEY `idx_pop` (`Population`)
) ENGINE=InnoDB AUTO_INCREMENT=4080 DEFAULT CHARSET=latin1

2)创建一个新的MySQL实例,创建表
3)删除独立表空间
mysql> alter table city_new discard tablespace;
4)拷贝旧表的表空间文件到新表下
5)导入独立表空间
mysql> alter table city_new import tablespace;


MySQL-事务
mysql> create table jiaoyi(name varchar(10),money int);
mysql> insert jiaoyi value('zls',2000);
mysql> insert jiaoyi value('renyachun',20);

5.事务的控制语句
如下:
START TRANSACTION(或 BEGIN):显式开始一个新事务
SAVEPOINT:分配事务过程中的一个位置,以供将来引用
COMMIT:永久记录当前事务所做的更改
ROLLBACK:取消当前事务所做的更改
ROLLBACK TO SAVEPOINT:取消在 savepoint 之后执行的更改
RELEASE SAVEPOINT:删除 savepoint 标识符
SET AUTOCOMMIT:为当前连接禁用或启用默认 autocommit 模式


6.事务隐式提交情况
1)现在版本在开启事务时,不需要手工begin,只要你输入的是DML语句,就会自动开启事务。
2)有些情况下事务会被隐式提交

例如:
在事务运行期间,手工执行begin的时候会自动提交上个事务
在事务运行期间,加入DDL、DCL操作会自动提交上个事务
在事务运行期间,执行锁定语句(lock tables、unlock tables)
load data infile
select for update
在autocommit=1的时候

 

隔离级别
READ UNCOMMITTED(独立提交)
允许事务查看其他事务所进行的未提交更改

READ COMMITTED
允许事务查看其他事务所进行的已提交更改

REPEATABLE READ******
确保每个事务的 SELECT 输出一致
InnoDB 的默认级别

SERIALIZABLE
将一个事务的结果与其他事务完全隔离

posted @ 2019-04-24 16:11  萤huo虫  阅读(270)  评论(0编辑  收藏  举报