SQL語言組成部分:
DDL: 數據定義語言(DATABASE、TABLE、VIEW)
DML: 數據操作語言(SELECT、INSERT、REPLACE、UPDATE、DELETE)
完整性定義語言:DDL的一部分功能
主鍵、外鍵、惟一鍵、條件、非空、事務
視圖定義:虛表,存儲下來的SELECT語句
事務控制:
嵌入式SQL和動態SQL:
DCL:授權
數據類型的功用:
1、存儲的值類型;
2、佔據的存儲空間;
3、定長,變長;
4、如何被索引及排序;
5、是否能夠被索引;
數據字典:系統編目(system catalog)
保存數據庫服務器上的元數據
元數據:
關係的名字
每個關係的各字段的名字
各字段的數據類型和長度
約束
每個關係上的視圖的名字及視圖的定義
授權用戶的名字
用戶的授權和帳戶信息
統計類的數據:
每個關係字段的個數;
每個關係中行數;
每個關係的存儲方法;
保存元數據的數據庫:
information_schema
mysql
performance_shcema
數據類型:
字符型
數值型
精確數值型
近似數值型
單精度浮點型
雙精度浮點型
日期時間型
日期型
時間型
日期時間型
時間戳
布爾型
內建類型
ENUM, SET
字符型:
CHAR
VARCHAR
TINYTEXT
TEXT
MEDIUMTEXT
LONGTEXT
BINARY
VARBINARY
TINYBLOB
BLOB
MEDIUMBLOB
LONGBLOB
ENUM
SET
數值型:
TINYINT
SMALLINT
MEDIUMINT
INT
BIGINT
DECIMAL
FLOAT
DOUBAL
BIT
日期時間型:
DATE
TIME
DATETIME
TIMESTAMP
YEAR
CHAR、VARCHAR和TEXT幾種字符型常用的屬性修飾符:
NOT NULL 非空約束
NULL 允許爲空
DEFAULT 'string' 默認值,不適用於TEXT類型
CHARACTER SET '字符集' 設置默認字符集
COLLATION '規則' 排序規則
查看當前的字符集
SHOW VARIABLES LIKE '%char%';
查看可用的字符集
SHOW CHARACTER SET;
設置字符集
SET character_set_filesystem = utf8;
查看可用的排序規則
SHOW COLLATION;
BINARY、VARBINARY和BLOB幾種字符型常用的屬性修飾符:
NOT NULL 非空約束
NULL 允許爲空
DEFAULT 不適用於BLOB
整型的常用屬性修飾符:
AUTO_INCREMENT 自動增長(前提:非空,且惟一;支持索引,非負值;)
UNSIGNED 無符號
NULL
NOT NULL
DEFAULT
浮點型常用修飾符:
NOT NULL
NULL
DEFAULT
UNSIGNED
日期時間型的修飾符:
NOT NULL
NULL
DEFAULT
ENUM和SET的修飾符:
NOT NULL
NULL
DEFAULT ''
MySQL SQL_MODE: SQL模式
TRADITIONAL, STRICT_TRANS_TABLES, or STRICT_ALL_TABLES
設定服務器變量的值:(僅用於支持動態的變量)
支持修改的服務器變量:
動態變量:可以MySQL運行時修改
靜態變量:於配置文件中修改其值,並重啓後方能生效;
服務器變量從其生效範圍來講,有兩類:
全局變量:服務器級別,修改之後僅對新建立的會話有效;
會話變量:會話級別,僅對當前會話有效;
會話建立時,從全局繼承各變量;
查看服務器變量:
mysql> SHOW [{GLOBAL|SESSION}] VARIABLES [LIKE ''];
mysql> SELECT @@{GLOBAL|SESSION}.VARILABLE_NAME;
mysql> SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='SOME_VARIABLE_NAME';
mysql> SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='SOME_VARIABLE_NAME';
修改變量
前提:默認僅管理員有權限修改全局變量
mysql> SET {GLOBAL|SESSION} VARIABLE_NAME='VALUE';
注意:無論是全局還是會話級別的動態變量修改,在重啓mysqld後都會失效;想永久有效,可定義在配置文件中的相應段中[mysqld];
MySQL中字符大小寫:
1、SQL關鍵字及函數名不區分字符大小寫;
2、數據庫、表及視圖名稱的大小區分與否取決於低層OS及FS
3、存儲過程、存儲函數及事件調度器的名字不區分大小寫,但觸發器區分;
4、表別名區分大不寫;
5、對字段中的數據,如果字段類型爲Binary類型,則區分大小寫;非Binary不區分大小寫;