MySQL的常用語句合集(一)
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;