SQL語句查詢

1.1 排序面試

經過order by語句,能夠將查詢出的結果進行排序。放置在select語句的最後。
格式:
SELECT * FROM 表名 ORDER BY 排序字段ASC|DESC;
ASC 升序 (默認)
DESC 降序sql

1.查詢全部商品信息,使用價格排序(降序)

SELECT * FROM product ORDER BY price DESC;數據庫

2.在價格排序(降序)的基礎上,以分類排序(降序)

SELECT * FROM product ORDER BY price DESC,category_id DESC;函數

3.顯示商品的價格(去重複),並排序(降序)

SELECT DISTINCT price FROM product ORDER BY price DESC;學習

1.2 聚合spa

以前咱們作的查詢都是橫向查詢,它們都是根據條件一行一行的進行判斷,而使用聚合函數查詢是縱向查詢,他是對查詢後的結果的列進行計算,而後返回一個單一的值;另外聚合函數會忽略空值。
今天咱們學習以下五個聚合函數:
 count:統計指定列不爲NULL的記錄行數;
 sum:計算指定列的數值和,若是指定列類型不是數值類型,那麼計算結果爲0;
 max:計算指定列的最大值,若是指定列是字符串類型,那麼使用字符串排序運算;
 min:計算指定列的最小值,若是指定列是字符串類型,那麼使用字符串排序運算;
 avg:計算指定列的平均值,若是指定列類型不是數值類型,那麼計算結果爲0;code

1 查詢商品的總條數

SELECT COUNT(*) FROM product;排序

2 查詢價格大於200商品的總條數

SELECT COUNT(*) FROM product WHERE price > 200;索引

3 查詢分類爲'c001'的全部商品價格的總和

SELECT SUM(price) FROM product WHERE category_id = 'c001';開發

4 查詢分類爲'c002'全部商品的平均價格

SELECT AVG(price) FROM product WHERE category_id = 'c002';

5 查詢商品的最大價格和最小价格

SELECT MAX(price),MIN(price) FROM product;

1.3 分組

分組查詢是指使用group by字句對查詢信息進行分組。
 格式:
SELECT 字段1,字段2… FROM 表名GROUP BY分組字段 HAVING 分組條件;
分組操做中的having子語句,是用於在分組後對數據進行過濾的,做用相似於where條件。

 having與where的區別:
 having是在分組後對數據進行過濾.
where是在分組前對數據進行過濾
 having後面可使用統計函數過濾數據
where後面不可使用統計函數。

0 統計全部商品的個數

1 統計各個分類商品的個數

SELECT category_id ,COUNT(*) FROM product GROUP BY category_id ;

2 統計各個分類商品的個數,且只顯示個數大於1的信息

SELECT category_id ,COUNT() FROM product GROUP BY category_id HAVING COUNT() > 1;

1.4 分頁查詢

分頁查詢在項目開發中常見,因爲數據量很大,顯示屏長度有限,所以對數據須要採起分頁顯示方式。例如數據共有30條,每頁顯示5條,第一頁顯示1-5條,第二頁顯示6-10條。
 格式:
SELECT 字段1,字段2… FROM 代表 LIMIT M,N
M: 整數,表示從第幾條索引開始,計算方式 (當前頁-1)*每頁顯示條數
N: 整數,表示查詢多少條數據
SELECT 字段1,字段2… FROM 代表 LIMIT 0,5
SELECT 字段1,字段2… FROM 代表 LIMIT 5,5

第2章 SQL備份與恢復

2.1 SQL備份

選中數據庫,右鍵」備份/導出」,指定導出路徑,保存成.sql文件便可。

2.2 SQL恢復

數據庫列表區域右鍵「從SQL轉儲文件導入數據庫」,指定要執行的SQL文件,執行便可。

第3章 SQL約束

3.1 數據完整性

添加數據完整性=添加表約束
分類:實體完整性,域完整性,引用完整性
實體完整性: 對數據行的約束,好比:主鍵約束,惟一約束
域完整性: 對數據列的約束,好比:該列的數據類型, 默認約束,非空約束
引用完整性: 外鍵約束(多表的關係)

3.2 主鍵約束

PRIMARY KEY 約束惟一標識數據庫表中的每條記錄,每條記錄中被主鍵約束 約束的字段不能相同。
主鍵必須是惟一的值。
主鍵列不能是 NULL 值。
每一個表都應該有且只能有一個主鍵。

3.2.1 添加主鍵約束

 方式一:建立表時,在字段描述處,聲明指定字段爲主鍵:
CREATE TABLE Persons
(
Id_P int PRIMARY KEY,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
 方式二:建立表時,在constraint約束區域,聲明指定字段爲主鍵:
 格式:[constraint 名稱] primary key (字段列表)
 關鍵字constraint能夠省略,若是須要爲主鍵命名,constraint不能省略,主鍵名稱通常沒用。
 字段列表須要使用小括號括住,若是有多字段須要使用逗號分隔。聲明兩個以上字段爲主鍵,咱們稱爲聯合主鍵。
CREATE TABLE Persons
(
FirstName varchar(255),
LastName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT pk_PersonID PRIMARY KEY (FirstName,LastName)
)

CREATE TABLE Persons
(
FirstName varchar(255),
LastName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (FirstName)
)

 方式三:建立表以後,經過修改表結構,聲明指定字段爲主鍵:
ALTER TABLE Persons ADD [CONSTRAINT 名稱] PRIMARY KEY (字段列表)

CREATE TABLE Persons
(
FirstName varchar(255),
LastName varchar(255),
Address varchar(255),
City varchar(255)
)
ALTER TABLE Persons ADD PRIMARY KEY (FirstName)

3.2.2 刪除主鍵約束

如需撤銷 PRIMARY KEY 約束,請使用下面的 SQL:
ALTER TABLE Persons DROP PRIMARY KEY

3.3 自動增加列

咱們一般但願在每次插入新記錄時,數據庫自動生成字段的值。
咱們能夠在表中使用 auto_increment(自動增加列)關鍵字,自動增加列類型必須是整形,自動增加列必須爲鍵(通常是主鍵)。
 下列 SQL 語句把 "Persons" 表中的 "P_Id" 列定義爲 auto-increment 主鍵
CREATE TABLE Persons
(
P_Id int PRIMARY KEY AUTO_INCREMENT,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
 向persons添加數據時,能夠不爲P_Id字段設置值,也能夠設置成null,數據庫將自動維護主鍵值:
INSERT INTO Persons (FirstName,LastName) VALUES ('Bill','Gates')
INSERT INTO Persons (P_Id,FirstName,LastName) VALUES (NULL,'Bill','Gates')
 面試:delete和truncate的區別
 Delete刪除表中的數據,但不重置auto-increment記錄數。
 Truncate刪除表中的數據,auto-increment記錄數將重置。Truncate其實先刪除表而後再建立表。
 擴展:默認地,AUTO_INCREMENT 的開始值是 1,若是但願修改起始值,請使用下列 SQL 語法:
ALTER TABLE Persons AUTO_INCREMENT=100

3.4 非空約束NOT NULL

NOT NULL 約束強制列不接受 NULL 值。
NOT NULL 約束強制字段始終包含值。這意味着,若是不向字段添加值,就沒法插入新記錄或者更新記錄。
 方式一:建立表,下面的 SQL 語句強制 "Id_P" 列和 "LastName" 列不接受 NULL 值:
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

 方式二:修改表結構
添加非空約束 ALTER TABLE student MODIFY LastName varchar(255) NOT NULL

刪除非空約束 ALTER TABLE student MODIFY LastName varchar(255

3.5 惟一約束

UNIQUE 約束惟一標識數據庫表中的每條記錄。
UNIQUE 和 PRIMARY KEY 約束均爲列或列集合提供了惟一性的保證。
PRIMARY KEY 擁有自動定義的 UNIQUE 約束。
請注意,每一個表能夠有多個 UNIQUE 約束,可是每一個表只能有一個 PRIMARY KEY 約束。

3.5.1 添加惟一約束

與主鍵添加方式相同,共有3種,
 方式1:建立表時,在字段描述處,聲明惟一:
CREATE TABLE Persons
(
Id_P int UNIQUE,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
 方式2:建立表時,在約束區域,聲明惟一:
CREATE TABLE Persons
(
Id_P int,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT 名稱UNIQUE (Id_P)
)

 方式3:建立表後,修改表結構,聲明字段惟一:
ALTER TABLE Persons ADD [CONSTRAINT 名稱] UNIQUE (Id_P)

3.5.2 刪除惟一約束

 如需撤銷 UNIQUE 約束,請使用下面的 SQL:
ALTER TABLE Persons DROP INDEX 約束名稱
 若是添加惟一約束時,沒有設置約束名稱,默認是當前字段的字段名。

惟一約束與主鍵約束的區別:
主鍵:惟1、不能爲空、一個表只能有一個主鍵,非業務數據
惟一:惟1、能夠有空值,但只能有一個空值。一個表能夠有多個惟一約束。

3.6 默認約束

在添加數據中,若是該字段不指定值,採用默認值處理  方式一: 建立表,字段處聲明 CREATE TABLE Persons ( Id_P int, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255) DEFAULT '北京', City varchar(255) )  方式二: 修改表結構 ALTER TABLE Persons MODIFY Address VARCHAR(255) DEFAULT '北京' 刪除默認約束ALTER TABLE Persons MODIFY Address VARCHAR(255)

相關文章
相關標籤/搜索