SQl常用语句总结(持续更新……)
創(chuàng)建示例數(shù)據(jù)庫
USE master;
GO
IF DB_ID (N'mytest') IS NOT NULL
DROP DATABASE mytest;
GO
CREATE DATABASE mytest;
GO
USE mytest;
GO
IF OBJECT_ID(N'dbo.Orders') IS NOT NULL
DROP TABLE dbo.Orders;
GO
CREATE TABLE dbo.Orders
(
ProductID INT NOT NULL,
MadeFrom CHAR(20),
Sales MONEY NOT NULL
);
刪除數(shù)據(jù)庫
use master -- 設(shè)置當前數(shù)據(jù)庫為master,以便訪問sysdatabases表
go
if exists(select * from sysdatabases where name='stuDB')
drop database stuDB
go
或者
IF DB_ID (N'mytest') IS NOT NULL
DROP DATABASE mytest;
創(chuàng)建數(shù)據(jù)表
標準語法
CREATE TABLE table_name(
column1 datatype,
column2 datatype,
column3 datatype,
.....
columnN datatype,
PRIMARY KEY( one or more columns )
);
示例
CREATE TABLE CUSTOMERS(
ID? INT? ? ? ? ? ? ? NOT NULL,
NAME VARCHAR (20)? ? NOT NULL,
AGE? INT? ? ? ? ? ? ? NOT NULL,
ADDRESS? CHAR (25) ,
SALARY? DECIMAL (18, 2),
PRIMARY KEY (ID)
);
刪除表包含結(jié)構(gòu)
Drop table tablename
視圖
create view? 視圖名字
as
查詢代碼
demo:
create view? view_user
as
select id from user
go
/*以上為創(chuàng)建一個視圖,視圖里面存儲的是user表的ID列*/
/*刪除視圖*/
if exusts(select * from sysobjects where name='視圖名字')/*如果數(shù)據(jù)庫中存在這個視圖,就刪除該視圖,查不查詢隨便你*/
drop view 視圖名字? /*執(zhí)行刪除視圖語法*/
復制代碼
視圖注意事項:注意事項:
1.一個視圖可以嵌套另一個視圖,但最后不要超過3層
2.視圖定義中的select語句不能包括下列內(nèi)容
*order by排序子句,除非在select語句中帶有一個top子句
*into關(guān)鍵字
*引用臨時表或表變量
存儲過程
存儲過程可以說是一個記錄集吧,它是由一些T-SQL語句組成的代碼塊,這些T-SQL語句代碼像一個方法一樣實現(xiàn)一些功能(對單表或多表的增刪改查),然后再給這個代碼塊取一個名字,在用到這個功能的時候調(diào)用他就行了。
存儲過程的好處:
1.由于數(shù)據(jù)庫執(zhí)行動作時,是先編譯后執(zhí)行的。然而存儲過程是一個編譯過的代碼塊,所以執(zhí)行效率要比T-SQL語句高。
2.一個存儲過程在程序在網(wǎng)絡(luò)中交互時可以替代大堆的T-SQL語句,所以也能降低網(wǎng)絡(luò)的通信量,提高通信速率。
3.通過存儲過程能夠使沒有權(quán)限的用戶在控制之下間接地存取數(shù)據(jù)庫,從而確保數(shù)據(jù)的安全。
示例:
復制代碼
--查詢存儲過程
IF OBJECT_ID (N'PROC_SELECT_STUDENTS_COUNT', N'P') IS NOT NULL
DROP procedure PROC_SELECT_STUDENTS_COUNT;
GO
CREATE procedure PROC_SELECT_STUDENTS_COUNT
AS
SELECT COUNT(ID) FROM Students
GO
--執(zhí)行
EXEC PROC_SELECT_STUDENTS_COUNT
復制代碼
帶參數(shù)
復制代碼
--查詢存儲過程,根據(jù)城市查詢總數(shù)
IF OBJECT_ID (N'PROC_SELECT_STUDENTS_BY_CITY_COUNT', N'P') IS NOT NULL
DROP procedure PROC_SELECT_STUDENTS_BY_CITY_COUNT;
GO
CREATE procedure PROC_SELECT_STUDENTS_BY_CITY_COUNT(@city nvarchar(50))
AS
SELECT COUNT(ID) FROM Students WHERE City=@city
GO
-- 執(zhí)行
EXEC PROC_SELECT_STUDENTS_BY_CITY_COUNT N'Beijing'
復制代碼
帶通配符
復制代碼
--3、查詢姓氏為李的學生信息,含通配符
IF OBJECT_ID (N'PROC_SELECT_STUDENTS_BY_SURNNAME', N'P') IS NOT NULL
DROP procedure PROC_SELECT_STUDENTS_BY_SURNNAME;
GO
CREATE procedure PROC_SELECT_STUDENTS_BY_SURNNAME
@surnName nvarchar(20)='李%' --默認值
AS
SELECT ID,Name,Age FROM Students WHERE Name like @surnName
GO
--執(zhí)行
EXEC PROC_SELECT_STUDENTS_BY_SURNNAME
EXEC PROC_SELECT_STUDENTS_BY_SURNNAME N'李%'
EXEC PROC_SELECT_STUDENTS_BY_SURNNAME N'%李%'
復制代碼
帶輸出參數(shù)
復制代碼
--根據(jù)姓名查詢的學生信息,返回學生的城市及年齡
IF OBJECT_ID (N'PROC_SELECT_STUDENTS_BY_NAME', N'P') IS NOT NULL
DROP procedure PROC_SELECT_STUDENTS_BY_NAME;
GO
CREATE procedure PROC_SELECT_STUDENTS_BY_NAME
@name nvarchar(50),? ? --輸入?yún)?shù)
@city nvarchar(20) out, --輸出參數(shù)
@age? int output? ? ? ? --輸入輸出參數(shù)
AS
SELECT @city=City,@age=Age FROM Students WHERE Name=@name AND Age=@age
GO
--執(zhí)行
declare @name nvarchar(50),
@city nvarchar(20),
@age int;
set @name = N'李明';
set @age = 20;
exec PROC_SELECT_STUDENTS_BY_NAME @name,@city out, @age output;
select @city, @age;
復制代碼
存儲過程實現(xiàn)增刪改
1、新增demo
復制代碼
--1、存儲過程:新增學生信息
IF OBJECT_ID (N'PROC_INSERT_STUDENT', N'P') IS NOT NULL
DROP procedure PROC_INSERT_STUDENT;
GO
CREATE procedure PROC_INSERT_STUDENT
@id int,
@name nvarchar(20),
@age int,
@city nvarchar(20)
AS
INSERT INTO Students(ID,Name,Age,City) VALUES(@id,@name,@age,@city)
GO
--執(zhí)行
EXEC PROC_INSERT_STUDENT 1001,N'張三',19,'ShangHai'
復制代碼
2、修改
復制代碼
--修改學生信息
IF OBJECT_ID (N'PROC_UPDATE_STUDENT', N'P') IS NOT NULL
DROP procedure PROC_UPDATE_STUDENT;
GO
CREATE procedure PROC_UPDATE_STUDENT
@id int,
@name nvarchar(20),
@age int,
@city nvarchar(20)
AS
UPDATE Students SET Name=@name,Age=@age,City=@city WHERE ID=@id
GO
--執(zhí)行
EXEC PROC_UPDATE_STUDENT 1001,N'張思',20,'ShangHai'
復制代碼
3、刪除
復制代碼
--根據(jù)id刪除記錄
IF OBJECT_ID (N'PROC_DELETE_STUDENT_BY_ID', N'P') IS NOT NULL
DROP procedure PROC_DELETE_STUDENT_BY_ID;
GO
CREATE procedure PROC_DELETE_STUDENT_BY_ID
@id int
AS
DELETE FROM? Students WHERE ID=@id
GO
--執(zhí)行
EXEC PROC_DELETE_STUDENT_BY_ID 1001
復制代碼
存儲過程實現(xiàn)分頁
復制代碼
-- ROW_NUMBER分頁查詢
IF OBJECT_ID (N'PROC_SELECT_BY_PAGE', N'P') IS NOT NULL
DROP procedure PROC_SELECT_BY_PAGE;
GO
CREATE procedure PROC_SELECT_BY_PAGE
@startIndex int,
@endIndex int
AS
SELECT? * FROM (SELECT ID,Name,Age,City,ROW_NUMBER() OVER(ORDER BY ID DESC) AS RowNumber FROM Students) AS Temp
WHERE Temp.RowNumber BETWEEN @startIndex AND @endIndex
GO
--執(zhí)行
EXEC PROC_SELECT_BY_PAGE 1,10
--使用TOP分頁
IF OBJECT_ID (N'PROC_SELECT_BY_PAGE_WITH_TOP', N'P') IS NOT NULL
DROP procedure PROC_SELECT_BY_PAGE_WITH_TOP;
GO
CREATE procedure PROC_SELECT_BY_PAGE_WITH_TOP
@pageIndex int,
@pageSize int
AS
SELECT TOP(@pageSize) * FROM Students
WHERE ID >=(SELECT MAX(ID) FROM (SELECT TOP(@pageSize*(@pageIndex-1) + 1) ID FROM Students ORDER BY ID) AS Temp)
GO
--執(zhí)行
EXEC PROC_SELECT_BY_PAGE_WITH_TOP 1,2
我的博客文章地址:http://www.cnblogs.com/hgmyz/p/6755162.html
歡迎關(guān)注我的微信公眾號:互聯(lián)網(wǎng)碎片搜集
總結(jié)
以上是生活随笔為你收集整理的SQl常用语句总结(持续更新……)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Vue之Vue.set动态新增对象属性
- 下一篇: 基于mint-ui的城市选择3级联动