1. 程式人生 > >MySQL的常用語句合集(一)

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;