天天看點

肝通宵寫了三萬字把SQL資料庫的所有指令,函數,運算符講得明明白白講解,内容實在豐富,建議收藏+三連好評!(二)

INSERT INTO 插入語句

該INSERT INTO語句用于在表中插入新記錄。

INSERT文法

可以INSERT INTO 用兩種方式編寫語句:

1- 指定要插入的列名和值:

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);      

2-如果要為表的所有列添加值,則無需在 SQL 查詢中指定列名。但是,請確定值的順序與表中的列順序相同。在這裡, INSERT INTO文法如下:

INSERT INTO table_name
VALUES (value1, value2, value3, ...);      

我們假設還是有着樣一個Customers表:

肝通宵寫了三萬字把SQL資料庫的所有指令,函數,運算符講得明明白白講解,内容實在豐富,建議收藏+三連好評!(二)

INSERT示例

以下 SQL 語句在“Customers”表中插入一條新記錄:

INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
VALUES ('Cardinal', 'Tom B. Erichsen', 'Skagen 21', 'Stavanger', '4006', 'Norway');      

運作顯示如下:

肝通宵寫了三萬字把SQL資料庫的所有指令,函數,運算符講得明明白白講解,内容實在豐富,建議收藏+三連好評!(二)

練習:

表中插入一條新記錄。

INSERT INTO Customers 
(

CustomerName, 
Address, 
City, 
PostalCode,
Country
)

VALUES
 
(

'Hekkan Burger',
'Gateveien 15',
'Sandnes',
'4306',
'Norway'
)
;      

NULL 空值

具有 NULL 值的字段是沒有值的字段。如果表中的字段是可選的,則可以在不向該字段添加值的情況下插入新記錄或更新記錄。然後,該字段将儲存為 NULL 值。

注意: NULL 值不同于零值或包含空格的字段。具有 NULL 值的字段是在建立記錄期間留白的字段!

如何測試 NULL 值?

無法使用比較運算符(例如 =、< 或 <>)測試 NULL 值。我們将不得不改用IS NULL和 IS NOT NULL運算符。

IS NULL 文法

SELECT column_names
FROM table_name
WHERE column_name IS NULL;      

IS NOT NULL 文法

SELECT column_names
FROM table_name
WHERE column_name IS NOT NULL;      

我們還是以”Customers”表為例子:

肝通宵寫了三萬字把SQL資料庫的所有指令,函數,運算符講得明明白白講解,内容實在豐富,建議收藏+三連好評!(二)

IS NULL 運算符

列出了 "Address"字段中具有 NULL 值的所有客戶:

SELECT CustomerName, ContactName, Address
FROM Customers
WHERE Address IS NULL;      

提示:始終使用 IS NULL 來查找 NULL 值。

IS NOT NULL 運算符

該IS NOT NULL運算符用于測試非空值(NOT NULL 值)。

列出了在 "Address”字段中具有值的所有客戶:

SELECT CustomerName, ContactName, Address
FROM Customers
WHERE Address IS NOT NULL;      

從列為空的Customers位置選擇所有記錄PostalCode。

SELECT * FROM Customers
WHERE PostalCode IS NULL;      

UPDATE更新語句

UPDATE語句用于修改表中的現有記錄。

UPDATE 文法:

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;      

注意: 更新表中的記錄時要小心!注意 WHERE語句中的子句UPDATE。該WHERE子句指定應該更新哪些記錄。如果省略該WHERE子句,表中的所有記錄都将被更新!

我們還是以“Customers”表為例:

肝通宵寫了三萬字把SQL資料庫的所有指令,函數,運算符講得明明白白講解,内容實在豐富,建議收藏+三連好評!(二)

更新表

更新CustomerID = 1的使用者名字和城市資料

UPDATE Customers
SET ContactName = 'Alfred Schmidt', City= 'Frankfurt'
WHERE CustomerID = 1;      

更新過後将會如下:

肝通宵寫了三萬字把SQL資料庫的所有指令,函數,運算符講得明明白白講解,内容實在豐富,建議收藏+三連好評!(二)

更新多條記錄

該WHERE子句确定将更新多少條記錄。

将國家為"Mexico"的所有記錄的 ContactName 更新為“Juan”:

UPDATE Customers
SET ContactName='Juan'
WHERE Country='Mexico';      

更新後将會變成:

肝通宵寫了三萬字把SQL資料庫的所有指令,函數,運算符講得明明白白講解,内容實在豐富,建議收藏+三連好評!(二)

更新警告!

更新記錄時要小心。如果省略該 WHERE子句,則所有記錄都将被更新!

例如:

UPDATE Customers
SET ContactName='Juan';      

則會導緻如下結果:

肝通宵寫了三萬字把SQL資料庫的所有指令,函數,運算符講得明明白白講解,内容實在豐富,建議收藏+三連好評!(二)

更新表City中所有記錄的Customers列。

UPDATE Customers
SET City = 'Oslo';      

DELETE删除語句

該DELETE語句用于删除表中的現有記錄。

删除文法

DELETE FROM table_name WHERE condition;      

注意: 删除表中的記錄時要小心!注意 WHERE語句中的子句 DELETE。該WHERE條款指定應删除哪些記錄。如果省略該WHERE子句,表中的所有記錄都将被删除!

哈哈哈哈,我們還是以“Customers”表為例子如下:

肝通宵寫了三萬字把SQL資料庫的所有指令,函數,運算符講得明明白白講解,内容實在豐富,建議收藏+三連好評!(二)

删除示例

從“Customers”表中删除客戶“Alfreds Futterkiste”:

DELETE FROM Customers WHERE CustomerName='Alfreds Futterkiste';      

于是就變成這樣:

肝通宵寫了三萬字把SQL資料庫的所有指令,函數,運算符講得明明白白講解,内容實在豐富,建議收藏+三連好評!(二)

删除所有記錄

可以在不删除表的情況下删除表中的所有行。這意味着表結構、屬性和索引将保持不變

DELETE FROM table_name;      

例如:删除“Customers”表中的所有行,但不删除該表:

DELETE FROM Customers;      

練習:從Customers表中删除Country值為“挪威”的所有記錄。

DELETE FROM Customers
WHERE Country = 'Norway';      

TOP、LIMIT、FETCH FIRST 或 ROWNUM限制子句

SELECT TOP 子句

SELECT TOP子句用于指定要傳回的記錄數。SELECT TOP子句在具有數千條記錄的大表上很有用。傳回大量記錄會影響性能。

注意: 并非所有資料庫系統都支援該 SELECT TOP子句。MySQL 支援LIMIT子句選擇有限數量的記錄,而 Oracle 使用FETCH FIRST n ROWSONLYROWNUM

Server / MS 通路文法:

SELECT TOP number|percent column_name(s)
FROM table_name
WHERE condition;      

MySQL 文法:

SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number;      

Oracle 12 文法:

SELECT column_name(s)
FROM table_name
ORDER BY column_name(s)
FETCH FIRST number ROWS ONLY;      

比如還是“Customers”表如下

肝通宵寫了三萬字把SQL資料庫的所有指令,函數,運算符講得明明白白講解,内容實在豐富,建議收藏+三連好評!(二)

TOP、LIMIT 和 FETCH FIRST示例

從 "Customers表中選擇前三個記錄(用于 SQL Server/MS Access):

SELECT TOP 3 * FROM Customers;      

MySQL 的等效示例:

SELECT * FROM Customers
LIMIT 3;      

Oracle 的等效示例:

SELECT * FROM Customers
FETCH FIRST 3 ROWS ONLY;      

TOP PERCENT 示例

從"Customers“表中選擇前 50% 的記錄(用于 SQL Server/MS Access):

SELECT TOP 50 PERCENT * FROM Customers;      
SELECT * FROM Customers
FETCH FIRST 50 PERCENT ROWS ONLY;      

添加 WHERE 條款

從“Customers”表中選擇前三個記錄,其中國家是“Germany”(對于 SQL Server/MS Access):

SELECT TOP 3 * FROM Customers
WHERE Country='Germany';      

MySQL 的等效示例

SELECT * FROM Customers
WHERE Country='Germany'
LIMIT 3;      
SELECT * FROM Customers
WHERE Country='Germany'
FETCH FIRST 3 ROWS ONLY;