|
一、用户管理类命令
创建用户
1
2
3
4
5
6
7
8
| mysql> CREATE USER 'wlw'@'192.168.0.22' IDENTIFIED BY 'wlw';
mysql> use mysql;
mysql> SELECT User,Host,Password FROM user WHERE User='wlw';
+------+--------------+-------------------------------------------+
| User | Host | Password |
+------+--------------+-------------------------------------------+
| wlw | 192.168.0.22 | *9A3A20395B8C68934181EE113D46B8056580904B |
+------+--------------+-------------------------------------------+
|
删除用户
1
2
3
4
| mysql> DROP USER 'wlw'@'192.168.0.22';
mysql> DROP USER ''@'localhost';
mysql> DROP USER ''@'c6node1.wlw.com'
#刚安装的数据库存在两个匿名用户,建议删除
|
修改用户密码
1
2
3
4
5
6
7
| mysql> SET PASSWORD FOR 'wlw'@'192.168.0.22' = PASSWORD('test');
mysql> SELECT User,Host,Password FROM user WHERE User='wlw';
+------+--------------+-------------------------------------------+
| User | Host | Password |
+------+--------------+-------------------------------------------+
| wlw | 192.168.0.22 | *94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29 |
+------+--------------+-------------------------------------------+
|
'wlw'@'192.168.0.22'授权可以管理Mysql中的所有数据库所有表。相当于管理员权限
1
| mysql> GRANT ALL PRIVILEGES ON *.* TO 'wlw'@'192.168.0.22';
|
'wlw'@'192.168.0.22'授权可以查询、插入、更新、删除 wlwdb数据库中所有表数据的权利
1
| mysql> GRANT SELECT,INSERT,UPDATE,DELETE ON wlwdb.* TO 'wlw'@'192.168.0.22';
|
'wlw'@'192.168.0.22'授权创建、修改、删除 MySQL wlwdb数据库中所有数据表结构权限。
1
| mysql> GRANT CREATE,ALTER,DROP ON wlwdb.* TO 'wlw'@'192.168.0.22';
|
创建wlw用户只能192.168.0.0/16网段访问并授权wlwdb数据库中所有表的所有权限
1
| mysql> GRANT ALL PRIVILEGES ON wlwdb.* TO 'wlw'@'192.168.%.%' IDENTIFIED BY 'wlw';
|
注意:Mysql/MariaDB服务进程启动时会读取mysql库中的所有授权表至内存中;
(1) GRANT或REVOKE等执行权限操作会保存于表中,MariaDB的服务进程会自动重读授权表;
(2) 对于不能够或不能及时重读授权表的命令,可手动让MariaDB的服务进程重读授权表:
1
| mysql> FLUSH PRIVILEGES;
|
查看授权信息
1
2
3
| mysql> SHOW GRANTs FOR 'wlw'@'192.168.0.22';
GRANT ALL PRIVILEGES ON *.* TO 'wlw'@'192.168.0.22' IDENTIFIED BY PASSWORD '*
7EA8DEE3D73216C0A2468C8EC6E41A0733888AA3'
|
回收授权
1
2
3
4
5
| mysql> REVOKE SELECT,INSERT,UPDATE,DELETE ON wlwdb.* FROM 'wlw'@'192.168.0.22';
mysql> SHOW GRANTs FOR 'wlw'@'192.168.0.22';
GRANT ALL PRIVILEGES ON *.* TO 'wlw'@'192.168.0.22' IDENTIFIED BY PASSWORD '*
7EA8DEE3D73216C0A2468C8EC6E41A0733888AA3'
GRANT CREATE, DROP, ALTER ON `wlwdb`.* TO 'wlw'@'192.168.0.22'
|
二、数据库管理类命令
创建数据库
1
| mysql> CREATE DATABASE wlwdb;
|
删除数据库
1
| mysql> DROP DATABASE wlwdb;
|
进入数据库,建立表和对表进行操作都需要先进入数据库,或者指定数据库
1
2
| mysql> use wlwdb;
Database changed
|
查看可以管理的数据库
1
2
3
4
5
6
7
8
9
| mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| test |
| wlwdb |
+--------------------+
|
三、表管理类命令
主键:能够惟一标识表中每一个记录的字段或字段的组合
主键约束:对一张表来讲,主键只能有一个。惟一,不能为NULL
惟一键约束:对一张表来讲 ,惟一键 可以有多个。惟一,可能为NULL
检查式约束:用户自定义有效取值范围。通常用布尔表达式
外键约束:被定义为外键的字段在参照其他表的时候不能填入其他表没有的信息。
表是由行和列组成的二维关系
字段:字段名,约束,字段类型
数据类型的作用:比较方式。存储空间(取值范围)。参与的运算
①、字符型
不区分大小写:char(#)。varchar(#)可变化的字符。尽量使用char,虽然可能浪费空间,但是性能要好得多得多
区分大小写:binary(#)。varbinary(#)
大段文本,基于对象的存储,对象存储在其他文件系统中,只存放对象的指针
不区分大小写(text)
区分大小写(blob)
②、数值型
精确数值型
整形 int:tinyint 1字节(-128~127)。smallint 2字节。mediumint 3字节。int 4字节。bigint 8字节。
十进制 decimal(在金融领域中使用)
近似数值型:单精度浮点型:float。双精度浮点型:double
日期时间型:date 3字节。time 3字节。datetime 8字节。timestamp:时间戳( 1970年01月01日00时00分00秒)
布尔型:0,1,NULL
内置类型(mysql独有的字符型):ENUM(枚举,只能填我们事先定义好的字符)。SET(集合,可以拼凑组合事先定义好的字符)
字段或字段类型还可以有修饰符
NOT NULL 不能为空
NULL 可以为空
UNSIGNED 数值为无符号
DEFAULT 给定默认值。字符要加引号,数字不能加引号
AUTO_INCREMENT 自动增长类型的字段必须为主键或唯一键
PRIMARY KEY:定义主键
UNIQ KEY 唯一键
创建表
1
2
3
| mysql> CREATE TABLE IF NOT EXISTS wlw_tb (Name char(30),Age tinyint,Gender ENUM('F','M'));
mysql> CREATE TABLE IF NOT EXISTS wlw_tb1(StuID int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name char(30) NOT NULL,Age tinyint UNSIGNED NOT NULL,Gender ENUM('F','M') DEFAULT 'F');
|
删除表
1
| mysql> DROP TABLE IF EXISTS wlw_tb;
|
查看表结构
1
2
3
4
5
6
7
8
9
| mysql> DESC wlw_tb1;
+--------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+---------------------+------+-----+---------+----------------+
| StuID | int(10) unsigned | NO | PRI | NULL | auto_increment |
| Name | char(30) | NO | | NULL | |
| Age | tinyint(3) unsigned | NO | | NULL | |
| Gender | enum('F','M') | YES | | F | |
+--------+---------------------+------+-----+---------+----------------+
|
查看创建表所用的语句信息
1
2
3
4
5
6
7
8
| mysql> SHOW CREATE TABLE wlw_tb1;
wlw_tb | CREATE TABLE `wlw_tb` (
`StuID` int(10) unsigned NOT NULL AUTO_INCREMENT,
`Name` char(30) NOT NULL,
`Age` tinyint(3) unsigned NOT NULL,
`Gender` enum('F','M') DEFAULT 'F',
PRIMARY KEY (`StuID`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1
|
查看表状态,\G 以行的形式列出来,当字段太多的时候可以使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| mysql> show table status like 'wlw_tb1'\G;
*************************** 1. row ***************************
Name: wlw_tb1
Engine: MyISAM
Version: 10
Row_format: Fixed
Rows: 0
Avg_row_length: 0
Data_length: 0
Max_data_length: 10414574138294271
Index_length: 1024
Data_free: 0
Auto_increment: 1
Create_time: 2015-10-21 15:51:49
Update_time: 2015-10-21 15:51:49
Check_time: NULL
Collation: latin1_swedish_ci
Checksum: NULL
Create_options:
Comment:
|
表中添加字段
1
| ALTER TABLE wlw_tb1 ADD (test INT,test1 char(10));
|
表中删除字段
1
| mysql> ALTER TABLE wlw_tb1 DROP test1;
|
表中修改字段,MODIFY和CHANGE修改语句有所不同
1
2
3
| mysql> ALTER TABLE wlw_tb1 MODIFY test tinyint;
mysql> ALTER TABLE wlw_tb1 CHANGE test num tinyint;
#CHANGE关键字后的名称是要修改的列,然后指定新的定义,其中包括新的名称,一般用来修改字段名
|
重命名表
1
| mysql> ALTER TABLE wlw_tb1 RENAME TO wlw_tb;
|
索引:索引是特殊数据结构;定义在查找时作为查找条件的字段;定义索引需要指定索引名称;
创建索引
1
| mysql> CREATE INDEX wlw_index ON wlw_tb (Name,Age);
|
删除索引
1
| mysql> DROP INDEX wlw_index ON wlw_tb;
|
查看定义的索引
1
| mysql> SHOW INDEXES FROM wlw_tb\G
|
四、数据管理类命令
插入数据
1
| mysql> INSERT INTO wlw_tb(Name,Age,Gender) VALUES('wlw',25,'F'),('wu',25,'M');
|
字段表示法:*,所有字段;as,字段别名,col1 AS alias1;
WHERE clase:操作符:=,>,<,>=,<=
LIKE,通配符:%(任意长度的任意字符),_(匹配任意单个字符)
RLIKE:正则表达式模式匹配
组合条件:and。or。not
IS NULL,IS NOT NULL
查询数据
1
2
3
4
5
6
| mysql> SELECT Name,Age FROM wlw_tb WHERE Age >20 and Name='wlw';
+------+-----+
| Name | Age |
+------+-----+
| wlw | 25 |
+------+-----+
|
更改数据
1
2
| mysql> UPDATE wlw_tb SET Age = 24 WHERE Name='wlw';
#如果不做条件判断,则表中所有行的Age都会更改为24,谨慎操作
|
删除数据,删除操作都需要谨慎
1
2
| DELETE FROM wlw_tb1 WHERE StuID = 2; #删除WHERE限制的某行
DELETE FROM wlw_tb1; #清空表中的所有行
|
五、比较常用的一些系统查询命令
SELECT查询语句大小写非常重要,它决定你的查询缓存是否能被命中
SELECT * FROM user\g 当不知道结束符是什么的时候(;),用\g让他直接发往服务器端
SELECT * FROM user\G 以行的形式列出来,但字段太多的时候可以使用
SELECT * FROM user\c 终止命令执行,相当于bash中的CTRL+C
SELECT current_time(); mysql提供的内置函数可供调用返回结果,调用时间,查看当前表
SELECT database(); 查看当前所在哪个数据库下
SELECT user(); 查看当前所在哪个用户下
SHOW {GLOBAL | SESSION} VARIABLES [LIKE clause];
SHOW VARIABLES LIKE 'data%'\G 查看数据库存放位置
SHOW variables 查看服务器变量
SHOW global variables 查看全局变量
SHOW session variables 查看会话的变量
MySQL服务器运行中的状态是通过状态变量输出的
SHOW status 服务器运行状态
SHOW STATUS LIKE 'Com_select' 查看运行的查看语句次数
SHOW global status 查看全局变量
SHOW session status 查看会话的变量
|
|