sql基礎教程
sql教程
什么是sql?
- SQL 指結構化查詢語言
- SQL 使我們有能力訪問資料庫
- SQL 是一種 ANSI 的標準計算機語言
sql可以做什么
- SQL 面向資料庫執行查詢
- SQL 可從資料庫取回資料
- SQL 可在資料庫中插入新的記錄
- SQL 可更新資料庫中的資料
- SQL 可從資料庫洗掉記錄
- SQL 可創建新資料庫
- SQL 可在資料庫中創建新表
- SQL 可在資料庫中創建存盤程序
- SQL 可在資料庫中創建視圖
- SQL 可以設定表、存盤程序和視圖的權限
SQL 是一種標準 - 但是…
-
SQL 是一門 ANSI 的標準計算機語言,用來訪問和操作資料庫系統,SQL 陳述句用于取回和更新資料庫中的資料,SQL 可與資料庫程式協同作業,比如 MS Access、DB2、Informix、MS SQL Server、Oracle、Sybase 以及其他資料庫系統,
不幸地是,存在著很多不同版本的 SQL 語言,但是為了與 ANSI 標準相兼容,它們必須以相似的方式共同地來支持一些主要的關鍵詞(比如 SELECT、UPDATE、DELETE、INSERT、WHERE 等等),
**注釋:**除了 SQL 標準之外,大部分 SQL 資料庫程式都擁有它們自己的私有擴展!
在您網站中使用sql
- RDBMS 資料庫程式(比如 MS Access, SQL Server, MySQL)
- 服務器端腳本語言(比如 PHP 或 ASP)
- SQL
- HTML / CSS
RDBMS
-
RDBMS 指的是關系型資料庫管理系統,
RDBMS 是 SQL 的基礎,同樣也是所有現代資料庫系統的基礎,比如 MS SQL Server, IBM DB2, Oracle, MySQL 以及 Microsoft Access,
RDBMS 中的資料存盤在被稱為表(tables)的資料庫物件中,
表是相關的資料項的集合,它由列和行組成,
sql語法
資料庫表
-
一個資料庫通常包含一個或多個表,每個表由一個名字標識(例如“客戶”或者“訂單”),表包含帶有資料的記錄(行),
下面的例子是一個名為 “Persons” 的表:
Id LastName FirstName Address City 1 Adams John Oxford Street London 2 Bush George Fifth Avenue New York 3 Carter Thomas Changan Street Beijing - 上面的表包含三條記錄(每一條對應一個人)和五個列(Id、姓、名、地址和城市),
sql陳述句
-
您需要在資料庫上執行的大部分作業都由 SQL 陳述句完成,
下面的陳述句從表中選取 LastName 列的資料:
SELECT LastName FROM Persons -
結果集類似這樣:
LastName Adams Bush Carter
SQL DML 和DDL
-
可以把 SQL 分為兩個部分:資料操作語言 (DML) 和 資料定義語言 (DDL),
SQL (結構化查詢語言)是用于執行查詢的語法,但是 SQL 語言也包含用于更新、插入和洗掉記錄的語法,
查詢和更新指令構成了 SQL 的 DML 部分:
- SELECT - 從資料庫表中獲取資料
- UPDATE - 更新資料庫表中的資料
- DELETE - 從資料庫表中洗掉資料
- INSERT INTO - 向資料庫表中插入資料
-
SQL 的資料定義語言 (DDL) 部分使我們有能力創建或洗掉表格,我們也可以定義索引(鍵),規定表之間的鏈接,以及施加表間的約束,
SQL 中最重要的 DDL 陳述句:
- CREATE DATABASE - 創建新資料庫
- ALTER DATABASE - 修改資料庫
- CREATE TABLE - 創建新表
- ALTER TABLE - 變更(改變)資料庫表
- DROP TABLE - 洗掉表
- CREATE INDEX - 創建索引(搜索鍵)
- DROP INDEX - 洗掉索引
sql select
sql select 陳述句
-
SELECT 陳述句用于從表中選取資料,
結果被存盤在一個結果表中(稱為結果集),
-
sql select語法
SELECT 列名稱 FROM 表名稱SELECT * FROM 表名稱- 對大小寫不敏感,SELECT 等效于 select,
sql select實體
-
如需獲取名為 “LastName” 和 “FirstName” 的列的內容(從名為 “Persons” 的資料庫表),請使用類似這樣的 SELECT 陳述句:
SELECT LastName,FirstName FROM Persons -
“Persons”表
Id LastName FirstName Address City 1 Adams John Oxford Street London 2 Bush George Fifth Avenue New York 3 Carter Thomas Changan Street Beijing 結果
LastName FirstName Adams John Bush George Carter Thomas
sql select *實體
-
現在我們希望從 “Persons” 表中選取所有的列,
請使用符號 * 取代列的名稱,就像這樣:
SELECT * FROM Persons- 提示:星號(*)是選取所有列的快捷方式,
結果
Id LastName FirstName Address City 1 Adams John Oxford Street London 2 Bush George Fifth Avenue New York 3 Carter Thomas Changan Street Beijing
sql select distinct
sql select distinct陳述句
-
在表中,可能會包含重復值,這并不成問題,不過,有時您也許希望僅僅列出不同(distinct)的值,
關鍵詞 DISTINCT 用于回傳唯一不同的值,
-
語法
SELECT DISTINCT 列名稱 FROM 表名稱
使用distinct關鍵詞
-
如果要從 “Company” 列中選取所有的值,我們需要使用 SELECT 陳述句:
SELECT Company FROM Orders-
order 表
Company OrderNumber IBM 3532 W3School 2356 Apple 4698 W3School 6953 結果
Company IBM W3School Apple W3School
-
-
請注意,在結果集中,W3School 被列出了兩次,
如需從 Company" 列中僅選取唯一不同的值,我們需要使用 SELECT DISTINCT 陳述句:
SELECT DISTINCT Company FROM Orders結果
Company IBM W3School Apple
sql where陳述句
where陳述句
-
語法
SELECT 列名稱 FROM 表名稱 WHERE 列 運算子 值 -
下面的運算子可在 WHERE 子句中使用:
運算子 描述 = 等于 <> 不等于 > 大于 < 小于 >= 大于等于 <= 小于等于 BETWEEN 在某個范圍內 LIKE 搜索某種模式 - 注釋:在某些版本的 SQL 中,運算子 <> 可以寫為 !=,
使用where陳述句
-
如果只希望選取居住在城市 “Beijing” 中的人,我們需要向 SELECT 陳述句添加 WHERE 子句:
SELECT * FROM Persons WHERE City='Beijing' -
persons 表
LastName FirstName Address City Year Adams John Oxford Street London 1970 Bush George Fifth Avenue New York 1975 Carter Thomas Changan Street Beijing 1980 Gates Bill Xuanwumen 10 Beijing 1985 結果
LastName FirstName Address City Year Carter Thomas Changan Street Beijing 1980 Gates Bill Xuanwumen 10 Beijing 1985
引號的使用
-
文本值
這是正確的: SELECT * FROM Persons WHERE FirstName='Bush' 這是錯誤的: SELECT * FROM Persons WHERE FirstName=Bush -
數值
這是正確的: SELECT * FROM Persons WHERE Year>1965 這是錯誤的: SELECT * FROM Persons WHERE Year>'1965'
sql and & or 運算子
- AND 和 OR 運算子用于基于一個以上的條件對記錄進行過濾,
and和or 運算子
-
AND 和 OR 可在 WHERE 子陳述句中把兩個或多個條件結合起來,
如果第一個條件和第二個條件都成立,則 AND 運算子顯示一條記錄,
如果第一個條件和第二個條件中只要有一個成立,則 OR 運算子顯示一條記錄,
-
原始的表(用在例子中):
LastName FirstName Address City Adams John Oxford Street London Bush George Fifth Avenue New York Carter Thomas Changan Street Beijing Carter William Xuanwumen 10 Beijing
and運算子實體
- 使用 AND 來顯示所有姓為 “Carter” 并且名為 “Thomas” 的人:
SELECT * FROM Persons WHERE FirstName='Thomas' AND LastName='Carter'
結果
| LastName | FirstName | Address | City |
|---|---|---|---|
| Carter | Thomas | Changan Street | Beijing |
or運算子實體
-
使用 OR 來顯示所有姓為 “Carter” 或者名為 “Thomas” 的人:
SELECT * FROM Persons WHERE firstname='Thomas' OR lastname='Carter'結果
LastName FirstName Address City Carter Thomas Changan Street Beijing Carter William Xuanwumen 10 Beijing
結合and和or運算子
-
我們也可以把 AND 和 OR 結合起來(使用圓括號來組成復雜的運算式):
SELECT * FROM Persons WHERE (FirstName='Thomas' OR FirstName='William') AND LastName='Carter'結果
LastName FirstName Address City Carter Thomas Changan Street Beijing Carter William Xuanwumen 10 Beijing
sql order by陳述句
- order by 陳述句用于對結果集的行排序
order by陳述句
-
ORDER BY 陳述句用于根據指定的列對結果集進行排序,
ORDER BY 陳述句默認按照升序對記錄進行排序,
如果您希望按照降序對記錄進行排序,可以使用 DESC 關鍵字,
原始的表(用在例子中的)
-
order表:
Company OrderNumber IBM 3532 W3School 2356 Apple 4698 W3School 6953
實體1
-
以字母順序顯示公司名稱:
SELECT Company, OrderNumber FROM Orders ORDER BY Company結果
Company OrderNumber Apple 4698 IBM 3532 W3School 6953 W3School 2356
實體2
-
以字母順序顯示公司名稱(Company),并以數字順序顯示順序號(OrderNumber):
SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber結果
Company OrderNumber Apple 4698 IBM 3532 W3School 2356 W3School 6953
實體3
-
以逆字母順序顯示公司名稱:
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC結果
Company OrderNumber W3School 6953 W3School 2356 IBM 3532 Apple 4698
實體4
-
以逆字母順序顯示公司名稱,并以數字順序顯示順序號:
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC結果
Company OrderNumber W3School 2356 W3School 6953 IBM 3532 Apple 4698
sql insert 陳述句
insertinto陳述句用于表格中插入新的行
-
語法
INSERT INTO 表名稱 VALUES (值1, 值2,....) -
我們也可以指定所要插入資料的列:
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
插入新的行
-
persons表
LastName FirstName Address City Carter Thomas Changan Street Beijing -
sql 陳述句
INSERT INTO Persons VALUES ('Gates', 'Bill', 'Xuanwumen 10', 'Beijing')結果
LastName FirstName Address City Carter Thomas Changan Street Beijing Gates Bill Xuanwumen 10 Beijing
在指定的列中插入資料
-
persons 表
LastName FirstName Address City Carter Thomas Changan Street Beijing Gates Bill Xuanwumen 10 Beijing -
sql陳述句
INSERT INTO Persons (LastName, Address) VALUES ('Wilson', 'Champs-Elysees')結果
LastName FirstName Address City Carter Thomas Changan Street Beijing Gates Bill Xuanwumen 10 Beijing Wilson Champs-Elysees
sql update陳述句
update 陳述句
- Update 陳述句用于修改表中的資料,
語法
UPDATE 表名稱 SET 列名稱 = 新值 WHERE 列名稱 = 某值
persons表
| LastName | FirstName | Address | City |
|---|---|---|---|
| Gates | Bill | Xuanwumen 10 | Beijing |
| Wilson | Champs-Elysees |
更新某一行中的一個列
-
我們為 lastname 是 “Wilson” 的人添加 firstname:
UPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson'結果
LastName FirstName Address City Gates Bill Xuanwumen 10 Beijing Wilson Fred Champs-Elysees
更新某一行中的若干列
-
我們會修改地址(address),并添加城市名稱(city):
UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing' WHERE LastName = 'Wilson'結果
LastName FirstName Address City Gates Bill Xuanwumen 10 Beijing Wilson Fred Zhongshan 23 Nanjing
sql delete陳述句
delete陳述句
- DELETE 陳述句用于洗掉表中的行,
語法
DELETE FROM 表名稱 WHERE 列名稱 = 值
person表:
| LastName | FirstName | Address | City |
|---|---|---|---|
| Gates | Bill | Xuanwumen 10 | Beijing |
| Wilson | Fred | Zhongshan 23 | Nanjing |
洗掉某行
-
fred willson 會被洗掉
DELETE FROM Person WHERE LastName = 'Wilson'結果
LastName FirstName Address City Gates Bill Xuanwumen 10 Beijing
洗掉所有的行
-
可以在不洗掉表的情況下洗掉所有的行,這意味著表的結構、屬性和索引都是完整的:
DELETE FROM table_name或者
DELETE * FROM table_name
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/215293.html
標籤:其他
上一篇:【QT】容器類的幾點使用說明
下一篇:mysql my.ini 配置
