比较探讨T-Sql (一)

一、概述
sql语言按功能划分为四类:数据查询语言(DQL)、数据操纵语言(DML)、数据定义语言(DDL)和数据控制语言(DCL)。其中,数据查询语言(DQL)与数据操纵语言(DML)以我们熟悉的select、insert、update和delete语句构成。然而,这不是t-sql的全部,更多看上去纷繁复杂的定义、语句让人眼花缭乱,但如果能从数据定义语言(DDL)和数据控制语言(DCL)的基本结构入手,用比较的方法审视,留意其中的异同,或许能发现一定的规律,掌握起来事半功倍。值得一提的是,sql语言大小写不敏感。
二、数据定义DDL(create、alter、drop)
1、通式,基本结构:
1)、新建一个对象:
create+对象+对象名
2)、修改一个对象:
alter+对象+对象名
3)、删除一个对象
drop+对象+对象名
其中,对象可以是:数据库database、表table、视图view、函数function、存储过程procedure、触发器trigger、索引index、规则rule、默认值default、登录login、角色role、用户user、架构schema。
create语句必须是批处理的第一句,如果前面语句,需要在create前先执行go语句,go的后面不可以有分号";"。
2、新建一个对象: create+对象+对象名
1)、新建数据库database
(1)、create database 数据库名 [on primery(选项)[,filegroup(选项)], log on(选项)];
其中,选项为:
name=‘逻辑名’, filename=‘文件存储路径’, size=‘文件初始大小’, maxsize=‘文件最大容量’, filegrowth=‘文件自增长步长’
(2)、将数据库文件附加到数据库
create database 数据库名 on (filename=‘数据库文件路径’) for attach;
2)、新建表table
create table 表名(字段名1 类型 [选项], 字段名2 类型 [选项], … 字段名n 类型 [选项]);
其[选项]为 [primary key|check|default|identity|not null],当要指定多个字段组成主键时,不可使用字段级完整性约束,必须使用表级完整性约束,即primary key(字段1, 字段2,…, 字段n)。
创建表前需要先指定所在的数据库,即
use 数据库名;
go
3)、新建视图view
create view 视图名 as (select 字段1, 字段2, …, 字段n from 表1 [[left|right|inner ]join 表2 on(条件)])
inner join 和 join其实是等价的。
视图本质上可以看作是一个返回类型为table的函数;返回类型为table的函数也可以当做视图使用。
4)、新建函数function
(1)、新建标量函数
create function 函数名(参数1  类型, 参数2  类型, …, 参数n  类型)returns  类型  [with encryption|schemabinding] as
bgin
   函数体
end
(2)、新建内联表值函数
create function 函数名(参数1  类型, 参数2  类型, …, 参数n  类型)returns  table  [with encryption|schemabinding] as
[begin]
   return select语句
[end]
(3)、新建多语句表值函数
create function 函数名(参数1 类型, 参数2 类型, …, 参数n 类型)returns  表名  table (字段名1 类型, 字段名2 类型, … 字段名n 类型)   [with encryption|schemabinding]  as
bgin
   函数体
end

5)、新建存储过程procedure
create procedure 参数1 类型 [output], 参数2 类型 [output], …, 参数n 类型 [output] [with encryption|recompile|execute_as_clause] [for replication] as
begin
   …
end
6)、新建触发器trigger
create trigger on 表名|视图名|all  server|database  [with encryption]  for  {选项}  as
begin
   …
end
{选项}为:
A、DML触发器:
instead of|after {[insert] [,] [update] [,] [delete]}
B、DDL触发器:

  logindatabasetable
createcreate_logincreate_databasecreate_table
alteralter_loginalter_databasealter_table
dropdrop_logindrop_databasedrop_table

7)、新建索引index
create  {clustered|unclustered|unique}  index  索引名  on  {表名|视图名}(字段名1[, 字段名2 , ...... 字段名n ])

8)、新建规则rule
create rule 规则名 as 逻辑表达式;

9)、新建默认值default
create default 默认值名称 as 默认值

10)、新建登录login
create login 登录名 [from windows ] [with pawssword='密码'[, default_database=数据库名]];
如果要立即使用新建的登录名登录服务器, 上述create语句中with的选项中必须指明check_expiration=off,即密码不强制过期,check_expiration默认值为on.

11)、新建数据库用户user
create user 用户名 [for login 登录名];

12)、新建角色role
create role 角色名 [authorization 用户名];

13)、新建架构schema
create schema 架构名 [authorization 角色名];

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值