您现在的位置是:网站首页> 编程资料编程资料
SQL Server 2005基础知识详细整理_mssql2005_
2023-05-27
488人已围观
简介 SQL Server 2005基础知识详细整理_mssql2005_
1. ACID:指数据库事务正确执行的四个基本要素缩写:
1.原子性2.一致性3.隔离性4.持久性
2.数据库对象:表(table) 视图(view) 存储过程(stored procedure) 函数(function)索引(index)
3.SQL Server 2005中包含master、model、msdb、tempdb四个系统数据库。
4.使用T-SQL语句创建数据库:
CREATE DATABASE [ApressFinacial] ON PRIMARY
( NAME = N'ApressFinacial', FILENAME = N'I:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\ApressFinacial.mdf' , SIZE = 3072KB , FILEGROWTH = 1024KB )
LOG ON
( NAME = N'ApressFinacial_log', FILENAME = N'I:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\ApressFinacial_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%)
5.T-SQL语句删除数据库:drop database[数据库名]
6.常见的约束类型:主键约束、唯一约束、检查约束、默认约束、外键约束。
7.添加约束的语法:
Alter table 表名
Add constraint 约束名 约束类型 具体的约束说明
8.删除约束:alter table 表名
Drop constraint 约束名
9.授权语法: grant 权限[on 表名] to 数据库用户
例:grant select insert update
On students to zhangsan
10.T-SQL语句创建登录名:
Create login[yuan]
With password='130125'
Go
11.数据库完整性分为:实体完整性、域完整性、参照完整性、用户自定义完整性。
12.T-SQL 中的运算符:
运算符
含义
=
等于
>
大于
<
小于
>=
大于等于
<=
小于等于
<>
不等于
!
非
通配符
解释
示例
_
一个字符
A Like 'C_'
%
任意长度的字符
B Like 'CO_%'
[]
括号中所指定范围内的一个字符
C Like '9W0[1-2]'
[^]
不在括号中所指定范围内的一个字符
D Like '%[A-Z][^1-2]'
13.查询语句:select 列名 from 表名 where 条件 如:select* from students where no=1
14.插入数据行:insert [into]<表名> [列名]values<值列表>
例:intset into students(name,address,grade,email,sex)
Values('长青菜','上海松江',5,'zqc@souhu.com','男')
注意:(不能为标识列指定值,因为它的数字是自动增长的)
15.更新数据行:update <表名> set<列名=更新值> [where<更新条件>]
例:update students
Set address='石家庄'
Where address='保定'
16.删除数据行: delete from<表名>[where<删除条件>]
例:delete from studentinfo where no='180108225'
17.问题:如果标识列A的初始值为1,增长量为2,则输入三行数据以后,再删除两行,下次再输入数据行的时候,标识值从多少开始? ( 7 )
18.删除列: alter table student drop column address
19.Exists: if exists (select*from?where name='yuanDB') drop database stuDB
20.变量: 局部变量(必须以标记@作为前缀)
全局变量(必须以标记@@作为前缀)
全局变量由系统定义和维护,我们只能读取,不能修改全局变量的值。
21.局部变量声明: 例:Decalre @name vachar(8) decare @seat int
赋值:set @变量名=值或select@变量名=值 set @name='张三'
Select @name=sname from students where no='1'
22.逻辑控制语句: IF-ELSE语句
If(条件)
Begin
语句1
语句2...........
End
Else
Begin
语句1
语句2.........
End 注:else是可选的。
例: decalre @myavg float
Select @myavg =AVG(course) from score
Print'平均分'+convert(varchar(5),@myavg)
If(@myavg>70)
Begin
Print '本班成绩优秀,前三名成绩为:'
Select top 3 * from score order by score desc
End
Else
Begin
Print '本班成绩较差,后三名成绩为:'
Select top 3 *from score order by score
End
23.while循环语句: while(条件)
Begin
语句1
语句2..........
Break
End
例:DECLARE @n int
WHILE(1=1) --条件永远成立
BEGIN
SELECT @n=COUNT(*) FROM score
WHERE score<60 --统计不及格人数
IF (@n>0)
UPDATE score --每人加2分
SET score=score+2
ELSE
BREAK --退出循环
END
print '加分后的成绩如下:'
SELECT * FROM score
24.case--end多分支语句
语法: case
When 条件1 then 结果1
When 条件2 then 结果2
..............
Else 其他结果
End
例:print 'ABCDE五级显示成绩如下:'
Select studentID,
成绩=case
When score<60 then'E'
When score between 60 and 69 then 'D'
When score between 70 and 79 then 'C'
Else 'A'
End
From score
25.批处理语句示例:
SELECT * FROM stuInfo
SELECT * FROM stuMarks
UPDATE stuMarks
SET writtenExam=writtenExam+2
GO
26.习题及答案:
习题内容:则根据如下规则对成绩进行反复加分,直到平均分超过85分为止。请编写T-SQL语句实现。
90分以上: 不加分
80-89分: 加1分
70-79分: 加2分
60-69分: 加3分
60分以下: 加5分
习题答案:
SELECT * FROM score --原始成绩
DECLARE @labAvg int
WHILE(1=1)
BEGIN
UPDATE score
SET score=
CASE
WHEN score<60 THEN score+5
WHEN score between 60 AND 69 THEN score+3
WHEN score between 70 AND 79 THEN score+2
WHEN score between 80 AND 89 THEN score+1
ELSE score
END
SELECT @labAvg=AVG(score) FROM score
IF @labAvg>=85
BREAK
END
SELECT * FROM score --加分后的成绩
27.把一个表中的数据复制到另一个表中: insert into <表名>(列名)
Select <列名>
From <源表名>
28.把查询结果放在新表中同时插入新的标识列:
Select 列名 identity(数据类型,标识种子,标识增长量)as
列名 into 新表 from 原始表
例: select students.sname, students.saddress, students.semail, identity(int,1,1) as studentID into tongxunlu from students
29.更新数据行:
语法: update<表名>
Set<列名=更新值>
Where <更新条件>
例: update students
Set address='软件学校'
Where address='软件学院'
30.问题:按多列排序:例:select no,name,address,grade
From students
Where sex in(1,0)
Order by no,grade
31.字符串函数:
Replace: select replace('莫勒可切.杨可','可',‘兰')
返回结果:莫勒兰切.杨兰
Upper: select upper('sql server 课程')
返回结果:SQL SERVER 课程
Getdate: select getdate()获取当前时间。
Dateadd: select dateadd(mm,4,'01/01/2009')
返回结果:05/01/2009
Datename: select datename(dw,'01/15/2000')
返回结果: Saturday
32.聚合函数:
Max-min: select AVG(score) as 平均成绩,MAX(score) as 最高分,MIN(score) as最低分 from score where score>=60
Count: select count(*)as 及格人数 from score
Where score>=60
33. 分组查询:
select courseid,avg(score) as 课程平均成绩
From score
Group by courseid
34.习题:
假如成绩单中记录了学生的几次考试成绩,要查询每位学生的每门课的总成绩,怎么查?
Select courseid,studentid,sum(score) as 总成绩
From score
Group by courseid,studentid
35.分组查询--HAVING
Having:指定了组或聚合的搜索条件,常常与group by子句一起使用。
例:
select studentid as学员编号,avg(score)as 平均成绩
From score
Group by studentid,couseid
Having avg(score)>60
36.多表查询——内联结
例:
select students.smame, score.courseid, score.score
From students,score
Where students.scode=score.studentid
37.多表联结——三表联结
例:
select S.name as姓名,CS.coursename as课程,C.score as 成绩 from students As S
Inner Join score as C ON(S.scode=C.studentid)
Inner join course As CS ON(CS.courseid=C.courseid)
38.多表联结查询——右外联结
例:
select titles.title_id,Titles.title,publishers.pub_name
From titles
Right outer join publishers
On titles.pub_id=publishers.pub_id
39.银行案例——多表联结——左外联结:
例:
intsert into account(account.Cardid,account.score)
Select users.cardid,2
From users
Left Join account ON(account.cardid=users.cardid)
Where account.cardid is NULL
40.子查询:
例:
select * from students
Where scode>(select scode from students where Sname='张扬')
GO
41.例:内联结(等值联结)
相关内容
- SQL Server 2005删除日志文件的几种方法小结_mssql2005_
- SQL Server中带有OUTPUT子句的INSERT,DELETE,UPDATE应用_mssql2005_
- SQLserver中的declare变量用法_mssql2005_
- Sql server 备份还原后出现 受限制用户 问题_mssql2005_
- 详解删除SQL Server 2005 Compact Edition数据库_mssql2005_
- 在SQL Server 2005所有表中搜索某个指定列的方法_mssql2005_
- SQL Server 中 RAISERROR 的用法详细介绍_mssql2005_
- SQL Server 2005安装配置方法图文教程 完美兼容Win7所有版本_mssql2005_
- Sqlserver2005日志文件太大如何减小_mssql2005_
- Microsoft Sql server2005的安装步骤图文详解及常见问题解决方案_mssql2005_
点击排行
本栏推荐
