数据库复习1

1.关系数据库
关系是一个带有一些特殊属性的表,这个表就称为关系表,表以行和列的形式存储数据,而一组表组成了数据库。表都由行和列组成,而一个关系型表要具有行和列,其列又称为属性,行又称为元组

2.数据库及数据库表的建立的基本语句
创建的时候需要熟悉一些基本的语法格式就可以了,具体详细的部分可以参考之前做的数据库的实验
http://wenku.baidu.com/view/41e917f16f1aff00bfd51e20
这些基本算是一个入门基础

3.主键和外键
主键:唯一标识一条记录,不能有重复的,不允许为空,用来保证数据完整性,主键只能有一个。
外键:表的外键是另一表的主键, 外键可以有重复的, 可以是空值,用来和其他表建立联系,一个表可以有多个外键。
所以表和表之间的关系也就有了我们常说的主键表和外键表,下面的这个例子分数表中 Student3和kc是主键表,分数表是外键表。

(分数表)
关于主键:primary key(xh,kch),
关于外键:foreign key(xh)references Student3(xh),
关于外键:foreign key(kch)references kc(kch),

4.基本表的修改
对表添加一列: alter table cjdj add rkjs char(20)
删::alter table cjdj drop column rkjs
改属性:alter table Student3 alter column xm char(10) not null
改约束:alter table cjdj add constraint cj_1 check (cj>0 and cj<=100)

建立临时表
create table #linshi ( name1 char(20), age1 int ) go

建立索引 和删除
create index xh_kch on cjdj(xh asc,kch desc)
drop index cjdj.xh_kch

删库:if exists(select * from sys.databases where name=’test2’) drop database test2
删表:if exists(select * from sys.objects where name=’Student’) drop table Student

5.简单sql查询和连接查询
增1:insert into Student(Sno,Sname,Ssex,Sage,Sdept) values(‘1001’,’李勇’,’男’,20,’计算机’)
增2:insert into Deptage(Sdept,avgscore) select Sdept,avg(Sage) from Student group by Sdept
查:select Sno,Grade*0.8 from SC where Cno=1 and Grade between 80 and 90
改:update Student set Sage=22 where Sno=’1001’
改2:update SC set Grade=0 where Sno in (
select Sno from Student
where Sdept=’计算机科学系’ )

删除:delete from SC where Sno=’1001’
不再需要该表时, 用 drop;
仍要保留该表,但要删除所有记录时, 用 truncate;
删除部分记录时(always with a WHERE clause), 用 delete.

6.数据库的嵌套查询(子查询)
不相关子查询:不依赖于其外层语句的操作结果,他们执行时可分为两个独立的步骤,即先执行子查询,在执行外层查询
相关子查询:其子查询和外层相互交叉的数据检索方法

不相关子查询 in
–例求选修了高等数学的学号和姓名
select Sno,Sname from dbo.Student where Sno in ( select Sno from dbo.SC where Cno=( select Cno from dbo.Course where Cname=’数学’) )

–例查询选修了全部课程的学生姓名
select sname from dbo.Student s where not exists ( select * from dbo.Course c where not exists
( select * from dbo.SC where s.sno=sc.sno and c.cno=SC.cno )
)
相关子查询:结果应用到了外层嵌套的表
http://wenku.baidu.com/link?url=3dj2ghbJBcof_sjKsBi0jQ6svnYIGzc3uyiFW5aeoH_eeklpwVFeUhgC9MGfqCo4gJQBzfa-LFXPXQpidaLQ7IF3U7PMROC_WUn_TdP7qFe
这里有一个课件说他们之间的区别,还是挺详细的

7.exists 和 in的区别
正好说到这里,就来看看这两者的区别吧:
exists : 强调的是是否返回结果集,不要求知道返回什么,可以返回多个值
in:引导的子句只能返回一个字段
例子:
http://www.cnblogs.com/mytechblog/articles/2105785.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值