寫在前面
本文記錄對表中數據的操作的基本SQL語句,以對數據庫數據操作“增刪改查”來覆蓋復習SQL語句,對於數據庫的創建、刪除、和對表的創建、修改、刪除不做記錄,因為現在這個可以很高效方便的通過圖形界面快速完成,所以本文僅僅記錄一些數據操作的、邏輯性的數據操作SQL語句——數據的增、刪、改、查,其中“查”為重難點,所以寫在后面,詳細記錄。
建立一個簡單的表來做實驗 ,表中pers為person的簡寫,persId自動增長
增
增,即向數據表中插入數據或者說添加新的一條記錄。
語句 :INSERT INTO ...
語法1:
INSERT INTO 表名稱 VALUES (值1, 值2,....)
例子:
1 INSERT INTO person 2 VALUES (1,'張華','男','閱讀')
對於這種不在表名后面寫出字段(屬性)的插入方式,需要在VALUES值中添加所有的字段,包括可null的字段和自動增長的id字段都要添加進去,來看反例:
- 不在values中添加可自動增長的persId:
1 INSERT INTO person 2 VALUES ('小華','男','編程')
- 不在values中添加可null字段
1 INSERT INTO person 2 VALUES (3'小華','男')
語法2:
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
例子
- 不添加ID(已經設置自增長)和不添加可null項,僅僅添加not null:
1 INSERT INTO person(persName) 2 VALUES ('小華')
這個沒問題,避免了語法1中的不足,在開發中更為靈活,但是要注意,寫入的值對應好相對的屬性,避免一些由於類型相同而錯位的問題。
語法3:
在values的值一次加入多組
1 insert into students 2 values (5,'李白','男',18),(6,'后羿','男',19),(7,'周哥','男',22)
改
改,即對數據中已有數據的更新、修改。
語句:Update...SET...
語法
UPDATE 表名稱 SET 列名稱 = 新值 WHERE 列名稱 = 某值
以下是例子,一張修改前的表如下
執行修改:
UPDATE person
SET persSex = '男', persHobby = '思考' WHERE persId = 4
修改結果:
刪
刪,即刪除,刪除數據庫中不用的數據,具體的是刪除整個表(這里不寫)、刪除某條記錄。
語句:DELETE
語法
DELETE FROM 表名稱 WHERE 列名稱 = 值
以下是一個栗子:
刪除前:
執行刪除
1 DELETE FROM person 2 WHERE persId = 4
刪除后:
查
查,即查詢,通過一定條件限制,查詢出符合要求的數據,查有很多技巧和用處,是重難點。
語句:SELECT
基本查詢語句:
簡單查詢單個或多個屬性:
SELECT 列名稱 FROM 表名稱
查詢全部屬性:
SELECT * FROM 表名稱
基礎查詢
- 結果樣式:order by排序 ASC:小到大,DESC:大到小;group by 分組、distinct去重
- 笛卡爾積:select * from table1,table2
- 模糊查詢:like和 _ 和 %
- 統計處理:count()、avg()、sum()、max()、min()
- 條件限定:having 、where、in/not in和exists、between_and
- 屬性、表重命名為新的屬性、表:AS
- 運算符:> < = != or and not
- 查詢某個屬性並修改其值:select Freight + 10 as' 運費',name as' 姓名'將一個查詢結果作為下一次查詢的條件(例子:【查詢1】 查詢出雇佣日期比Margaret Peacock還晚的員工。(Employees)
-
1 select * 2 from Employees 3 where HireDate >( 4 select HireDate 5 from Employees 6 where FirstName = 'Margaret ' 7 AND LastName = 'Peacock' 8 )
-
將查詢結果存儲為一張新表
1 CREATE table mytableone AS 2 SELECT * 3 FROM students, 4 (SELECT student,classes,score 5 FROM score_t 6 WHERE score > 80) as R1 7 WHERE students.id = R1.student
高級查詢
集合操作
- 並:union、union all(保留重復行),R U S,和並兩表,要求兩表的屬性類型相同
- 差(defference),except,R-S,得出的結果是R中有的S中沒有的行
- 交:intersect,兩表共有的
連接 join(笛卡爾積的簡化)
- 內鏈接 join,有的平台用 inner join
- 左外鏈接 left [outer] join,
- 右鏈接 right join
- 全外鏈接 full join
除(覆蓋)運算