SQL应用开发之3
SQL Server数据管理
如果每次创建数据库,表或者从表中取得数据,都需要手工在企业管理器中进行,不但不方便,而且也不能提供给程序使用,所以数据库也需要一套指令集,能够识别指令,执行对应操作并为程序提供数据。目前标准的指令集就是SQL
SQL语言是1974年由Boyce和Chamberlin提出的,1975年至 1979年IBM公司研制的关系数据库系统原形系统System R实现了这种语言,经过多年发展,SQL语言已经成为关系数据库的标准语言。
T-SQL(Transact-SQL)是标准的SQL语言加强版,除了标准的SQL命令外,还扩充了如变量声明、流程控制、功能函数等。
T-SQL的组成:
DML 数据操作语言,用来查询,插入, 删除,修改数据库中的数据,如Select、Insert,Update 以及Delete等
DCL 数据控制语言,用来控制数据库组建的存取许可,存取全县等命令,如Grant ,Revoke等
DDL 数据定义语言 用来创建数据库,数据库对象和定义列,大部分以 Create开头的命令,如Create Table,Create View 及Drdp Table等
除此之外, T-SQL还包括变量声明,内嵌函数以及其他一些命令等。
条件表达式,逻辑运算符。
常量:表示单个制定数据值的符号。
列名:表中列的名称,表达式中仅允许使用列的名称。
{一元运算符}:仅有一个操作书的运算符。
{二元运算符}:将两个操作数组合执行操作的运算符。
比较运算符:
= 等于
> 大于
< 小于
>= 大于或等于
<= 小于或等于
<> 不等于
! 非
通配符:
‘_’ 一个字符 如:A like ‘c_’
% 任意长度字符串 如:B like ‘CO_%’
[] 括号中所指定范围的一个字符 如:C like ‘abc[1-2]’
[^] 不在括号中制定范围的任意一个字符 如:D like ‘abcd[^1-2]’
逻辑表达式
AND 与 两个条件都为真,返回真
or 或 两个条件只要一个为真,返回真
NOT 返回相反值
优先级:NOT AND or
数据插入:
插入数据行:Insert [INTO] <表名> [列名] VALUES <值列表>
[INTO] 可选,可省略。表名必须,列名可选,省略则依次插入。多个列和值用逗号分隔。
如:Insert INTO Studio (NAME,ADDRESS,EMAIL,SEX)VLAUE(’张三’,’松花江’,’Zhangsan@126.com’,0)
注:不能插入半行或几列数据。数据值树木必须和列相同,不能为标示列指定值,对字符型列,插入数据时用单引号引起来,尽管可以不指定列名,但最好明确指定插入列和值,如果设计表的时候指定某列不允许为空则该列必须插入数据,插入数据项,要求符合检查约束的要求。可以用DEFAULT 关键字代替插入的缺省值列的值。
插入多行数据:
1 通过Insert Select 将现有表数据添加到新表
Insert INTO Tongxue (’姓名’,’地址’,’电子邮件’)
Select name,address,email
FROM Student
上面的语句,用Select查询Student表中已经存在的姓名地址电子邮件插入到新表Tongxue 中
2 通过Select Into 将现有表数据添加到新表
Select stu.name,stu.address,stu.email
INTO Tongxue
FROM stu
将创建新表Tongxue 然后把 Stu 表中的数据添加到Tongxue表中。
创建新标示列:
Select IDENTITY(数据类型,标示种子,标示增长量) AS 列名
INTO 新表
FROM 原始表
3 通过UNION 关键字合并数据并插入
Insert STU(name,address,sex)
Select ‘姓名1’,’地址1 ‘,0 UNION
Select ‘姓名2’,’地址2 ‘,0 UNION
Select ‘姓名3’,’地址3 ‘,0 UNION
Select ‘姓名4’,’地址4 ‘,0 UNION
Select ‘姓名5’,’地址5 ‘,0
更新数据
Update <表名> SET <列名=更新值> [Where <更新条件>]
其中 SET后面紧跟多个数据列更新值,不限一个,Where是可选的,用来限制条件,不限制则更新所有数据行,注意,使用Update 可能更新一行数据,也可能更新多行数据, 也可能不会更新任何数据。
数据删除
1 用Delete删除
Delete FROM <表名> [Where <删除条件>]
删除整条记录,Delete后面不能出现字段字样。
2 使用TRUNCATE TABLE 删除数据
用来删除所有行数据,类似没有Where的Delete语句 ,TRUNCATE TABLE运行速度快,而且使用资源和日志更少,TRUNCATE TABLE删除表中所有行,但是结构、列、约束、索引等不会被改动,不能删除用于有外键约束引用的表,这种情况需要使用Delete语句。
另:Delete语句每次删除一行,并在事务日志中尉删除行记录一项,TRUNCATE TABLE通过释放存储表数据所用的数据页来删除数据,在事务日志中只记录页的释放。
TRUNCATE TABLE删除表中所有行,但表结构及其列、约束、索引等保持不变,新行表示所用的计数值重置为该列种子,如果想保留标示列计数,需要改用Delete语句/对于FOREIGN KEY约束引用的主表不能使用TRUNCATE TABLE ,而应使用不带Where的Delete。