SQL Server 2005中的外联结用法,sql联结
SQL Server 2005中的外联结用法一:
有两个表:学生表,学生选课表,表中数据为:
学生表:
学生选课表:
要查看所有学生的选课信息,
标准的SQL语句,外联结语句为
use stu_course select L.sno,sname,ssex,sage,sdept,cno,grade from student L,sc where L.sno=sc.sno(*)
理论上的结果为:
但是,在SQLServer2005中运行会出现错误,错误提示为:
消息 102,级别 15,状态 1,第 4 行
'*' 附近有语法错误。
在SQLServer2005中,相应的T-SQL语句应该为:
use stu_course select L.sno,sname,ssex,sage,sdept,cno,grade from student L left join sc on L.sno=sc.sno
运行结果为:
同时,还可以在on后面再加上where限定条件:
use stu_course select L.sno,sname,ssex,sage,sdept,cno,grade from student L left join sc on L.sno=sc.sno where L.sno in(95001,95002,95003,95004)
这时,运行结果为:
以上这个例子是左外联结查询,即:结果表中包含第一个表中所有满足条件的
记录,如果在第二个表中有满足联结条件的记录,则返回相应的值,否则返回NULL
SQLServer2005中的外联结查询用法(续):
有三个表:学生表,学生选课表,课程表,表中数据为:
学生表:
学生选课表:
课程表:
左联结查询举例:
use stu_course select L.sno,sname,ssex,sage,sdept,cno,grade from student L left join sc on L.sno=sc.sno
结果为:
右联结查询举例:
use stu_course select sno,course.cno,course.cname from sc right join course on sc.cno=course.cno
结果为:
全外联结查询举例:
use stu_course select sno,course.cno,course.cname from sc full join course on sc.cno=course.cno
结果为:
如果将这个全外联中的左右两个表交换顺序:
use stu_course select sno,course.cno,course.cname from course full join sc on sc.cno=course.cno
结果仍为:
由以上例子可以看出:
对于左外联结,结果表中包含第一个表中所有满足条件的记录,如果在第二个表中有满足联结条件的记录,则返回相应的值,否则返回NULL;
对于右外联结,结果表中包含第二个表中所有满足条件的记录,如果在第一个表中有满足联结条件的记录,则返回相应的值,否则返回NULL;
对于全外联结,结果表中包含两个表中所有满足条件的记录,如果在其中一个表中有满足联结条件的记录,则返回相应的值,否则返回NULL;
sql server 2005的具体用法说明
动态关键字:
create 新建 alter 修改 drop删除 add添加
动态关键字后一般给表或数据库名
如:1.create database 'MyQQData' 新建数据库 名字为 MyQQData
2.drop table student 删除学员表
约束关键字:
primary 主要的 unique 唯一的 default 默认的 check检查约束
foreign 外来的(外键) references 引文 涉及(引用对象--主键)
建库:
create database '要新建数据库名'
on primary--主数据库
(
name='数据库文件名',
filename='路径(将数据库创建到哪里)+\数据库物理文件名',
/*如果没有特殊要求其后的描述可以不要*/
size=数字mb--,--初始大小
filegrowth=数字%,--设置增长量
maxsize=数字mb--最大容量
)
,
(
/*次要数据库文件,如果没有则不在主数据库文件描述完毕后加"," 创建方法一样*/
name='数据库文件名',
filename='路径(将数据库创建到哪里)+\数据库物理文件名',
)
log on--日志文件
(
name='日志文件名',
filename='路径(将日志文件创建到哪里)+\日志文件的物理文件名',
)
(
/*日志文件2的具体描述,如果有次要文件就要创建相应的日志文件*/
)
go--有后续语句就得加go
建表:
在S2的T-Sql语句中建表语句是最简单的 其需用到 create 新建 关键字
create table 表名
(
字段 数据类型 非空还可以为空,--可以为空写关键字null 非空在null前加not
/*建标识列*/
字段 数据类型 not null identity(1,1),/*identity关键字表明是标识列
前一个1是标识种子后一1是递增量*/
)
--一般建表后紧跟建约束
/*建约束需奥用到我们的动态关键字 alter 修改*/
/*还需用到*/
add /*必须包含add 添加*/ constraint/*约束,也必须包含*/
--固定用法
alter table '表名'
add constraint 约束名 约束类型 约束描述
/*对应约束*/
alter table '表名'
add
--主键
constraint PK_字段/*此为命名规范要求*/ primary key(字段),
--唯一约束
constraint UK_字段 unique key(字段),
--默认约束
constrint DF_字段 default('默认值') for/*到*/ 字段,
--检查约束
constraint CK_字段 check(约束。如:len(字段)>1),
--主外键关系
constraint FK_主表_从表 foreign(外键字段) references 主表......余下全文>>
sql server 2005服务与连接的外围应用配置器
是否正确安装了sql server2005客户端组件?
是否启动了正确的sql server2005实例?
呵呵,希望能有帮助,^_^