Microsoft SqlServer数据库的基本语法和关系代数的基本运算

嗨,我又来啦。

多夸夸我好吗?我会很——开心的噢~♪

新的一天,从一场美妙的邂逅开始。

        让我们先从关系代数开始吧♪

一、关系代数的运算

关系代数分为两类:集合运算符,专门的关系运算符。

并(∪)、交(∩)、差(-)、笛卡尔积(×)

选择(σ)、投影(π)、自然连接(⨝)、除(÷)

别急嘛♪让我们一个一个来♪

首先,先确定两个集合   

R
ABC
a1b1c1
a1b2c2
a2b2c1

表1

S
ABC
a1b2c2
a1b3c2
a2b2c1

表2

这里的集合运算符就是做集合运算的,让我们先来把上面表格抽象成集合吧♪

R=\left \{ \left (a_{1},b_{1},c_{1} \right ) ,\left (a_{1},b_{2},c_{2} \right ),\left (a_{2},b_{2},c_{1} \right )\right \}

S=\left \{ \left (a_{1},b_{2},c_{2} \right ),\left (a_{1},b_{3},c_{2} \right ),\left ( a_{2},b_{2},c_{1} \right ) \right \}

1.集合运算符:

 (1)并 (∪)

                    图1.1

R\cup S=\left \{ \left (a_{1},b_{1},c_{1}\right )\left (a_{1},b_{2},c_{2} \right ) \left (a_{2},b_{2},c_{1} \right )\left (a_{1},b_{3},c _{2} \right )\right \}

图1.2

R∪S
ABC
a1b1c1
a1b2c2
a2b2c1
a1b3c2

表3

(2)交(∩)

                                图1.3

R\cap S=\left \{ \left (a_{1},b_{2},c_{2} \right ) \left (a_{2},b_{2},c_{1} \right )\right \}

图1.4

R∩S
ABC
a1b2c2
a2b2c1

表4

(3)差(-)

                                 图1.5

R-S=\left \{ \left (a_{1},b_{1},c_{1}\right )\right \}

图1.6

R-S
ABC
a1b1c1

表5

(4)笛卡尔积(×)

啊拉~,笛卡尔积的文氏图咱可不会画哦~♪

不会吧?你不会真的在期待爱莉绘出这个笛卡尔积的文氏图吧♪

好了,不逗你了,我们接着讲吧♪

接下来的表6可能会有一点点大哦♪

但是爱莉会好好进行解释的~♪

R×S
R.AR.BR.CS.AS.BS.C
a1b1c1a1b2c2
a1b1c1a1b3c2
a1b1c1a2b2c1
a1b2c2a1b2c2
a1b2c2a1b3c2
a1b2c2a2b2c1
a2b2c1a1b2c2
a2b2c1a1b3c2
a2b2c1a2b2c1

表6

是不看花眼了♪别急嘛~

让我们来简化一下上面抽象过了的集合吧♪

R=\left \{ r_{1},r_{2},r_{3}\right \}

S=\left \{ s_{1},s_{2},s_{3} \right \}

然后再用这个简化过的集合再进行笛卡尔积试试吧♪

R\times S=\left \{ \left ( r_{1},s_{1} \right ),\left (r_{1},s_{2} \right ) , \left (r_{1},s_{3} \right ) , \left ( r_{2},s_{1}\right ) , \left (r _{2},s_{2} \right ) , \left (r _{2},s _{3} \right ) ,\left ( r _{3},s_{1} \right ) , \left (r_{3},s_{2} \right ) ,\left ( r_{3} ,s_{3} \right ) \right \}

怎么样?是不是很好懂了呢♪

什么?还是不太明白。

好吧,那我再细讲一下哦♪可要认真看哦。

                                        图1.7

R×S 时,R上的元素分别乘上S上的元素。

然后将乘上的元素并入集合中,就是上面的R×S集合了。

这下能看懂了吗♪

2.专门的关系运算符:

(1)选择(σ)

唔~这样好像不太好描述呢♪那我们先来举个例子吧♪相信聪明的你看了这个例子就能学会了呢♪

我们再来个表7吧♪

namesexagedepartment
Kiana Kaslanafemale16St. Freya's Lyceum
Raiden Meifemale17St. Freya's Lyceum
Natasha Cioarafemale21World Snake

表7

就把这个表9叫character表吧♪

例:\sigma _{department='St. Freya's Lyceum'}\left ( character \right )

让我猜猜,那么聪明的你肯定知道这是什么意思了吧♪

没错♪这就是在character表中选择department是St. Freya's Lyceum的元组。

选择后的结果就是接下来的这个表8了♪

namesexagedepartment
Kiana Kaslanafemale16St. Freya's Lyceum
Raiden Meifemale17St. Freya's Lyceum

表8

(2)投影(π)

而这个投影就更简单啦,当然还是要借用一下表9啦♪

例:\prod _{name}\left ( character \right )

唔~我想已经不用再考你了吧♪投影就是把那一列选出来,单独成表哦♪

表9

(3)自然连接(⨝)

这里,我们也要再先给定两个表哦♪

R
ABC
a1b15
a1b26
a2b38
a2b412

表10

S
BE
b13
b27
b310
b32
b52

表11

这里用的表是表10和表11哦,不要搞混了♪

先来讲一下概念吧♪

自然连接是一种特殊的等值连接,两个关系进行比较的分量必须是同名的属性组,并且在结果中把重复的属性列去掉红色的字一定要注意了哦♪

C<E(非等值连接)
AR.BCS.BE
a1b15b27
a1b15b310
a1b26b27
a1b26b310
a2b38b310

表12

等值连接
AR.BCS.BE
a1b15b13
a1b26b27
a2b38b310
a2b38b32

表13

  

自然连接
ABCE
a1b153
a1b267
a2b3810
a2b382

表13

(4)除(÷)

哎呀♪是不是看了这么多的表,已经眼花缭乱了呢♪

接下来是一个很解压的运算符哦,当然还是要给两个表格啦♪

R
ABC
a1b1c2
a2b3c7
a3b4c6
a1b2c3
a4b6c6
a2b2c3
a1b2c1

表14

S
BCD
b1c2d1
b2c1d1
b2c3d2

表15

表14和表15里面共同的属性列是B、C

R÷S就是R里面满足S的,且去掉S的元素♪这里的满足是全部满足哦♪

看了接下来的图和表就知道了哦♪

图1.8

能看的吗♪需要爱莉再解释一下吗?

为什么没有a2呢,因为a2没有全部满足S表的内容哦♪

R÷S
A
a1

表16

怎么样?是不是一下子就清爽了呢♪

二、Microsoft SqlServer的基本语法(关系型)

建表:
Create table <表名>
            (
                <列名>  <数据类型>  <列级完整性约束>
                <列名>  <数据类型>  <列级完整性约束>
                ......
            )

完整性约束:

        表级约束:

                主码:

                        Primary key ( <属性1> ,<属性2>)    属性即列名

                外码:

                      Foreign key <此表格的属性> references <被参照表的表名> <被参照表中的属性名,即前面的列名>

        列级约束:

                主码:<属性名> <数据类型> primary key       

示例:

   create table student

                (

                    Sno char(9) primary key,

                    Sname char(20) unique,

                    Ssex char(2),

                    Sage smallint,

                    Sdept char(20)

                )

Smallint 短整型(2字节)

修改数据:
Update<表名>

Set <列名>=<>

[Where<条件>]

插入数据:
insert into <表名>[<属性列1>.....]

Values()

修改基本表:
Alter table <表名>

增:add column <新列名>  <数据类型>

删:drop column <列名>  [cascade \ restrict]

改:alter column <列名>  <数据类型>

删除表时:若选择cascade,则该表无限制条件。删除基本表同时删除相关对象

          若选择restrict,则该表有限制条件,不能存在依赖该表的对象,否则无法删除

建立索引:
Create [unique\cluster] index <索引名> on <表名>(<列名> <次序>)

ASC:升序 (默认值)

DESC:降序

数据查询:

选择全表:select*

Select [all\distinct] <目标列名>     distinct 消除重复行

From <表名>

Where <条件表达式>

或\且  Group by <列名1> [having <条件表达式>]  一般跟在聚集函数后sum  avg  max min

又如:

查询平均成绩大于大于90的学生号码和平均成绩

Select sno,avg(grade)

From sc

Group by sno

Having avg(grade)>=90

或\且  Order by <列名2>[ASC\DESC]

Where 表达式

确定范围:

 between and  Not between and

确定集合:

in   not in

字符匹配:

likenot like

                        字符匹配时,like’_%’ 

                                         _表示第一个字为任意字符

                                        %表示任意长度

空值:

is nullis not null

逻辑运算:

andornot

删除数据
Delete

From <表名>

Where <条件>
定义视图
Create view <视图名> (<列名1>,<列名2>)

As <子查询>

With check option、

子查询可以是任意的select语句

创建角色:
create role <角色名>
授权:
Grant <权限>

On <对象类型>,<对象名>

To <用户名>

With grant option
回收权限:
Revoke <权限>

On <对象类型>

From <角色>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值