您的位置:首页 > 数据库

SQL_2th_T-SQL语句介绍和语法初识

2017-02-16 16:57 309 查看
一、Transact-SQL编程语言

美国国家标准协会(ANSI)和国际标准组织(ISO)为SQL定义了标准,微软通过用Transact-SQL和

ANSI-SQL兼容,Transact-SQL还包含了几种能够增强性能的扩展。

二、Transact-SQL语句的类型

1、数据定义语言(Data Definition Language)语句

DDL语句用于生成数据库、表、和用户自定义的数据库

create object_name

alter  object_name

drop   object_name

1)创建命令:create

--使用下列语句在School_DB中创建一个Teahcer表:

USE School_DB

CREATE TABLE Teahcer(

custID int,

company varchar(40),

contact varchar(30),

phone char(12)

)

GO

2)修改命令:alter

--向Teacher表中添加一行age信息:

ALTER TABLE Teacher ADD age int DEFAULT 30

3)删除命令:drop

--删除Teacher表:

DROP TABLE Teacher

2、数据控制语言(Date Control Language)语句

用于改变某个用户或角色相关联的权限

1)授权命令:grant

grant单词翻译:

vt.承认;同意;准许;授予

n.拨款;补助金;授给物(如财产、授地、专有权、补助、拨款等)

vi.同意

--授权

--GRANT <权限> ON 表名[(列名)] TO 用户 With grant option

USE School_DB

GRANT SELECT ON dbo.Teacher TO PUBLIC

GO

2)拒绝授权命令:deny

--拒绝授权

USE School_DB

DENY SELECT ON dbo.Teacher TO PUBLIC

GO

授权命令是数据库管理员使用的,若给用户分配权限时带With grant option,则

普通用户获取权限后,可以把自己的权限授予其他用户。

3)回收权限 revoke

REVOKE <权限> ON <数据对象>  FROM <数据库用户名>

3、数据操作语言(Data Manipulation Language)语句

操作数据库中的数据,可以更改数据库中的数据或查询数据库中的信息。

增删改查

Insert

Delecte

Update

Select

1)查询命令:Select

SELECT * FROM dbo.Teacher

一、Transact-SQL语法要素

1、批处理分段命令:go

--创建一个数据库TestBD并且使用

CREATE DATABASE TestDB

USE TestDB

执行时提示:

数据库 'TestDB' 不存在。请确保正确地输入了该名称。

--使用GO命令将语句进行分批处理:

CREATE DATABASE TestDB

GO

USE TestDB

执行成功

declare @age int --定义一个int类型的变量age

set @age=10 --设置int变量的值为10

select @age --然后查询age的值是多少

查询结果为10

--下面再来写一个

declare @age int

set @age=10

select @age

go

set @age=20

select @age

执行时提示:

必须声明标量变量 "@age"。

也就是说加了go的关系使得程序分为了两段,因此认为下面的是另一个age,

所以说没有定义该age。

一句话,go使得SQL语句得以分批执行。

2、执行存储过程的命令:exec

exec+要执行的语句表示:执行后面接上的语句,exec可写可不写。

3、注释语句

1)行注释:--

2)块注释:/*  */

三、标识符

1、第一个字符是a-z或A-Z

2、第一个字符之后可以是数字,字母,或各种符号@、$、_

3、第一个字母是符号时表示有特殊用途

1)@表示局部变量或参数

2)#表示临时表和存储过程(临时表是指一个表在数据库重启后数据就没有了,当前用户创建的临时表另一个用户不能用)

3)##代表一个全局临时表(全局临时表是指所有用户都可以用的临时表)

补充,临时表创建举例:

create table #t(

Tname nvarchar(10),

Tage int

)

执行,创建成功,临时表的名字为t,位于数据库 -> 系统数据库 -> tempdb -> 临时表

当前用户执行:select * from #t是可以查询得到临时表t的内容的。

4、当对象名包含空格时,必须使用中括号[]或双引号""把限定标识符括起来

下面使用中括号[]:

create table [#t t](

Tname nvarchar(10),

Tage int

)

select * from [#t t]

二、数据类型

1、数字型:

1)整数 int、tinyint、smallint、bighint

2)十进制小数 money、smallmoney、decimal

3)浮点数和real

2、日期型datetime

可以精确到0.333毫秒

3、字符型

1)定长字符:char和nchar

char(20)定义一个20个字符长度的变量,如果该变量只存了5个字符,那么剩下的15个

字符就造成了浪费。

declare @address varchar(20)

set @address='shijiazhuang'

select @address+'end'

执行结果:

shijiazhuang        end

char适合存放英文字符,一个字符占用1个字节

nchar适合存放中文和其它文字,一个字符占用2个字节

char和nchar不论实际是多少字符,都占用定义时限定的最大字符数,超过的长度的内容会被忽略。

2)变长字符:varchar和nvarchar

varchar(20)定义一个20个字符长度的变量,如果该变量只存了5个字符,那么剩下的15个

字符会被释放掉,不会造成浪费。

declare @address varchar(20)

set @address='shijiazhuang'

select @address+'end'

执行结果:

shijiazhuangend

varchar和nvarchar实际是多少字符就是多少字符,但不能超过定义时限定的最大字符数。

超过的长度的内容会被忽略。

4、二进制型Binary和varbinary,bit代表一位的值0或1。

三、数据库中的变量

--定义变量使用declare + @变量名 + 变量类型

 declare @sname varchar(20), @address nvarchar(20)

--给变量赋值使用set

set @address='白毛浮绿水红掌拨清波'

--查询变量的值使用select

select @address

全局变量:

@局部变量作用域仅限于一个批处理中,@@而全局变量在整个会话有效

--查询数据库版本

select @@version

--查询服务器名称

select @@servername
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息