SQL總結(三)其他查詢
其他常用的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()
還有一個常用的函式,與此一起使用 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、FORMAT函式
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>
*/
轉載自:SQL總結(三)其他查詢
相關文章
- SQL查詢總結SQL
- SQL總結(一)基本查詢SQL
- SQL總結(二)連表查詢SQL
- SQL總結(七)查詢實戰SQL
- SQL單表查詢語句總結SQL
- Oracle總結【SQL細節、多表查詢、分組查詢、分頁】OracleSQL
- MongoDB查詢總結MongoDB
- SQL 三表聯合查詢SQL
- SQL Server資料庫查詢優化的方法總結SQLServer資料庫優化
- 關於SQL Server資料查詢基本方法的總結SQLServer
- SQL學習(三) 複雜查詢SQL
- SQL三表左關聯查詢SQL
- 提高查詢速度方法總結
- SQL語句查詢表結構SQL
- MySQL學習(三) SQL基礎查詢MySql
- SQL面試題 三(單表、多表查詢)SQL面試題
- sql 連線查詢例項(left join)三表連線查詢SQL
- SQL Server調優系列基礎篇(子查詢運算總結)SQLServer
- 透過shell和sql結合查詢效能sqlSQL
- 通過shell和sql結合查詢效能sqlSQL
- mysql查詢效能優化總結MySql優化
- MySQL查詢結果匯出方式總結MySql
- Mybatis 查詢語句結果集總結MyBatis
- SQL -- 使用聯結還是子查詢?SQL
- SQL查詢的:子查詢和多表查詢SQL
- [譯] 如何使用 Pandas 重寫你的 SQL 查詢以及其他操作SQL
- 【SQL查詢】集合查詢之INTERSECTSQL
- MySQL 索引及查詢優化總結MySql索引優化
- 基礎二分查詢總結
- 關於字串匹配查詢的總結字串匹配
- 資料結構之三大查詢資料結構
- OpenCV翻譯專案總結三——對OpenCV效能、查詢表等分析OpenCV
- SQL*Loader的使用總結(三)SQL
- SQL語言(結構化查詢語言)SQL
- Sql Server 2005/2008 SqlCacheDependency查詢通知的使用總結SQLServer
- 原生SQL查詢SQL
- SQL 聚合查詢SQL
- sql 查詢效率SQL