1. 数据库的帮助
l 数据类型
分类 |
备注和说明 |
数据类型 |
说明 |
二进制数据类型 |
用来存储非字符和文本的数据 |
binary |
固定长度的二进制数据 |
Varbinary |
可变长度的二进制数据 | ||
image |
用来存储图像 | ||
文本数据类型 |
字符数据包括任意字母,符号或数字字符的组合 |
char |
固定长度的非Unicode字符数据,最大长度为800个字符 |
varchar |
可变长度的非Unicode数据 | ||
nchar |
固定长度的Unicode数据 | ||
nvarchar |
可变长度的Unicode数据 | ||
text |
存储长文本信息 | ||
ntext |
存储可变长度的长文本 | ||
数字数据 |
该数据仅包括数字,包括正数,负数以及分数 |
Int Smallint Tinyint bigint |
整数 |
Float real |
浮点数 | ||
货币数据 |
货币数据类型用于十进制货币值,并且精确到小数点后面4位数字 |
Money |
|
Bit数据类型 |
表示是、否的数据,只有两种选择;在SQL Server中用1和0表示,一般1表示是,0表示否 |
Bit |
存储布尔数据类型 |
日期和时间 |
日期和时间在单引号内分别输入 |
datetime |
日期和时间 |
2. 数据库的管理
l 通配符
通配符 |
解释 |
实例 |
‘_’ |
一个字符 |
A LIKE ‘C_’ |
% |
任意长度的字符串 |
B LIKE ‘CO_%’ |
[] |
括号内制定范围内的一个字符 |
C LIKE ‘9W0[1-2]’ |
[^] |
不再括号中所制定范围内的一个字符 |
D LIKE ‘9W0[^1-2]’ |
l 使用T-SQL语句对数据库管理
类型 |
语法 |
新建库 |
Use master(注: 此功能用来控制进入master数据库) Go(注: 分割语句) create database 表名 on ( name = '数据库名',(数据库名称) filename = 'D:/表名.mdf',(数据库路径) size = 10mb,(数据库初始化大小) maxsize = 100mb,(数据库最大大小) filegrowth = 10%(数据库增长速度) ) |
新建表 |
create table UserInfo ( Id int identity(1,1) not null, (标识种子为1,增长一次+1) NickName char(10) not null, ) |
添加约束 |
约束包含主键约束, 外键约束, 默认约束, 检查约束, 唯一约束 添加约束以: (alter table 表名 add constraint 约束名) 开头, 后面追加 主键约束: primary key (id); 外键约束: foreign key(从表列) references bool(主表列); 默认约束: unique (列名); 检查约束: check(列名 like ‘1_’);结合通配符使用 唯一约束: unique(列名);
注意: 约束名一定要符合规范 例如添加默认约束: UK_约束名. 以此类推 |
事务 |
begin tran declare @errorSum int set @errorSum=0 set @errorSum=@errorSum+@@error if (@errorSum > 0) rollback tran else commit tran |
l 使用T-SQL语句对数据库数据管理
类型 |
语法 |
说明 | ||
插入数据 |
INSERT [INTO] 表名(列名) VALUES (列名) |
插入单行数据 | ||
INSERT 表名(列名) SELECT 列值 UNION SELECT 列值 |
插入多行数据 | |||
修改数据 |
UPDATE 表名 SET 列名 = 更新值 WHERE 更新条件 |
一般情况下必须写更新条件 | ||
删除数据 |
DELETE FROM 表名 WHERE 删除条件 |
删除单行数据 | ||
TRUNCATE TABLE 表名 |
删除整个表中的数据 | |||
查询数据 |
SELECT 列名 FROM 表名 WHERE 查询条件表达式 ORDER BY 排序的列名 [注: ASC或DESC(降序)] |
排序查询 | ||
SELECT 列名 AS 命名 FROM 表名 |
在查询中使用列名 | |||
SELECT 列名 FROM 表名 WHERE 查询条件表达式 |
查询空行 | |||
SELECT 新命名 = 列名, ‘值命名’ AS 新列命名 FROM 表名 |
在查询中使用常量列 | |||
SELECT TOP 限制的行数(填写数字) 列名 FROM 表名 WHERE查询条件表达式 |
返回限制的行数 | |||
SELECT * FROM 表名 WHERE查询条件表达式 LIKE 'ACCP%' |
使用LIKE模糊查询 | |||
SELECT * FROM 表名 WHERE 表名 BETWEEN 条件一 AND 条件二(注: NOT) |
在某个范围内进行查询 | |||
SELECT * FROM 表名 WHERE 列名 IN (列值1, 列值2)(注:Not) |
使用IN在列举值内进行查询 | |||
SQL SERVER中使用的聚合函数 | ||||
SUM – 总和 Avg – 平均值 MAS(最大值) 和 Min(最小值) COUNT(非空值的计数) |
WHERE * GROUP BY * HAVING (使用WHERE,GROUP BY,HAVING的优先级) |
在查询中使用的聚合函数 | ||
SELECT COUNT(列名),列名 FROM 表名 GROUP BY 列名 |
分组查询(在分组查询的同时必须使用聚合函数) | |||
HAVING 查询条件表达式 (举例: COUNT(Uclass) >1) |
使用Having子句进行分组筛选 | |||
内连接查询 | ||||
SELECT 表名1.列名,表名2.列名 FROM 表名1 INNER JOIN 表名2 ON (条件表达式) |
注: INNER JOIN *** ON 是内连接查询用的关键字,其中表名可以简化,但是前提在 FROM 中必须指示简化的表名是来源于哪个表 (举例:S.列名 FROM 表名 AS 列名或 INNER JOIN 表名) | |||
外连接查询 | ||||
SELECT 表名1.列名,表名2.列名 FROM 表名1 LEFT OUTER JOIN 表名2 ON 条件表达式 |
左外连接, 与内连接不同的是,如果附表中数据不能满足主表则以NULL填充…… | |||
SELECT 表名1.列名,表名2.列名 FROM 表名1 RIGHT OUTER JOIN 表名2 ON 条件表达式 |
左外连接(同上) |
l 在查询中使用的函数
函数类型 |
函数名 |
描述 |
举例 |
字 符 串 函 数 |
CHARINDEX |
用来寻找一个指定的字符串在另一个字符串中的起始位置 |
SELECT CHARINDEX ('ACCP','MYACCPCOURSE',1) 返回: 3 |
LEN |
返回传递给他的字符串长度 |
SELECT LEN ('MYACCPCOURSE') 返回:12 | |
UPPER |
把传递给他的字符串转换为大写 |
SELECT UPPER ('system') 返回: SYSTEM | |
LTRIM |
清除字符左边的空格 |
| |
RTRIM |
清除字符右边的空格 |
| |
RIGHT |
从字符串右边返回指定数目的字符串 |
SELECT RIGHT ('北大青鸟',2) 返回: 青鸟 | |
|
替换一个字符串中的字符 |
| |
STUFF |
在一个字符串中,删除指定长度的字符,并在该位置插入一个新的字符串 |
SELECT STUFF ('谢霆锋的老婆是谁',8,8,'张柏芝' ) 返回: 谢霆锋的老婆是张柏芝 | |
日 期 函 数 |
GETDATE |
取得当前的系统日期 |
SELECT GETDATE() 返回: 今天的日期 |
DATEADD |
将指定的数值添加到指定的日期部分后的日期 |
SELECTDATEADD(dd,4,'01/01/2007') 返回: 2007-01-05 00:00:00.000 | |
DATEDIFF |
两个日期之间的指定日期部分的区别 |
SELECTDATEDIFF(dd,'01/01/2007', '01/04/2007') 返回: 3 | |
DATENAME |
日期中指定日期部分的字符串形式(dd,mm,dw,yy) |
SELECTDATENAME(dw,'01/05/2009') 返回: 星期一 | |
DATEPART |
日期中指定日期部分的整数形式 |
SELECTDATEPART(YY,'01/05/2009') 返回: 2009 |