首页 > 数据库 > SQL Server > 正文

SQL server高级应用 收藏版

2024-08-31 00:44:58
字体:
来源:转载
供稿:网友
一. 建库,建表,加约束.
1.1建库

复制代码 代码如下:


use master
go
if exists (select * from sysdatabases where)―判断master数据库sysdatagbases表中是否存在将要创建的数据库名
drop database MyDatabase―如果sysdatabases表中存在该数据库名,则将它删除
go
exec xp_cmdshell ‘md D:/MyDatabases'―利用存储过程创建一个文件夹用于存储数据物理文件(数据文件,日志文件),DOS命令(mkdir=md)
go
create database MyDatabase―创建数据库
on
(
name='MyDatabase_data',--指定逻辑文件名
filename='D:/MyDatabases/MyDatabase_data.mdf',--指定物理文件名
size=5mb,--初始大小
maxsize=50mb,--指定物理文件最大容量,可选
filegrowth=20%--增长量
)
log on
(
name='MyDatabase_log',--指定逻辑日志文件名
filename='D:/MyDatabases/MyDatabase_log.ldf',--指定日志物理文件名
size=5mb,--初始大小
maxsize=50mb,--指定日志物理文件最大容量,可选
filegrowth=20%--增长量
)
go
use MyDatabase
go


1.2建表.

复制代码 代码如下:


If exists (select * from sysobjects where)
drop table Mytable
go
create table Mytable
(
ID int not null identity(1,1) primary key,--标识种子1,标识增量1,设该列为主键
name nchar(10) not null,--不可为空
degree numeric(18,0)―身份证,numeric(18,0)代表18位数字,小数位数为0
)
Go


1.3加约束.

复制代码 代码如下:


Alter table stuInfo add constraint PK_stuNo primary key(stuNo)―主键
alter table stuMarks add constraint FK_stuNo foreign key(stuNo) references stuInfo(stuNo)―外键
alter table stuInfo add constraint UQ_stuID unique(stuID)―唯一约束
alter table stuInfo add constraint df_stuAddress default(‘地址不详') for stuAddres―默认约束
alter table stuMarks add constraint ck_stuAge check(stuAge between 15 and 40)―检查约束
alter table stuMarks drop constraint ck_stuAge―删除约束


1.4帐户管理.
1.4.1创建登录帐户.

复制代码 代码如下:


exec sp_grantlogin 'jbtraining/s26301' --windows用户为jbtraining/s26301,jbtraining 表示域
exec sp_addlogin 'admin','0533131'--SQL登录帐户,帐户: 'admin',密码:0533131.


1.4.2创建数据库用户.

复制代码 代码如下:


exec sp_grantdbaccess 'jbtraining/s26301','s26301dbuser'--s26301dbuser为数据库用户名
exec sp_grantdbaccess 'admin', 's26301dbuser'--s26301dbuser为数据库名


1.4.3向数据库用户授权.

复制代码 代码如下:


/*为s26301dbuser分配对表mytable的select,insert,updata,delete权限*/
grant select,insert,update,delete on mytable to s26301dbuser
/*为s26301dbuser用户分配创建表的权限
grant create table to s26301dbuser


二.T-SQL编程
2.1变量.
局部变量的名称必须以标记@作为前缀:
Declare @name varchar(8)--声明变量。
Declare @name varchar(8)=value--初始值。
Set @name=value-- 赋值。
Select @name=value--赋值。
全局变量
SQL server中的所有全局变量都使用两个@标志作为前缀:

变量

含义

@@error

最后一个T-SQL错误的错误号

@@identity

最后一次插入的标识值

@@language

当前使用的语言名称

@@max_connections

可以创建同时连接的最大数目

@@rowcount

受上一个SQL语句影响的行数

@@servername

本地服务器的名称

@@servicename

该计算机上的SQL服务的名称

@@timeticks

当前计算机上每刻度的微秒数

@@transcount

当前连接打开的事务数

@@version

SQL server的版本信息


2.2输出语句.
Print局部变量或字符串,以字符串形式打印数据 。
Select 局部变量AS自定义列名,以表格形式打印数据。
2.3逻辑控制语句.
2.3.1.If-else
If(表达式)
Begin
语句1
语句2
End
Else
Begin
语句1
语句2
End
2.3.2.case
Case
When 条件一 then 结果二
When 条件二 then 结果二
End

三.高级查询

3.1子查询.
Select … from 表1 where 字段1>(子查询)
3.2IN和NOT IN子查询
Select … from 表1 where 字段一 NOT IN (子查询)
Select … from 表2 where 字段二 IN (子查询)
3.3Exists和Not Exists子查询
If exists(子查询)
语句
If not exists(子查询)
语句

四.事务,索引和视图.

4.1事务
² 开始事务:begin transaction
² 提交事务:commit transaction
² 回滚事务:rollback transaction
事务分类
² 显式事务:用begin transaction 明确指定事务的开始。
² 隐性事务:通过设置set implicit_transactions on语句,将陷性事务模式设置为打开。当以隐性事务操作时,SQL server将在提交或回滚事务后扑克动启动新事务。无法描述事务的开始,只需提交或回滚每个事务.
² 自动提交事务:这是SQL server的默认模式,它将每条单独的T-SQL语句视为一个事务。如果成功执行,则自动提交。如果错误,则自动回滚。
示例:
Begin transaction--开始事务

复制代码 代码如下:

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表