SQL入門基礎語法_第1頁
SQL入門基礎語法_第2頁
SQL入門基礎語法_第3頁
SQL入門基礎語法_第4頁
SQL入門基礎語法_第5頁
已閱讀5頁,還剩5頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、精選文檔SQL語句的概述SQL語言的分類數據定義語言(Data Definition Language)主要用于修改、創建和刪除數據庫對象,其中包括CREATE ALTER DROP語句。數據查詢語言(Data Query Language)主要用于查詢數據庫中的數據,其主要是SELECT語句,SELECT語句包括五個子句,分別是FROM WHERE HAVING GROUP BY 和WITH語句。數據操作語言(Data Manipulation Language)主要用于更新數據庫里數據表中的數據,包括INSERT UODATE DELETE語句。數據把握語言(Data Control La

2、nguage)主要用于授予和回收訪問數據庫的某種權限。包括GRANT REVOKE等語句。事物把握語言,主要用于數據庫對事物的把握,保證數據庫中數據的全都性,包括COMMIT ROLLBACK語句。常用的數據類型MYSQL:整型整數類型取值范圍TINYINT-128至127(1字節)SMALLINT-32768至32767(2字節)MEDIUMINT-sqrt(2,23)至sqrt(2,23)-1INT-sqrt(2,31)至sqrt(2,31)-1BIGINT-sqrt(2,63)至sqrt(2,63)-1浮點型浮點數類型取值范圍FLOAT(M,N)DOUBLE(M,N)字符類型CHAR(N

3、)定長1至255個字符VARCHAR(N)可變長1至65535TINYTEXT(N)可變長1至65535TEXT(N)MEDIUMTEXT(N)LONGTEXT(N)SQL語句的書寫規范SQL語句中不區分關鍵字的大小寫SQL語句中不區分列名和對象名的大小寫SQL語句對數據庫中數據的大小寫敏感SQL語句中使用-注釋,當使用-注釋時,-后面至少有-個空格,多行注釋用/* */數據庫的創建與刪除數據庫的創建CREATE DATABASE database_name;在MYSQL COMMAND LINE CLIENT中書寫SQL語句時,在SQL語句后面都要加上分號數據庫的刪除DROP DATABAS

4、E database_name;數據表的創建與更新數據庫中的表數據記錄:在數據表中的每一行被稱為數據記錄字段:數據表中的每一列被稱為字段主鍵(PRIMARY KEY):作為數據表中唯一的表示,保證了每一天數記錄的唯一性。主鍵在關系數據庫中約束實體完整性。所謂的實體完整性,是指對數據表中行的約束。外鍵(FOREIGN KEY):外鍵用來定義表與表之間的關系。在數據表中,假如屬性列F是關系B中的一個屬性(并不是關系B的主鍵),并且屬性列F是關系A的主鍵,則F就是B的外鍵。外鍵在關系數據庫中約束參照完整性。所謂的參照完整性是指表與表之間的約束。索引:索引是指向數據表中的一個指針,指向索引字段在數據表

5、中的物理位置。一般可以在如下幾種狀況下建立索引在主鍵列中創建索引多表連接時,在經常使用的連接列上創建索引在經常使用WHERE子句查詢的列上創建索引在經常進行分組GROUP BY及排序ORDER BY的列上創建索引約束:為了保證數據的完整需要使用約束1. 唯一約束(UNIQUE)使用唯一約束的某一列或者某一組中沒有相同的值,即保證了值的唯一性。但是唯一約束中可以插入NULL值2. 主鍵約束(PRIMARY KEY)保證使用主鍵約束的列中只能有唯一的值,并且不能包含NULL值,數據表中每一列只能定義一個PRIMARY KEY3. 外鍵約束(FOREIGN KEY)保證表參照完整性,確保對一個數據表

6、的數據操作不會對與之關聯的表造成不利的影響4. 檢查約束(CHECK)限制列的取值范圍或者取值條件,可以為一個列定義多個CHECK約束5. 非空約束(NOT NULL)用于對列的約束創建數據表CREATE TABLE table_name(column_name1 datatype constraint_condition1,column name2 datatype constraint_condition2)使用約束1.唯一約束(UNIQUE)用來保證某一列或者某一組列中沒有相同的值,一般為列創建了一個唯一約束后,數據庫會自動為該列建立一個唯一索引,其索引名與約束名相同 例如:CREATE

7、 TABLE T_dept(dept_ID VARCHAR(15) UNIQUE,dept_Name VARCHAR(10) 2.主鍵約束CREATE TABLE T_result(stuID VARCHAR(15),cruID VARCHAR(15),result DOUBLE,PRIMARY KEY(stuID,curID)3.外鍵約束FOREIGN KEY表名1(列名1) REFERENCES 表名2 (列名2)ON UPDATE CASCADE|SET NULL|RESTRICTON DELETE CASCADE|SET NULL|RESTRICT其中,FOREIGN KEY是關鍵字,

8、表名1是可選的,列名1是指定數據表中用于外鍵約束的外鍵,表名2表示主表的名字,列名2主表中與從表中列名1對應列的名字,后面的ON UPDATE ON DELETE表示對表中的數據的修改或者刪除,主從表之間實行什么樣的操作方式,是可選的CASCADE:級聯刪除,假如主表中一條數據記錄被刪除,從表中的數據也將刪除SET NULL:置空刪除,假如主表中的一條數據記錄南北刪除,從表中與之相連的數據也將置空RESTRICT:受限刪除,假如主表中的一條數據被刪除,則在執行DELETE語句時系統會報錯,通知用戶與主表相對應的數據在從表中仍舊存在,但是與主表相對應的數據在從表中不被刪除,它是默認的方式CREA

9、TE TABLE T_result(stuID VARCHAR(15),curID VARCHAR(15),result DOUBLE,FOREIGN KEY (stuID) REFERCES T_student (stuID) ON DELETE CASCADE,PRIMARY KEY(stuID,curID)3.檢查約束CHECKCREATE TABLE T_curriculum(curID VARCHAR(15) PRIMARY KEY,curName VARCHAR(10),credit INT,CHECK(credit BETWEEN 3 AND 8)4.非空約束NOT NUL使用索

10、引1. 唯一索引:在數據表中使用UNIQUE可以為一個數據列定義一個唯一索引,唯一索引中的每一個索引值只對應數據表中的一條記錄,保證了數據列中記錄的唯一性2. 主索引:在數據表中使用PRIMARY KEY可以為一個數據列定義一個主索引,所謂的主索引就是在主鍵列中建立索引3. 單列索引:定義在數據表中一個數據列上的索引就是單列索引,一般在數據查詢時,假如WHERE子句中經常用到的數據表中的某一列作為查詢條件,就可以把該列創建為單列索引4. 復合索引:索引可以定義在一個數據表的多個數據列上,像這樣的索引被稱為復合索引5. 聚簇索引:創建與刪除索引CREATE UNIQUE|CLUSTER INDE

11、X index_nameON table_name(column_name 排序方式)排序:關鍵字ASC表示升序排列,關鍵字DESC表示降序排列修改數據庫中的表1. 向表中增加一列ALTER TABLE table_name ADD(column_name datatype constraint_condition)例如:ALTER TABLE T_teacher ADD salary INT NOT NULL2. 增加一個約束ALTER TABLE table_name ADD constraint_type (column_name)例如:ALTER TABLE dept ADD PRIM

12、ARY KEY (dept_ID)3. 增加一個索引ALTER TABLE table_name ADD INDEX(column_name1,column_name2)例如:ALTER TABLE T_curriculum ADD INDEX i_credit(credit)4. 修改表中的某一列ALTER TABLE table_name MODIFY column_name datatype例如:ALTER TABLE T_student MODIFY sex CHAR(2)5. 刪除表中的某一列ALTER TABLE table_name DROP column_name6. 刪除一個

13、約束條件ALTER TABLE table_name DROP constraint_type7. 刪除數據庫中的表DROP TABLE table_nameCASCADE CONSTRAINTS刪除表時要使用CASCADE CONSTRAINTS級聯刪除從表中的外鍵約束數據的查詢操作查詢全部列的數據記錄SELECT * FROM table_name or view_name,table_name1 or view_name1查詢表中指定的列SELECT 目標列,目標列FROM 表名或者視圖名,表名或者視圖名在SELECT語句中查詢數據表或者視圖指定的列時,在SELECT語句中指定的列名必需

14、是指定的數據表或者視圖中存在的列查詢表中不重復的記錄SELECT DISTINCT 目標列,目標列FROM 表名或者視圖名,表名或者視圖名使用列別名查詢SELECT 目標列 AS 列別名 ,目標列 AS 列別名FROM 表名或者視圖名 ,表名或者視圖名在SELECT語句中使用列別名的形式對數據表或者視圖查詢時,可以再在查詢的列名后面使用一個空格鍵來代替AS,空格后面再跟上列別名的名字。假如列別名對字母大小寫敏感,或者在使用包含有空格或者特殊字符的列別名,則必需使用單引號或者雙引號將其引起來,否則系統將報錯對查詢的記錄進行運算SELECT語句還可以使用算數運算符對指定的列進行運算,其中算術運算符

15、包括加減乘除以及模除,在SELECT語句中對指定的列進行算術運算符進行運算時,只會轉變顯示的結果,并不會轉變數據表中列的原有值使用連接符(|)連接字段在ORACLE中,可以使用|連接符連接多個字段,在使用連接符時,連接的數據類型應當是相同的,假如不同系統將會報錯,假如需要在連接的字段中加入字符或者是日期類型的值,需要將該字符值或者日期類型的值使用單引號引起來。留意,在MYSQL和MS SQL SERVER中并不支持連接符|,在MYSQL中可以使用CONCAT函數,在MS SQL SERVER中可以使用+來連接關于NULL值在數據庫中,假如沒有為該列賦值,而且該列也沒有默認值,此時查詢的結果就為

16、空,即NULL使用WHERE子句查詢表中滿足條件的記錄比較查詢比較運算符分為三類,算術比較運算符,BETWEEN AND ,IN算術比較運算符SQL語句中的算術比較運算符主要包括 = >= <= > < != <>(不等于) !>(不大于) !< (不小于),在SELECT 語句的WHERE子句中可以使用算術比較運算符對指定的列進行比較,應指出的是,在MS SQL SERVER中,<>不是不等于的意思WHERE 字段1 比較運算符 值在SQL語句中,假如在WHERE子句中比較的時整數型數據,則可以不用使用單引號,假如比較的時其他的數劇

17、類型,如字符串、日期等,則必需用單引號引起來,另外,WHERE 子句中比較運算符的左側和右側的數據類型必需是類型兼容的BETWEEN AND運算符字段1 BETWEEN 值1 AND 值2在SQL中使用BETWEEN AND 運算符可以查詢指定條件范圍的記錄,也可以使用 NOT BETWEEN AND運算符來排解一些記錄IN運算符查詢與列表匹配的記錄字段1 IN (屬性值1,屬性值2)在SQL語句中也可以使用NOT IN來排解一些記錄SELECT teaID,teaName,age,sex,deptFROM T_teacherWHERE dept IN(計算機系,數學系)字符串比較使用比較運算

18、符對字符串進行比較在使用比較運算符對字符串進行查詢和比較時,有的數據庫需要區分大小寫,如ORACLE,但是在MS SQL SERVER 和MYSQL中不區分,為了避開由于不留意字符串大小寫而查詢不到正確的結果,可以使用干將字符串轉換為大小的函數UPPER LOWER對字符串進行轉換使用BINARY關鍵字對字符串進行二進制比較BINARY可將字符串轉換為二進制對象再進行比較SELECT string1 比較運算符 BINARY string2或者SELECT BINARY string1 比較運算符 string2規律查詢在SQL中規律查詢主要包括AND OR NOT三種ANDSELECT st

19、uID,stuName,age,sexFROM T_studentWHERE age>20 AND sex=男SQL語句中AND運算符兩側的條件必需都為TRUE,否則將顯示FALSE使用OR運算符查詢滿足任一條件的記錄SELECT teaID,teaName,age,sex,dept,professionFROM T_teacher WHERE age>45 OR profession=教授使用NOT運算符查詢滿足相反條件的記錄在 MS SQL SERVER中,使用 代替NOT空值查詢當使用NULL查詢數據表中的記錄是否為空時,不能使用比較運算符,只能是用IS NULL或者使用IS

20、 NOT NULL,假如使用運算符對NULL進行比較其查詢條件返回的結果始終是FALSE,也就是說使用比較運算符對NULL值進行比較不會檢索出任何結果使用LIKE操作符實現模糊查詢匹配任意單個字符在SQL中,通配符“_”表示單個字符,一個“_”只能表示一個字符SELECT stuID,stuName,age,sex,birthFROM T_studentWHERE stuID LIKE s_3(WHERE stuID NOT LIKE s_3)MYSQL數據庫中的LIKE操作符進行匹配時,對字母的大小寫不敏感匹配0個或者多個字符通配符“%”表示0個或者多個字符SELECT stuID,stuN

21、ame,age,sex,birthFROM T_studentWHERE stuName LIKE 王%LIKE關鍵字后面的匹配符必需使用單引號,對字母進行匹配時,還要留意區分大小寫使用轉義字符假如在查詢時數據表中的某個字段中的字符值本身就包含了“%”和“_”,這時就要用到轉義字符,用關鍵字ESCAPE來轉義,步驟:1. 在需要轉義的“%” “_”字符前加一個轉義符,該轉義符可以是任意字符2. 在ESCAPE關鍵字后指定該轉義字符的名稱SELECT deptID,deptNameFROM T_deptWHERE deptID LIKE %$_% ESCAPE $使用REGEXP關鍵字進行模式匹

22、配1. 用來匹配字符串的開頭2. $ 用來匹配字符串的結尾3. 在方括號中的任意字符都可以匹配4. + 表示用于匹配的該字符在匹配的字符串中消滅至少一次或多次5. * 表示用于匹配的該字符在匹配的字符串中消滅零次或者多次6. () 括號中的內容將被看成是一個整體7. m 整數m表示花括號中的字符串需要消滅的次數表中數據的排序與分組使用GROUP BY 子句對數據記錄進行排序指定表中的一列進行排序使用ORDER BY可對查詢的結果進行排序,ASC表升序,DESC表降序ORDER BY column1 ASC|DESCSELECT teaID,teaName,dept,profession,sal

23、aryFROM T_teacherORDER BY salary ASC假如指定要排序的列中存在空值,則在升序排列中顯示在最前,降序排列中顯示在最終ORDER BY也可以放在WHERE子句后面SELECT teaID,teaName,dept,profession,salaryFROM T_teacherWHERE dept=計算機系ORDER BY salary ASC指定表中列的位置序號進行排序SELECT teaID,teaName,dept,profession,salaryFROM T_teacherORDER BY 5 ASCsalary的位置是5,可以用5來代替對SELECT語句

24、中的非選擇列進行排序使用ORDER BY子句中也可以對沒有在SELECT中消滅的選擇列進行排序操作SELECT teaID,teaName,dept,professionFROM T_teacherWHERE dept=計算機系ORDER BY salary ASC不過一般的狀況下都會使用在SELECT中消滅的列進行排序,這樣顯得很直觀指定數據表中的多列進行排序ORDER BY可以指定數據表中的多列進行排序操作,這時指定排序的列之間使用分號隔開ORDER BY column1,column2 ASC|DESCSLEECT teaID,teaName,dept,profession,salary

25、FROM T_teacherORDER BY dept,salary使用ORDER BY 進行多列排序時,遵循以下規章:1. 依據ORDER BY 指定的第一列,依據指定的升序或者降序進行排序2. 當ORDER BY 子句中指定的第一列中消滅相同的數據時,再依據ORDER BY指定的其次列的升序或者降序進行排列3. 當ORDER BY 子句中指定的其次列中消滅相同的數據時,再依據ORDER BY指定的第三列的升序或者降序進行排列,依次類推常用的聚合函數函數功能COUNT(列|表達式)計算給定列或者表達式中的非空行數COUNT(*)計算數據表中的總行數,包括空值MAX(列|表達式)計算給定列或者表達式中的最大值MIN()SUM(列|表達式)AVG()使用MYSQL數據庫限制結果集行數LIMIT n LIMIT offset

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論