sqlserver操作指令

1.連接操作

SELECT column_name(s)
FROM table1
INNER JOIN table2//也可 left join 、right join 、full join
ON table1.column_name=table2.column_name;

2.通配符[]

SELECT *
FROM student
where student.姓名 like '[^by]%';//[]匹配字符集合中的任何一個字符,[^]匹配不在括號中的任意單個字符

3.SELECT INTO
SELECT INTO 語句從一個表複製數據,然後把數據插入到另一個新表中。

SELECT Websites.name, access_log.count, access_log.date
INTO WebsitesBackup2016
FROM Websites
LEFT JOIN access_log
ON Websites.id=access_log.site_id;

4.INSERT INTO SELECT
INSERT INTO SELECT 語句從一個表複製數據,然後把數據插入到一個已存在的表中。

INSERT INTO Websites (name, country)
SELECT app_name, country FROM apps
WHERE id=1;

5.約束(UNIQUE爲例)
每個表可以有多個 UNIQUE 約束,但是每個表只能有一個 PRIMARY KEY 約束。PRIMARY KEY、check、外鍵的使用與此相似

CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)
)

當表已被創建時,如需在 “P_Id” 列創建 UNIQUE 約束,請使用下面的 SQL:

ALTER TABLE Persons
ADD UNIQUE (P_Id)

ALTER TABLE Persons
ADD CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)

撤銷 UNIQUE 約束

ALTER TABLE Persons
DROP CONSTRAINT uc_PersonID

6.DEFAULT 約束

CREATE TABLE Persons
(
    P_Id int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255) DEFAULT 'Sandnes'
)

ALTER TABLE 時的 SQL DEFAULT 約束

//1
alter table xinxi
add  default 'nihao' for course;
//2
ALTER TABLE Persons
ADD CONSTRAINT ab_c DEFAULT 'SANDNES' for City

撤銷 DEFAULT 約束

ALTER TABLE Persons
ALTER COLUMN City DROP DEFAULT

7.CREATE INDEX 語句
允許使用重複的值

CREATE INDEX index_name
ON table_name (column_name,jk)

在表上創建一個唯一的索引。

CREATE UNIQUE INDEX index_name
ON table_name (column_name)

8.撤銷索引、撤銷表以及撤銷數據庫

DROP INDEX table_name.index_name
DROP TABLE table_name
DROP DATABASE database_name
TRUNCATE TABLE table_name//僅僅需要刪除表內的數據,但並不刪除表本身

9.AUTO INCREMENT 語句
Auto-increment 會在新記錄插入表中時生成一個唯一的數字。

CREATE TABLE Persons
(
ID int IDENTITY(1,1) PRIMARY KEY,//identity 的開始值是 1,每條新記錄遞增 1
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
//要在 "Persons" 表中插入新記錄,我們不必爲 "ID" 列規定值(會自動添加一個唯一的值)

10.視圖
創建

CREATE VIEW [Products Above Average Price] AS
SELECT ProductName,UnitPrice
FROM Products
WHERE UnitPrice>(SELECT AVG(UnitPrice) FROM Products)

查尋

SELECT * FROM [Products Above Average Price]

刪除

DROP VIEW view_name

11.sql函數
SQL Aggregate 函數
SQL Aggregate 函數計算從列中取得的值,返回一個單一的值。
有用的 Aggregate 函數:
AVG() - 返回平均值
COUNT() - 返回行數

SELECT COUNT(count) AS nums FROM access_log
WHERE site_id=3;

FIRST() - 返回第一個記錄的值

SELECT TOP 1 name FROM Websites

LAST() - 返回最後一個記錄的值
MAX() - 返回最大值
MIN() - 返回最小值
SUM() - 返回總和

12.SQL Scalar 函數
SQL Scalar 函數基於輸入值,返回一個單一的值。
有用的 Scalar 函數:
UCASE() - 將某個字段轉換爲大寫

SELECT UPPER(column_name) FROM table_name;

LCASE() - 將某個字段轉換爲小寫

SELECT LOWER(column_name) FROM table_name;

MID() - 從某個文本字段提取字符,MySql 中使用

SELECT SUBSTRING(name,0,2) FROM s;

SubString(字段,1,end) - 從某個文本字段提取字符
LEN() - 返回某個文本字段的長度

SELECT LEN(column_name) FROM table_name;

ROUND() - 對某個數值字段進行指定小數位數的四捨五入

SELECT ROUND(column_name,decimals) FROM table_name;

NOW() - 返回當前的系統日期和時間
FORMAT() - 格式化某個字段的顯示方式

SELECT FORMAT(column_name,format) FROM table_name;

13.group by

SELECT  count(student.姓名) fROM student
group BY  課程;

14.having
在 SQL 中增加 HAVING 子句原因是,WHERE 關鍵字無法與聚合函數一起使用。
HAVING 子句可以讓我們篩選分組後的各組數據。

SELECT Websites.name, Websites.url, SUM(access_log.count) AS nums FROM (access_log
INNER JOIN Websites
ON access_log.site_id=Websites.id)
GROUP BY Websites.name
HAVING SUM(access_log.count) > 200;

15. EXISTS 運算符

SELECT column_name(s)
FROM table_name
WHERE EXISTS
(SELECT column_name FROM table_name WHERE condition);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章