1、SQL基本概念: 算法
SQL 已經成爲關係數據庫的標準語言,是一種數據庫查詢和程序設計語言,用 於存取數據以及查詢、更新和管理關係數據庫系統。 功能不只僅是查詢,還包括數據定義、數據操縱和數據控制等於數據庫有關的 一系列功能。數據庫
四大功能:數據查詢、數據定義、數據操縱和數據控制。編程
1)嵌入式和動態 SQL 規則 規定了 SQL 語句在高級程序設計語言中使用的規範方法,以便適應較爲複雜的 應用。 安全
2)SQL 調用和會話規則 調用包括 SQL 例程和調用規則,以便提升 SQL 的靈活性、有效性、共享性以 及使 SQL 具備更多的高級語言的特徵。服務器
3)關係數據庫系統支持三級模式結構,其模式、外模式和內模式中的基本對象有 數據庫模式、表、索引、視圖等。 SQL 標準提供的數據定義語句以下表:併發
2、MySQL編程語言
一、MySQL基礎概念函數
MySQL 是一個關係數據庫管理系統(RDBMS),它具備客戶/服務器體系結構。加密
MySQL 中的 SQL 做爲一種關係型數據庫管理系統,遵循 SQL 標準,提供了對數據定義語言 DDL、數據操縱語言 DML、數據控制語言 DCL 的支持,一樣支持關係數據庫的三級模式結構。 MySQL 中一個關係對應一個基本表,一個或多個基本表對應一個存儲文件,一 個表能夠有若干索引,索引也存放在存儲文件中。spa
MySQL 在 SQL 標準的基礎上增長了部分擴展的語言要素:包括常量、變量、 運算符、表達式、函數、流程控制語句和註解等。
1)常量 是指在程序運行過程當中值不變的量,也稱爲字面值或標量值。常量的使用格式 取決於值的數據類型,可分爲字符串常量、數值常量、十六進制常量、時間日期常量、位字段值、布爾值和 NULL 值。
字符串常量是指用單引號或雙引號括起來的字符序列,分爲 ASCII 字符串常量 和 Unicode 字符串常量。
十六進制值一般指定爲一個字符串常量,每對十六進制數字被轉換爲一個 字符,其最前面有一個大寫字母 X 或小寫字母 x。
日期和時間常量是用單引號將表示日期時間的字符串括起來構成的。 使用 b‘value’格式書寫位字段值。Value 是一個用 0 或 1 書寫的二進制值。
2)變量 在 MySQL 中,變量分爲用戶變量和系統變量。用戶變量前常添加一個符號 「@」,大多數系統變量前,添加兩個「@」符號。
3)運算符 MySQL 幾類編程語言中經常使用的運算符:
算術運算符:+(加)、—(減)、*(乘)、/(除)和%(求模)
位運算符有:&(位與)、|(位或)、^(位異或)、~(位取反)、>>(位右 移)、<<(位左移)。
比較運算符:=(等於)、>(大於)、<(小於)、>=(大於等於)、<=(小 於等於)、<>(不等於)、!=(不等於)、<=>(相等或都等於空)。
邏輯運算符:NOT 或!(邏輯非)、AND 或&&(邏輯與)、OR 或||(邏輯 或)、XOR(邏輯異或)
4)表達式 是常量、變量、列名、複雜計算、運算符和函數的組合。 表達式可分爲字符表達式、數值型表達式和日期表達式。
5)內置函數 MySQL 包含了 100 多個函數,基本分類以下:
數學函數,例如 ABS()函數、SORT()函數; 聚合函數,例如 COUNT()函數;
字符串函數,例如 ASCII()函數、CHAR()函數;
日期和時間函數,例如 NOW()函數、YEAR()函數;
加密函數,例如 ENCODE()函數、ENCRYPT()函數;
控制流程函數,例如 IF()函數、IFNULL()函數;
格式化函數,例如 FORMAT()函數;
類型轉換函數,例如 CAST()函數;
系統信息函數,例如 USER()函數、VERSION()函數。
二、索引定義
(1)索引是 DBMS 根據表中的一列或若干列按照必定順序創建的列值與記錄行之間的對應關係表,於是索引實質上是一張描述索引列的列值與原表中記錄行之間 一一對應關係的有序表。
(2)索引在邏輯上一般包含如下幾類:
2.1)普通索引:最基本的索引類型,沒有任何限制;
2.2)惟一性索引:索引列中的全部值都只能出現一次,必須是惟一的;
2.3)主鍵:一種惟一性索引。
(3)索引存在的弊端以下:
3.1)索引是以文件的形式存儲的,DBMS 會將一個表的全部索引保存在同一個索引文件中,索引文件須要佔用磁盤空間。
3.2)索引在提升查詢速度的同時,卻會下降更新表的速度。
(4)相關SQL
查詢已建立的索引 show {index|indexes} {in|from} test_table;
建立索引 create index index_name on test_table(s_name,s_age);
建立索引(使用alter table的方式) alter table test_table add index index_name(s_name,s_age)
刪除索引 drop index index_name on test_table;
刪除索引(使用alter table的方式) alter table test_table drop index index_name;
三、視圖