SQL總結三:其他查詢
阿新 • • 發佈:2018-11-21
其他常用的SQL,在這裡集合。
1、 select into
從一個表中選取資料,然後把資料插入另一個表中。常用於建立表的備份或者用於對記錄進行存檔。
語法:
SELECT column_name(s)
INTO new_table_name [IN externaldatabase]
FROM old_tablename
IN 子句可用於向另一個數據庫中拷貝表。
1)備份表資訊
SELECT ID,Name
INTO Students_Backup
FROM Students
2)複製到備份庫
SELECT * INTO Students IN 'Backup.mdb' FROM Students
2、identity
作用:建立唯一的,遞增的列
注意:一張表中只能有一列為identity
1)建立學生資訊表時,指定其ID為自增列,從1開始,每次遞增1
IF OBJECT_ID (N'Students', N'U') IS NOT NULL DROP TABLE Students; GO --學生資訊表 CREATE TABLE Students( ID int primary key IDENTITY(1,1) not null, Name nvarchar(50), Age int, Sex bit, City nvarchar(50), MajorID int )
2)如果指定了自增列,又需要插入指定ID的值,需要停止INDENTIY,執行後再開啟
SET IDENTITY_Insert Students ON
insert Students(ID,Name,Age,City) values(10,'Jim',18,'NewYank')
SET IDENTITY_Insert Students OFF
3)與SELECT INTO 合用,插入行號
這個常常用於臨時表分頁時使用。
注意:如果查詢的列中有自增列,需要將其刪除,或者遮蔽,因為一張表中只有一個IDENTITY欄位。
SELECT IDENTITY(int,1,1) AS RowNumber,Name,Age,Sex,City INTO Students_Backup FROM Students
還有一個常用的函式,與此一起使用 SCOPE_IDENTITY()
常常在有IDENTITY列的插入時,需要返回當前的行的IDENTITY的列值。
如:
IF OBJECT_ID (N'Students', N'U') IS NOT NULL
DROP TABLE Students;
GO
--學生資訊表
CREATE TABLE Students(
ID int IDENTITY(1,1) PRIMARY KEY not null,
Name nvarchar(50),
Age int,
Sex bit,
City nvarchar(50),
MajorID int
)
INSERT INTO Students(Name,Age,Sex,City,MajorID) VALUES('Jim',18,0,'ShangHai',12)
SELECT SCOPE_IDENTITY()
這個例子,每次返回插入記錄的ID的值。如果有其他關聯表用到此ID,這時就不用再從資料庫查一遍了。
3、object_id
返回架構範圍內物件的資料庫物件標識號。
1)查詢表是否存在
SELECT OBJECT_ID(N'Students',N'U')
與以下語句等價:
SELECT id FROM sysobjects WHERE name=N'Students' and type=N'U'
2)常常用於建立表、檢視時,做判定。保證指令碼的重複執行
建立學生資訊表時,需要判定該表是否存在,如果存在則刪除
IF OBJECT_ID (N'Students', N'U') IS NOT NULL
DROP TABLE Students;
GO
--學生資訊表
CREATE TABLE Students(
ID int primary key IDENTITY(1,1) not null,
Name nvarchar(50),
Age int,
Sex bit,
City nvarchar(50),
MajorID int
)
4、跨庫執行
如果系統需要多個數據庫,當執行跨庫指令碼,無需再次進行連線,可以執行如下指令碼
例項:當前在master庫,查詢TestDB庫的Students表資訊:
USE master
SELECT * FROM TestDB..Students
常用函式
1、 LEN函式
計算欄位值的長度
SELECT LEN(Name) AS NameLength FROM Students
2、FOROMAT函式
FORMAT 函式用於對欄位的顯示進行格式化。語法:
SELECT FORMAT(column_name,format) FROM table_name
1)時間格式化
SELECT FORMAT(GETDATE(),'yyyy-MM-dd')
結果:2014-05-13
3、 CAST函式
1、例項:將價格轉為整型
SELECT CAST(Price AS smallint) AS CPrice FROM Orders
結果:10
2、將欄位解析為XML
SELECT CAST(Scheme AS xml) AS CPrice FROM Orders
結果:
<xml>
<ProductID>101</ProductID>
<ProductName>Card</ProductName>
</xml>
4、CONVERT
語法:CONVERT(data_type,expression[,style])
說明:
此樣式一般在時間型別(datetime,smalldatetime)與字串型別(nchar,nvarchar,char,varchar)
相互轉換的時候才用到.
tyle數字在轉換時間時的含義如下:
------------------------------------------------------------------------------------------------------------Style(2位表示年份) | Style(4位表示年份) | 輸入輸出格式
------------------------------------------------------------------------------------------------------------
0 | 100 | mon dd yyyy hh:miAM(或PM)
------------------------------------------------------------------------------------------------------------
1 | 101 美國 | mm/dd/yy
------------------------------------------------------------------------------------------------------------
2 | 102 ANSI | yy-mm-dd
------------------------------------------------------------------------------------------------------------
3 | 103 英法 | dd/mm/yy
------------------------------------------------------------------------------------------------------------
4 | 104 德國 | dd.mm.yy
------------------------------------------------------------------------------------------------------------
5 | 105 義大利 | dd-mm-yy
------------------------------------------------------------------------------------------------------------
6 | 106 | dd mon yy
------------------------------------------------------------------------------------------------------------
7 | 107 | mon dd,yy
------------------------------------------------------------------------------------------------------------
8 | 108 | hh:mm:ss
------------------------------------------------------------------------------------------------------------
9 | 109 | mon dd yyyy hh:mi:ss:mmmmAM(或PM)
------------------------------------------------------------------------------------------------------------
10 | 110 美國 | mm-dd-yy
------------------------------------------------------------------------------------------------------------
11 | 111 日本 | yy/mm/dd
------------------------------------------------------------------------------------------------------------
12 | 112 ISO | yymmdd
------------------------------------------------------------------------------------------------------------
13 | 113 歐洲預設值 | dd mon yyyy hh:mi:ss:mmm(24小時制)
------------------------------------------------------------------------------------------------------------
14 | 114 | hh:mi:ss:mmm(24小時制)
------------------------------------------------------------------------------------------------------------
20 | 120 ODBC 規範 | yyyy-mm-dd hh:mi:ss(24小時制)
------------------------------------------------------------------------------------------------------------
21 | 121 | yyyy-mm-dd hh:mi:ss:mmm(24小時制)
------------------------------------------------------------------------------------------------------------
1)例項:時間轉換為指定形式
SELECT CONVERT(NVARCHAR(20),GETDATE(),120)
結果:2014-05-13 23:49:34
2)例項轉為XML格式
SELECT CONVERT(xml,Scheme) FROM Orders
結果:
<xml>
<ProductID>101</ProductID>
<ProductName>Card</ProductName>
</xml>
全部指令碼
SELECT UCASE(Name) FROM Students
SELECT UCASE(LastName) as LastName,FirstName FROM Persons
SELECT GETDATE() --2014-05-13 23:15:36.130
SELECT FORMAT(GETDATE(),'yyyy-MM-dd') --2014-05-13
IF OBJECT_ID('Orders','U') IS NOT NULL
DROP TABLE Orders
CREATE TABLE Orders
(
ID bigint primary key not null,
ProductID int,
ProductName nvarchar(50),
Price float,
Scheme text,
Created datetime default(getdate())
)
INSERT INTO Orders(ID,ProductID,ProductName,Price,Scheme)
VALUES(201405130001,101,'Card',10.899,'<xml><ProductID>101</ProductID><ProductName>Card</ProductName></xml>')
SELECT LEN(ProductName) AS NameLength FROM Orders --4
SELECT FORMAT(Created,'yyyy-MM-dd') AS FormatDate FROM Orders
--2014-05-13
SELECT ROUND(Price,2) FROM Orders --10.9
SELECT CAST(Price AS smallint) AS CPrice FROM Orders
--10
SELECT CAST(Scheme AS xml) AS CPrice FROM Orders
--CONVERT
SELECT CONVERT(NVARCHAR(20),GETDATE(),120) --2014-05-13 23:49:34
SELECT CONVERT(xml,Scheme) FROM Orders
/* 結果:
<xml>
<ProductID>101</ProductID>
<ProductName>Card</ProductName>
</xml>
*/
轉載自:http://www.cnblogs.com/yank/p/3722565.html