第3章 SQL Server 数据管理
一、SQL简介
(一)SQL和T-SQL
SQL语言是1974年被提出的,1975-1979年被IBM公司实现,现在已经是关系型数据库的标准语言,T-SQL是标准SQL的加强版
(二)T-SQL的组成
1、DML(数据操作语言):用来对数据进行增、删、改、查的操作,如SELECT,INSERT,UPDATE,DELETE等
2、DCL(数据控制语言):用于控制数据加组件的存取许可、存取权限等命令,如GRANT,REVOKE等
3、DDL(数据定义语言):用来建立数据库、数据库对象和定义其列,如CREATE TABLE,CREATE VIEW,DROP TABLE等
二、T-SQL 中的条件表达式和逻辑运算符
(一)条件表达式:如"price>100","name like '李'","grade<>3"等
1、SQL SERVER中表达式的组成:A.常量 B.列名 C.一元运算符 D.二元运算符
2、比较运算符的种类:=(等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于)、<>(不等于)、!(非)
3、通配符:通常与LIKE搭配使用:
1)种类:‘_’(一个字符)、%(任意长度的字符串)、[ ](括号中所指定范围内的一个字符)、[^](不在括号中所指定范围内的任意一个字符)
2)举例:
A.运用通配符描述手机号码:TelCole like '13[5-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]',手机号码是11位,前2位是13,第三位是5-9的数字,后面都是0-9的数字
B.为某银行卡约束卡号限制条件:只能是8位字符串,前2位是"0",3~4位是数字,第5位是下划线,6~8位是字母,CardID like '00[0-9][0-9][_][a-z][a-z][a-z]' or CardID like '00[0-9][0-9][_][A-Z][A-Z][A-Z]
(二)逻辑表达式:AND(与,二者都有)、OR(或,二者取一)和NOT(非,否定条件)
三、使用T-SQL插入数据
(一)插入一条数据:
1、格式:INSERT [INTO] <表名> [(列名1,列名2,…)] VALUES <值1,值2,…>
其中:
A.如果字段类型为数值型,在VALUES部份的值不用加'',如果是字符格式和日期格式需要加''
B.当对一个表中的全部字段都进行值的添加时,可以省略字段名部份
C.INTO为可选项
D.当字段中含有标识列时,应空过该字段,不能向该字段中插入值
E.当字段有默认值约束时,可对其添加新值,也可采用默认值,采用默认值时,应跳过该字段,或用default表示其默认值
2、示例:INSERT INTO STUDENT (stuNo,stuName,stuAge) values (1,'张三',18)
(二)插入多条数据:
1、通过INSERT SELECT 语句将现有隔开的数据添加到新表,新表要已存在
1)格式:INSERT INTO 新表 (新表列名1,新表列名2,…)
SELECT 源表列名1,源表列名2,…
FROM 源表
2)示例:INSERT INTO TongXunLu (姓名,地址,电子邮件) SELECT SName,SAddress,SEmail
FROM Students
2、通过SELECT INTO 语句将现有表中的数据添加到新表,新表可不存在
1)格式:SELECT 源表列名1,源表列名2,…
INTO 新表
FROM 源表
2)示例:SELECT Students.SName,Students.SAddress,Students.SEmail
INTO TongXunLu
FROM Students
3、通过UNION关键字合并数据进行插入,新表要已存在
1)格式:INSERT INTO 新表 (新表列名1,新表列名2,…)
SELECT 值1,值 2 UNIION
… …
… …
2)示例:INSERT STUDENTS (SName,SGrade,SSex)
SELECT '测试女生1',7,0 UNION
SELECT '测试女生2',7,0
4、标识列的特殊用法:
因为标识列不允许添加数据,所以用以下方法为新表中添加一个标识列
SELECT IDENTITY(数据类型,标识种子,标识增长量) AS 列名
INTO 新表
FROM 原始表
四、使用T-SQL更新数据
(一)格式:UPDATE <表名> SET <列名1 = 更新值1>,<列名2 = 更新值2>,…[WHERE <更新条件>]
其中:WHERE可省略,代表对所有记录进行修改
(二)示例:UPDATE Students set SSex = 0
五、使用T-SQL删除数据
(一)使用DELETE删除数据:无法重置标识列
1、格式:DELETE FROM <表名> [WHERE <删除条件>]
其中:WHERE可省略,表示对全部记录进行删除
2、示例:DELETE FROM Students where SName = '张三'
(二)使用TRUNCATE TABLE 删除数据:可重置标识列
1、格式:TRUNCATE TABLE <表名>
2、示例:TRUNCATE TABLE Students