SQl常用语句总结(持续更新……)

创建示例数据库

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

);


删除数据库

use master -- 设置当前数据库为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;


创建数据表

标准语法

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)

);


删除表包含结构

Drop table tablename

视图


create view  视图名字

as

查询代码

demo:

create view  view_user

as

select id from user

go

/*以上为创建一个视图,视图里面存储的是user表的ID列*/

/*删除视图*/

if exusts(select * from sysobjects where name='视图名字')/*如果数据库中存在这个视图,就删除该视图,查不查询随便你*/

drop view 视图名字  /*执行删除视图语法*/

复制代码

视图注意事项:注意事项:

1.一个视图可以嵌套另一个视图,但最后不要超过3层

2.视图定义中的select语句不能包括下列内容

*order by排序子句,除非在select语句中带有一个top子句

*into关键字

*引用临时表或表变量

存储过程

存储过程可以说是一个记录集吧,它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),然后再给这个代码块取一个名字,在用到这个功能的时候调用他就行了。

存储过程的好处:

1.由于数据库执行动作时,是先编译后执行的。然而存储过程是一个编译过的代码块,所以执行效率要比T-SQL语句高。

2.一个存储过程在程序在网络中交互时可以替代大堆的T-SQL语句,所以也能降低网络的通信量,提高通信速率。

3.通过存储过程能够使没有权限的用户在控制之下间接地存取数据库,从而确保数据的安全。

示例:

复制代码

--查询存储过程

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

--执行

EXEC PROC_SELECT_STUDENTS_COUNT

复制代码

带参数

复制代码

--查询存储过程,根据城市查询总数

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

-- 执行

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

--执行

EXEC PROC_SELECT_STUDENTS_BY_SURNNAME

EXEC PROC_SELECT_STUDENTS_BY_SURNNAME N'李%'

EXEC PROC_SELECT_STUDENTS_BY_SURNNAME N'%李%'

复制代码

带输出参数

复制代码

--根据姓名查询的学生信息,返回学生的城市及年龄

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),    --输入参数

@city nvarchar(20) out, --输出参数

@age  int output        --输入输出参数

AS

SELECT @city=City,@age=Age FROM Students WHERE Name=@name AND Age=@age

GO

--执行

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;

复制代码

存储过程实现增删改

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

--执行

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

--执行

EXEC PROC_UPDATE_STUDENT 1001,N'张思',20,'ShangHai'

复制代码

3、删除

复制代码

--根据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

--执行

EXEC PROC_DELETE_STUDENT_BY_ID 1001

复制代码

存储过程实现分页

复制代码

-- 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

--执行

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

--执行

EXEC PROC_SELECT_BY_PAGE_WITH_TOP 1,2

我的博客文章地址:http://www.cnblogs.com/hgmyz/p/6755162.html

欢迎关注我的微信公众号:互联网碎片搜集

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • 什么是SQL数据库: SQL是Structured Query Language(结构化查询语言)的缩写。SQL是...
    西贝巴巴阅读 1,800评论 0 10
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,560评论 18 399
  • 一. Java基础部分.................................................
    wy_sure阅读 3,785评论 0 11
  • 一(我们) 父辈那年代,贫穷,落后,结婚只是凑合。 父亲二十,母亲十九。母亲说,父亲家中穷...
    冰蝶摘星阅读 90评论 6 4
  • 回想27号晚的事,是我没有对别人的话进行分析判断,听了三言两语就妄下断言造成一场误会,刺伤彼此。我没有去证实别人说...
    js摆渡人阅读 128评论 0 0