1. 程式人生 > >Sql學習內容

Sql學習內容

null apple server org 數據操作 reat desc limit app

基礎部分:
SQL分為兩個部分:數據操作語言(DML)和數據定義語言(DDL) 數據庫管理系統和關系數據庫管理系統
查詢和更新指令構成了 SQL 的 DML 部分:
SELECT - 從數據庫表中獲取數據
UPDATE - 更新數據庫表中的數據
DELETE - 從數據庫表中刪除數據
INSERT INTO - 向數據庫表中插入數據

SQL 中最重要的 DDL 語句:
CREATE DATABASE - 創建新數據庫
ALTER DATABASE - 修改數據庫
CREATE TABLE - 創建新表
ALTER TABLE - 變更(改變)數據庫表
DROP TABLE - 刪除表
CREATE INDEX - 創建索引(搜索鍵)
DROP INDEX - 刪除索引

SELECT語法:
select 列名稱 From 表名稱/ select * from 表名稱
實例:SELECT LastName,FirstName FROM Persons
去除重復值:SELECT DISTINCT 列名稱 FROM 表名稱
實例:SELECT DISTINCT Company From Orders

WHERE子句語法:
SELECT 列名稱 FROM 表名稱 WHERE 列 運算符 值
文本實例:SELECT * FROM Persons WHERE FirstName=‘Bush‘
數值實例:SELECT * FROM Persons WHERE Year>1965
總結:文本的值用‘‘,數值不加單引號

And和Or運算符:
SELECT * FROM Persons WHERE FirstName=‘Thomas‘ AND LastName=‘Carter‘
SELECT * FROM Persons WHERE firstname=‘Thomas‘ OR lastname=‘Carter‘
組合And和Or運算符:
SELECT * FROM Persons WHERE (FirstName=‘Thomas‘ OR FirstName=‘William‘) AND LastName=‘Carter‘

order by語句(ASC為升序,DESC為降序):
SELECT Company, OrderNumber FROM Orders ORDER BY Company
以字母順序顯示公司名稱(Company),並以數字順序顯示順序號(OrderNumber):
SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber
以逆字母順序顯示公司名稱:
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC
以逆字母順序顯示公司名稱,並以數字順序顯示順序號:
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC
結果:
Company OrderNumber
W3School 2356
W3School 6953
IBM 3532
Apple 4698

insert into語句:
insert into 表名 values (值1,值2,值3)
指定數據插入的列:insert into table_name (列1,列2,列3) values (值1,值2,值3)
實例:
INSERT INTO Persons VALUES (‘Gates‘, ‘Bill‘, ‘Xuanwumen 10‘, ‘Beijing‘)
INSERT INTO Persons (LastName, Address) VALUES (‘Wilson‘, ‘Champs-Elysees‘)
update語句:
update 表名 set 列名稱 = 新值 where 列名稱=某值
實例:
更新某一行中的一個列:UPDATE Person SET FirstName = ‘Fred‘ WHERE LastName = ‘Wilson‘
更新某一行中的若幹列:UPDATE Person SET Address = ‘Zhongshan 23‘, City = ‘Nanjing‘ WHERE LastName = ‘Wilson‘
DELETE語句:
DELETE from 表名稱 where 列名稱 = 值
實例:
刪除某行:Delete from Person Where lastname = ‘Wilson‘
刪除整個表內容:Delete * from Person

高級部分:
Top:
SQL Server:SELECT TOP number|percent 列名/column_name(s) FROM table_name
MySQL:SELECT 列名 FROM table_name LIMIT number
Oracle:SELECT 列名 FROM table_name WHERE ROWNUM <= number
實例:
選取頭兩行記錄:SELECT TOP 2 * FROM Persons
選取50%的記錄:SELECT TOP 50 PERCENT * FROM Persons
Like:
select 列名 from 表名 where 列名 like 表達式(‘%a%‘)
實例:
SELECT * FROM Persons WHERE City LIKE ‘%lon%‘
NOT LIKE:SELECT * FROM Persons WHERE City NOT LIKE ‘%lon%‘
通配符:"%"替代一個或多個字符,"_"僅替代一個字符,"[abc]"字符中任意一個單一字符,"[^abc]或[!abc]"不在字符列中的任何單一字符
實例:
SELECT * FROM Persons WHERE FirstName LIKE ‘_eorge‘
SELECT * FROM Persons WHERE City LIKE ‘[ALN]%‘
SELECT * FROM Persons WHERE City LIKE ‘[!ALN]%‘
IN:IN 操作符允許我們在 WHERE 子句中規定多個值
select 列名 from 表名 where 列名 in (value1,value2,...)
實例:
SELECT * FROM Persons WHERE LastName IN (‘Adams‘,‘Carter‘)
Between:選取介於兩個值之間的數據範圍
select 列名 from 表名 where 列名 between value1 and value2
實例:
SELECT * FROM Persons WHERE LastName BETWEEN ‘Adams‘ AND ‘Carter‘
not between:SELECT * FROM Persons WHERE LastName NOT BETWEEN ‘Adams‘ AND ‘Carter‘
Alias別名:
給表取別名:select 列名 from 表名 as 別名
給列名取別名:select 列名 as 別名 from 表名
實例:
SELECT LastName AS Family, FirstName AS Name FROM Persons
Join:用於根據兩個或多個表中的列之間的關系,從這些表中查詢數據
兩表查詢and:SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons, Orders
WHERE Persons.Id_P = Orders.Id_P
inner join:SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P = Orders.Id_P
ORDER BY Persons.LastName
inner join寫法:select 列名 from 表1 inner join 表2 on 表1.列名 = 表2.列名
left join寫法: select 列名 from 表1 left join 表2 on 表1.列名 = 表2.列名
right join寫法: select 列名 from 表1 right join 表2 on 表1.列名 = 表2.列名
UNION:操作符用於合並兩個或多個 SELECT 語句的結果集
select 列名 from 表1 UNION select 列名 from 表2
UNION選取不同的值,UNION ALL選取所有值
Create Datebase:
Create Database database_name
實例:
CREATE DATABASE my_db
CREATE TABLE:
Create table 表名稱
(
列名稱1 數據類型 [約束類型],
列名稱2 數據類型 [約束類型],
列名稱3 數據類型 [約束類型],
...
)
實例:
CREATE TABLE Persons
(
Id_P int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
約束類型:
NOT NULL:不接受NULL值
UNIQUE:唯一約束
為已有的表添加唯一約束: ALTER TABLE Persons ADD UNIQUE (Id_P)
撤銷UNIQUE約束:
DROP CONSTRAINT uc_PersonID
PRIMARY KEY:
為已有的表添加PRIMARY KEY:ALTER TABLE Persons ADD PRIMARY KEY (ID_P)
撤銷PRIMARY KEY:ALTER TABLE Persons DROP CONSTRAINT pk_PersonID
FOREIGN KEY約束:
CREATE TABLE Orders
(
Id_O int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
Id_P int FOREIGN KEY REFERENCES Persons(Id_P)
)
為已有的表添加FOREIGN KEY約束:
ALTER TABLE Orders
ADD FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)
撤銷FOREIGN KEY:ALTER TABLE Orders DROP CONSTRAINT fk_PerOrders

DROP:
Drop index:Drop index table_name.index_name
Drop table:Drop table table_name
Drop database:Drop database database_name
清楚表數據不刪除結構:Truncate table 表名稱
Alter:
添加列:Alter table table_name add 列名稱 數據類型
刪除列: Alter table table_name drop column 列名稱
改變列數據類型:Alter table table_name Alter column 列名稱 數據類型

View:Create View:
CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition
實例:
CREATE VIEW [Current Product List] AS
SELECT ProductID,ProductName
FROM Products
WHERE Discontinued=No
更新視圖:
CREATE VIEW [Current Product List] AS
SELECT ProductID,ProductName,Category
FROM Products
WHERE Discontinued=No
撤銷視圖:
DROP VIEW view_name
NULL值:判斷方法,is null ,is not null
實例:
SELECT LastName,FirstName,Address FROM Persons
WHERE Address IS NULL

SELECT LastName,FirstName,Address FROM Persons
WHERE Address IS NOT NULL

isnull():如果是Null值參加計算為0
SELECT ProductName,UnitPrice*(UnitsInStock+ISNULL(UnitsOnOrder,0))
FROM Products
子查詢:在一個查詢中,條件是另一個查詢,實例
SELECT Customer FROM Orders
WHERE OrderPrice>(SELECT AVG(OrderPrice) FROM Orders)

找出沒有選修過“李明”老師講授課程的所有學生姓名
--實現代碼:
Select SNAME FROM S Where NOT EXISTS( Select * FROM SC,C Where SC.CNO=C.CNO AND CNAME=‘李明‘ AND SC.SNO=S.SNO)
Count:計算客戶"Carter"的訂單數
SELECT COUNT(Customer) AS CustomerNilsen FROM Orders
WHERE Customer=‘Carter‘
計算總的行數:
SELECT COUNT(*) AS NumberOfOrders FROM Orders
計算不同客戶的數目:
SELECT COUNT(DISTINCT Customer) AS NumberOfCustomers FROM Orders
Now():返回當前日期和時間,SELECT ProductName, UnitPrice, Now() as PerDate FROM Products


基礎部分:
SQL分為兩個部分:數據操作語言(DML)和數據定義語言(DDL) 數據庫管理系統和關系數據庫管理系統
查詢和更新指令構成了 SQL 的 DML 部分:
SELECT - 從數據庫表中獲取數據
UPDATE - 更新數據庫表中的數據
DELETE - 從數據庫表中刪除數據
INSERT INTO - 向數據庫表中插入數據

SQL 中最重要的 DDL 語句:
CREATE DATABASE - 創建新數據庫
ALTER DATABASE - 修改數據庫
CREATE TABLE - 創建新表
ALTER TABLE - 變更(改變)數據庫表
DROP TABLE - 刪除表
CREATE INDEX - 創建索引(搜索鍵)
DROP INDEX - 刪除索引

SELECT語法:
select 列名稱 From 表名稱/ select * from 表名稱
實例:SELECT LastName,FirstName FROM Persons
去除重復值:SELECT DISTINCT 列名稱 FROM 表名稱
實例:SELECT DISTINCT Company From Orders

WHERE子句語法:
SELECT 列名稱 FROM 表名稱 WHERE 列 運算符 值
文本實例:SELECT * FROM Persons WHERE FirstName=‘Bush‘
數值實例:SELECT * FROM Persons WHERE Year>1965
總結:文本的值用‘‘,數值不加單引號

And和Or運算符:
SELECT * FROM Persons WHERE FirstName=‘Thomas‘ AND LastName=‘Carter‘
SELECT * FROM Persons WHERE firstname=‘Thomas‘ OR lastname=‘Carter‘
組合And和Or運算符:
SELECT * FROM Persons WHERE (FirstName=‘Thomas‘ OR FirstName=‘William‘) AND LastName=‘Carter‘

order by語句(ASC為升序,DESC為降序):
SELECT Company, OrderNumber FROM Orders ORDER BY Company
以字母順序顯示公司名稱(Company),並以數字順序顯示順序號(OrderNumber):
SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber
以逆字母順序顯示公司名稱:
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC
以逆字母順序顯示公司名稱,並以數字順序顯示順序號:
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC
結果:
Company OrderNumber
W3School 2356
W3School 6953
IBM 3532
Apple 4698

insert into語句:
insert into 表名 values (值1,值2,值3)
指定數據插入的列:insert into table_name (列1,列2,列3) values (值1,值2,值3)
實例:
INSERT INTO Persons VALUES (‘Gates‘, ‘Bill‘, ‘Xuanwumen 10‘, ‘Beijing‘)
INSERT INTO Persons (LastName, Address) VALUES (‘Wilson‘, ‘Champs-Elysees‘)
update語句:
update 表名 set 列名稱 = 新值 where 列名稱=某值
實例:
更新某一行中的一個列:UPDATE Person SET FirstName = ‘Fred‘ WHERE LastName = ‘Wilson‘
更新某一行中的若幹列:UPDATE Person SET Address = ‘Zhongshan 23‘, City = ‘Nanjing‘ WHERE LastName = ‘Wilson‘
DELETE語句:
DELETE from 表名稱 where 列名稱 = 值
實例:
刪除某行:Delete from Person Where lastname = ‘Wilson‘
刪除整個表內容:Delete * from Person

高級部分:
Top:
SQL Server:SELECT TOP number|percent 列名/column_name(s) FROM table_name
MySQL:SELECT 列名 FROM table_name LIMIT number
Oracle:SELECT 列名 FROM table_name WHERE ROWNUM <= number
實例:
選取頭兩行記錄:SELECT TOP 2 * FROM Persons
選取50%的記錄:SELECT TOP 50 PERCENT * FROM Persons
Like:
select 列名 from 表名 where 列名 like 表達式(‘%a%‘)
實例:
SELECT * FROM Persons WHERE City LIKE ‘%lon%‘
NOT LIKE:SELECT * FROM Persons WHERE City NOT LIKE ‘%lon%‘
通配符:"%"替代一個或多個字符,"_"僅替代一個字符,"[abc]"字符中任意一個單一字符,"[^abc]或[!abc]"不在字符列中的任何單一字符
實例:
SELECT * FROM Persons WHERE FirstName LIKE ‘_eorge‘
SELECT * FROM Persons WHERE City LIKE ‘[ALN]%‘
SELECT * FROM Persons WHERE City LIKE ‘[!ALN]%‘
IN:IN 操作符允許我們在 WHERE 子句中規定多個值
select 列名 from 表名 where 列名 in (value1,value2,...)
實例:
SELECT * FROM Persons WHERE LastName IN (‘Adams‘,‘Carter‘)
Between:選取介於兩個值之間的數據範圍
select 列名 from 表名 where 列名 between value1 and value2
實例:
SELECT * FROM Persons WHERE LastName BETWEEN ‘Adams‘ AND ‘Carter‘
not between:SELECT * FROM Persons WHERE LastName NOT BETWEEN ‘Adams‘ AND ‘Carter‘
Alias別名:
給表取別名:select 列名 from 表名 as 別名
給列名取別名:select 列名 as 別名 from 表名
實例:
SELECT LastName AS Family, FirstName AS Name FROM Persons
Join:用於根據兩個或多個表中的列之間的關系,從這些表中查詢數據
兩表查詢and:SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons, Orders
WHERE Persons.Id_P = Orders.Id_P
inner join:SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P = Orders.Id_P
ORDER BY Persons.LastName
inner join寫法:select 列名 from 表1 inner join 表2 on 表1.列名 = 表2.列名
left join寫法: select 列名 from 表1 left join 表2 on 表1.列名 = 表2.列名
right join寫法: select 列名 from 表1 right join 表2 on 表1.列名 = 表2.列名
UNION:操作符用於合並兩個或多個 SELECT 語句的結果集
select 列名 from 表1 UNION select 列名 from 表2
UNION選取不同的值,UNION ALL選取所有值
Create Datebase:
Create Database database_name
實例:
CREATE DATABASE my_db
CREATE TABLE:
Create table 表名稱
(
列名稱1 數據類型 [約束類型],
列名稱2 數據類型 [約束類型],
列名稱3 數據類型 [約束類型],
...
)
實例:
CREATE TABLE Persons
(
Id_P int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
約束類型:
NOT NULL:不接受NULL值
UNIQUE:唯一約束
為已有的表添加唯一約束: ALTER TABLE Persons ADD UNIQUE (Id_P)
撤銷UNIQUE約束:
DROP CONSTRAINT uc_PersonID
PRIMARY KEY:
為已有的表添加PRIMARY KEY:ALTER TABLE Persons ADD PRIMARY KEY (ID_P)
撤銷PRIMARY KEY:ALTER TABLE Persons DROP CONSTRAINT pk_PersonID
FOREIGN KEY約束:
CREATE TABLE Orders
(
Id_O int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
Id_P int FOREIGN KEY REFERENCES Persons(Id_P)
)
為已有的表添加FOREIGN KEY約束:
ALTER TABLE Orders
ADD FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)
撤銷FOREIGN KEY:ALTER TABLE Orders DROP CONSTRAINT fk_PerOrders

DROP:
Drop index:Drop index table_name.index_name
Drop table:Drop table table_name
Drop database:Drop database database_name
清楚表數據不刪除結構:Truncate table 表名稱
Alter:
添加列:Alter table table_name add 列名稱 數據類型
刪除列: Alter table table_name drop column 列名稱
改變列數據類型:Alter table table_name Alter column 列名稱 數據類型

View:Create View:
CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition
實例:
CREATE VIEW [Current Product List] AS
SELECT ProductID,ProductName
FROM Products
WHERE Discontinued=No
更新視圖:
CREATE VIEW [Current Product List] AS
SELECT ProductID,ProductName,Category
FROM Products
WHERE Discontinued=No
撤銷視圖:
DROP VIEW view_name
NULL值:判斷方法,is null ,is not null
實例:
SELECT LastName,FirstName,Address FROM Persons
WHERE Address IS NULL

SELECT LastName,FirstName,Address FROM Persons
WHERE Address IS NOT NULL

isnull():如果是Null值參加計算為0
SELECT ProductName,UnitPrice*(UnitsInStock+ISNULL(UnitsOnOrder,0))
FROM Products
子查詢:在一個查詢中,條件是另一個查詢,實例
SELECT Customer FROM Orders
WHERE OrderPrice>(SELECT AVG(OrderPrice) FROM Orders)

找出沒有選修過“李明”老師講授課程的所有學生姓名
--實現代碼:
Select SNAME FROM S Where NOT EXISTS( Select * FROM SC,C Where SC.CNO=C.CNO AND CNAME=‘李明‘ AND SC.SNO=S.SNO)
Count:計算客戶"Carter"的訂單數
SELECT COUNT(Customer) AS CustomerNilsen FROM Orders
WHERE Customer=‘Carter‘
計算總的行數:
SELECT COUNT(*) AS NumberOfOrders FROM Orders
計算不同客戶的數目:
SELECT COUNT(DISTINCT Customer) AS NumberOfCustomers FROM Orders
Now():返回當前日期和時間,SELECT ProductName, UnitPrice, Now() as PerDate FROM Products
Group by: SELECT Customer,SUM(OrderPrice) FROM Orders GROUP BY Customer

Sql學習內容