1. 数据库三级模式结构
1) 模式:也称逻辑模式,是数据库中全体数据的逻辑结构和特征描述,也是所有用户的公共数据视图。 一个数据库只有一个模式
注:定义模式时不仅要定义逻辑结构,而且要定义数据之间的联系,定义与数据有关的安全性、完整性要求。
2) 外模式:也称用户模式,它是数据库用户(包括应用程序员和终端用户)能看见和使用的局部数据的逻辑结构和特征描述,是数据库用户的数据视图。一个数据库可以有多个外模式
3) 内模式:称为存储模式,一个数据库只有一个内模式。它是数据物理结构和存储方式的描述,是数据在数据库内的表示方式。
2. 常见的数据模型
数据模型是数据库系统的核心与基础,是关于描述数据与数据之间的联系、数据的定义、数据一致性约束的概念性工具的集合。
1) 层次模型:树形结构表示实体类型与实体间的关系
2) 网状模型:用有向图结构表示实体类型与实体间联系
3) 关系模型:以二维表描述数据。数据结构清晰、简单、具有很高的数据独立性。是目前主要的数据库数据模型。
关系模型基本术语:
关系:一个二维表就是一个关系
元组:二维表中的一行,即表中的记录
属性:二维表中的一列,用类型和值表示
域:每个属性取值的变化范围
关系模型中的数据约束:
实体完整性约束、参照完整性约束、用户定义的完整性约束
3. 数据库三范式是什么?
第一范式:表中每个字段都不能再分。
第二范式:满足第一范式并且表中的非主键字段都依赖于主键字段。
第三范式:满足第二范式且表中的非主键字段必须不传递依赖于主键字段,不可传递性依赖。
4. 数据库常用对象
表、视图、存储过程和索引等具体存储数据或对数据进行操作的实体都称为数据库对象。
5. 标识符
1) 标识符的首字符必须是下列字符之一。
统一码(Unicode)的字母,包括拉丁字母a~z、A~Z,以及其他语言的字符。
下划线“_”、符号“@”或者数字符号“#”。
注:某些标识符具有特殊意义。以“@”符号开始的标识符表示局部变量或参数,以“#”开始表示临时表或过程,“##”表示全局临时对象。
2)不允许嵌入空格或其他字符
6. 基本数据类型
分类 |
数据特性 |
数据类型 |
整数数据类型 |
常用的一种数据类型,可以存储整数或者小数 |
Bit、Int、Smallint、tinyint |
货币数据类型 |
用于存储货币值,使用时在数据前加上货币符号,默认“¥” |
Money、smallmoney |
浮点数据类型 |
用于存储十进制小数 |
Real、float、decimal、numeric |
时间/日期数据类型 |
用于存储日期类型和时间类型的组合数据 |
Datetime、smalldatetime、data、datetime(2) |
字符数据类型 |
用于存储各种字母、数字字符和特殊字符 |
Char、nchar(n)、varchar、nvarchar(n) |
二进制数据类型 |
用于存储二进制数据 |
Binary、varbinary |
图像和文本数据类型 |
用于存储大量的字符和以及二进制数据 |
Text、ntext、image |
7. T-SQL语句结构
Select 子句 [Into 子句] from 子句 [where 子句] [group by 子句] [having 子句] [order by 子句]
<1>Select into语句
从表中选取数据,然后把数据插入另一个表中;创建的数据备份复件或用于对记录进行存档。
<2>Select into语法
Select * into new_tablename [in externaldatabase] from old_tablename
用于向另一数据库中拷贝表
Select column_name(s) into new_tablename [in externaldatabase] from old_tablename
8. 常量
数字常量、字符常量、日期和时间常量、符号常量
9. 变量(作用于程序内部,以“@”开头)
1.声明局本变量Declare {@varible_name datatype[,…n]}
select语句select @varible_name=expression
局部变量 2.为局部变量赋值 [from table_name[,..n] where clause]
set语句set @varible_name=expression
注:select与set区别
select可以同时多个赋值;没有返回值时,select保持原值,set赋值为NULL;建议使用Set,原因是因为Set语句没有结果,占用资源少,因此,给一个变量赋值时,使用Set效率 更高
全局变量 全局变量以“@@”开头,系统提供了30多个全局变量
10. 运算符
1.1. 算术运算符 包括+(加)、-(减)、×(乘)、/(除)、%(取余)
1.2. 赋值运算符 =(等号)
1.3. 比较运算符 >大于、<小于、=等于、>=大于等于、<=小于等于、<> 或!= 不等于、!>不大于
1.4. 逻辑运算符 all、and、any、between、exists、in、like、not、or、some
1.5. 位运算符 &(and)、|(or)、^(互斥or)、~(not)
1.6. 连接运算符 +
运算符优先级(高到低)
- 括号:();
- 乘、除、求模运算符:*、/、%;
- 加减运算符:+、- ;
- 比较运算符:=、>、<、>=、<=、<>、!=、!>、!<;
- 位运算符:^、&、|;
- 逻辑运算符:NOT>AND>OR;
11. 流程控制
1,begin....end
多条Transact-SQL语句组成的代码段,从而可以执行一组Transact-SQL语句。BEGIN和END是控制流语言的关键字。BEGIN...END语句块通常包含在其他控制流程中, 用来完成不同流程中有差异的代码功能。
DECLARE @count INT
set @count = 0
WHILE @count < 10
BEGIN
PRINT 'count = ' + CONVERT(VARCHAR(10), @count)
[email protected] = @count + 1
END
PRINT 'loop finished, count = ' + CONVERT(VARCHAR(10), @count)
2.If...else语句
用于在执行一组代码之前进行条件判断,根据判断的结果执行不同的代码。
3.case语句
case语句是多条件分支语句,相比IF...ELSE语句,CASE语句进行分支流程控制可以使代码更加清晰,易于理解。CASE语句根据表达式逻辑值的真假来决定执行的代码流程。
DECLARE @score INT
SET @score = 100
SELECT CASE
WHEN @score >= 90 THEN '优秀'
WHEN @score >= 80 THEN '良好'
WHEN @score >= 70 THEN '中等'
WHEN @score >= 60 THEN '及格'
ELSE '不及格'
END
AS '成绩'
4.while语句
根据条件重复执行一条或多条T-SQL代码,只要条件表达式为真,就循环执行语句。可以使用 BREAK 和 CONTINUE 关键字在循环内部控制 WHILE 循环中语句的执行。
declare @x int,@sum int
select @x=1,@sum=0
while @x<10
begin
set @[email protected]+1
if @x%2=0
set @[email protected][email protected]
else
continue
end
print @sum
5.waitfor
指定触发器、存储过程或事务执行的时间;还可以用来暂时停止程序执行,指导设定的时间已过才继续执行。
delay参数:设定等待时间,最多可达24小时
waitfor delay'00:00:01'
print '生日快乐!'
time:设定等待结束时间
waitfor time'15:00:00'
print '等待结束!'
6.return
用于从查询语句或过程中无条件退出。
7.goto
用来改变程序执行的流程,是程序跳到指定的程序执行
declare @a int
set @a=1
--标识符需要在名称后加一个冒号:
loving:
print @a
set @[email protected]+1
while @a<=3 goto loving