SQL語言的組成部分
常見分類:DDL:數據定義語言
DCL:數據控制語言,如授權
DML:數據操作語言
其它分類:完整性定義語言:
DDL的一部分功能約束
約束:包括主鍵,外鍵,唯一鍵,條件,非空,事務等各類約束
視圖定義:即虛表,就是存儲下來的SELECT語句
事務控制
嵌入式SQL和動態SQL
數據字典:系統編目(system catalog)
作用:保存數據庫服務器上的元數據
保存元數據的數據庫有:information_schema
mysql
performance_schema
元數據包括:關系名稱
關系的各字段名稱
各字段的數據類型和長度
約束
關系上的視圖名稱及視圖的定義
授權用戶名稱
用戶的授權和帳戶信息
統計類的數據
關系字段的個數
關系中的行數
關系的存儲方法
SQL語言的數據類型及屬性修飾符
字符型1:char,varchar,text等# 對應可用屬性修飾符:
NOT NULL:非空約束
NULL:允許為空
DEFAULT ‘string’:默認值,不適用于text類型
CHARACTER SET ‘字符集’:設定字符集
查看當前MySQL字符集:show variables like ‘%char%’;
查看可使用字符集:show character set;
COLLATION:設定字符集的排序規則
查看可用排序規則:show collation;
字符型2:binary,varbinary,blob等
# 對應可用屬性修飾符
NOT NULL,NULL
DEFAULT:不適用于blob類型
整型
# 對應可用屬性修飾符:
AUTO_INCREMENT:自動增長(前提:非空、唯一,支持索引,非負值)
UNSIGNED:無符號
NOT NULL,NULL
DEFAULT
浮點型
# 對應可用屬性修飾符:
NOT NULL,NULL
DEFAULT
UNSIGNED
日期時間型
# 對應可用屬性修飾符:
NOT NULL,NULL
DEFAULT
內置類型
# ENUM和SET的區別
ENUM:枚舉,一般存儲字串,只能取其中一個使用
SET:集合,一般存儲單個字符,可組合各字符形成字串使用
# 對應可用屬性修飾符:
NOT NULL,NULL
DEFAULT
MySQL中的服務器變量
支持修改的服務器變量
# 一般分類
動態變量:可在MySQL運行時修改
靜態變量:在配置文件中修改其值,其重啟后方能生效
# 從其生效范圍來分類
全局變量:服務器級別,修改之后僅對新建立的會話有效
會話變量:會話級別,僅對當前會話有效;會話建立時,從全局繼承各變量
查看服務器變量
法1:show [global|session] variables [like ‘’];
# 注:默認是session變量
法2:select @@{global|session}.Variable_Name;
# 如select @@global.sql_mode;
法3:select * from information_schema.global_variables where variable_name=’Some_Variable_Name’;
修改服務器變量
# 前提:默認僅管理員有權限修改全局變量
set {global|session} Variable_Name=’Value’;
# 注:無論是全局還是會話級別的動態變量修改,在重啟mysqld后都會失效;若想永久生效,可定義在配置文件中的相應段中[mysqld]
MySQL中的數據操作
數據庫操作
表操作
創建表
刪除表
修改表結構
數據操作
包括插入(Insert)、替換(Replace)、更新(Update)、刪除(Delete)操作
MySQL的視圖
本質:視圖就是存儲下來的select語句
創建視圖
create view View_Name as select_clause
# 如 create view stu as select Name,Age,ClassID from students;
顯示視圖的創建屬性
show create view stu;
使用:授權用戶權限時,只指定視圖,則用戶只能查看到視圖內的內容,而不能查看全部數據了
注:MySQL中的Select 操作比較復雜,也是很重要的部分,所以下一篇單獨講解