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

来源:互联网 发布:r studio for mac 编辑:程序博客网 时间:2024/06/13 18:05
一、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



0 0
原创粉丝点击