MySQL的常用语句合集(一)
1.首先登入MySQL
mysql
作用:登录mysql
格式:mysql 选项
选项:
-u userName
-p passWd
-P port
-h hostName
-S file
**工作模式**
交互模式:mysql -uroot -p123 xxx
批处理模式
在bash中可以执行sql语句
mysql -uroot -p123 -h -P -S -e 'sql'
补充:在shell中可以执行sql语句,也可以执行sql脚本
mysql -uroot -p123 -h -P -S <脚本
交互模式中的快捷键
ctrl+l
:清屏
clear(\c)
:终止输入
ego(\G)
:用\G替代掉命令尾部的;,实现纵向输出
status(\s)
:监控服务器的状态信息
exit(\q)
:退出
connect
:超时断开后,进行重新连接
go(\g)
:直接执行命令(相当于替代了;)
system(\!)
:执行shell命令
ctrl+l
:清空屏幕
ctrl+a
:跳转到行首
ctrl+e
:跳转到行为
ctrl+u
:剪切
ctrl+y
:粘贴
2.MySQL的用户的基础管理和配置
1.删除用户
DROP USER 用户名;
例子:DROP USER 'tom'@'localhost';
2. 修改用户密码
方法1:mysqladmin <<< 建议的方法
方法2:grant <<< 不建议
方法3:SET PASSWORD FOR ‘user’@‘host’ = PASSWORD(‘string’) <<< 建议的方法
方法4:直接用update来修改表中的记录,但是必须刷新授权表 <<< 不建议**
3. 创建用户
例子:CREATE USER 'user'@'host' [IDENTIFIED BY '123']
补充通配符的含义
%:除了当前主机以外的任意其他主机
localhost:仅仅是当前主机
_:一位长度的任意字符
4.获取mysql的使用帮助
HELP CONTENTS;
显示帮助信息的类别
HELP TYPE;
5.字段的修饰
字段类型(数据类型)
1).字符型
不区分大小写的字符型
定长: char(#) name char(30)
不定长:varchar(#) name varchar(30)
【不定长可以节省内存空间,但是会带来额外的系统开销】
2)区分大小写的字符型
binary(#)
varbinary(#)
2.整型
int # 默认占4字节存储空间
tinyint # 默认占1字节存储空间
smallint # 默认占2字节存储空间
mediuint # 默认占3字节存储空间
bitint # 默认占8字节存储空间
近似数(小数)
单精度浮点数:float
双精度浮点数:dobule
布尔
0
1
大段文本
不区分大小写:text
区分大小写:blob
日期时间类型
日期:date
时间:time
时间戳:timestamp
日期时间:datetime
NULL
就表示这个字段的内容为空间
mysql的内置类型
ENUM:枚举类型,从指定的范围中,挑选出来一个
SET:集合类型,从指定的范围中,挑选出来一个或多个组合成一个新的元素
字段的修饰
NOT NULL
:该字段不能为空
NULL
:字段可以为空
UNSIGNED
:该字段是一个无符号数(正数)
AUTO_INCREMENT
:对于正数类型字段可用该修饰,可以实现该字段的自动增张
PRIMARY KEY
:定义主键
UNIQ KEY
:定义唯一键
DEFAULT
:指定默认值
案例:表,字段
id 整型 主键 不能为负数 不能为空 自动增长
name 字符类型 最大长度为20字符 不能为空
age 整型 不能为负数 不能为空
gender 枚举类型,只能在M F选择, 如果用户没有输入,那么默认是M
答案:mysql> CREATE TABLE
-> user1(id INT UNSIGNED PRIMARY KEY NOT NULL AUTO_INCREMENT,
-> name CHAR(20) NOT NULL,
-> age INT UNSIGNED NOT NULL,
-> gender ENUM('M','F') DEFAULT 'M');
6.查看SHOW
1).查看当前所支持的各种存储引擎
> SHOW ENGINES;
[MyISAM在读多写少的情况下,性能比较好]
2).查看库中的所有表或者一个或者多个表的信息
> SHOW TABLE STATUS [LIKE "XXX"]
Name: tb1 <<<
Engine: InnoDB <<<
Version: 10
Row_format: Dynamic
Rows: 3
Avg_row_length: 5461
Data_length: 16384
Max_data_length: 0
Index_length: 0
Data_free: 0
Auto_increment: NULL
Create_time: 2018-10-16 00:05:58
Update_time: 2018-10-16 00:37:42
Check_time: NULL
Collation: utf8_general_ci
Checksum: NULL
Create_options:
Comment:
3).查看当前mysql所支持的字符集类型
> SHOW CHARACTER SET;
4.)查看各种变量
> SHOW GLOBAL VARIABLES;
> SHOW SESSION VARIABLES;
5.)查看各种状态信息
> SHOW GLOBAL STATUS
> SHOW SESSION STATUS
例子:查看当前mysql一共执行过多少次select
mysql> SHOW GLOBAL STATUS LIKE 'Com_select';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Com_select | 53 |
+---------------+-------+
例子:查看mysql的数据目录位置
mysql> SHOW GLOBAL VARIABLES LIKE 'datadir';
+---------------+-----------------------------+
| Variable_name | Value |
+---------------+-----------------------------+
| datadir | /data/mysql/mysql3306/data/ |
+---------------+-----------------------------+
6.查看环境变量的方式
1) SHOW [SESSION|GLOBAL] VARIABLES [LIKE XXX] [WHERE 条件]
SHOW GLOBAL VARIABLES WHERE Variable_name=‘datadir’;
SHOW GLOBAL VARIABLES LIKE ‘datadir’;
2) SELECT @@[SESSION|GLOBA].变量名
SELECT @@GLOBAL.datadir;
3) 直接从information_schema的GLOBAL_VARIABLES 和 SESSION_VARIABLES 直接查询
3.修改环境变量格式
SET [SESSION|GLOBAL] VARIABLES_NAME='VALUE'
注意;
修改全局变量,当前会话是无效的,只有再重新断开一个会话,这个修改才会生效
修改会话变量,当前会话立刻生效,但是对于其他和新打开的会话无效
4.sql_mode
作用:定义mysql的工作属性和工作模型(插入的数据大于指定的数据范围的情况下, 如何操作)
模式:
空模式:sql_mode中没有设置值
经典模式:TRADITIONAL
在表中插入非法数据的时候的,不会报错终止,而仅仅是发送一个警告
严格模式:
在表中插入非法数据的时候的,立刻终止执行的sql语句
STRICT_ALL_TABLES:对所有的表都使用的严格模式
STRICT_TRANS_TABLES:仅仅对支持事务的表使用严格模式
查看当前的模式:
mysql> SHOW GLOBAL VARIABLES LIKE 'sql_mode';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| sql_mode | |
+---------------+-------+
修改sql_mod模式(其实就是修改会话和全局环境变量sql_mode)
SET SESSION sql_mode="xxx" >>>>临时修改
SET GLOBAL sql_mode="xxx" >>>>全局修改
5.创建数据库
CREATE DATABASE 库名
CREATE TABLE 表名(字段1 属性,字段2 属性....)
案例:
# 创建数据库
CREATE DATABASE db1;
# 切换数据库
USE db1;
# 创建表
CREATE TABLE tb1(id int, name varchar(30), age int(3));
# 查询表结构
DESC tb1;
# 在表中插入数据
INSERT INTO tb1(name, id, age) VALUES('bajie',12,200);
# 查询表中的数据
SELECT * FROM tb1;