您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息

第三章 SQL Server 数据管理

2024/5/19 4:35:16发布11次查看
从本章开始,就接触到了sql语句的使用,首先介绍使用sql语句进行数据插入、修改和删除操作。 3.1 sql简介 在进行数据管理时,如果每次创建数据库、表或者从数据库中读取数据,都需要手动在sql server management studio中进行的话,不但管理不方便,而且存储
从本章开始,就接触到了sql语句的使用,首先介绍使用sql语句进行数据插入、修改和删除操作。
3.1 sql简介
在进行数据管理时,如果每次创建数据库、表或者从数据库中读取数据,都需要手动在sql server management studio中进行的话,不但管理不方便,而且存储在数据库中的数据也根本无法提供给程序使用。所以,数据库也需要一套指令集,能够识别指令、执行相应的操作并为程序提供数据。
目前标准的指令集就是sql。
3.1.1 sql和t-sql
sql语言是1974年由boyce和chamberlin提出来的,1975-1979年ibm公司研制的关系数据库管理系统原形系统systemr实现了这种语言,经过多年的发展,sql语言已成为关系数据库的标准语言。
sql语言不同于java、c#这样的程序设计语言,它只是数据库能够识别的指令;但是在程序中,可以组织sql语句发送给数据库,数据库再执行相应的操作,例如:在c#程序中要得到sql server数据库表中的记录,可以在c#程序中编写sql查询语句,然后发送到数据库,网站空间,数据库根据查询的sql语句进行查询,再把查询的结果返回给c#程序。
t-sql(transact-sql)是标准sql的加强版,除了标准的sql命令之外,还对sql命令做了许多扩充,提供类似于java语言的基本功能,如变量说明、流程控制、功能函数等。
3.1.2 t-sql的组成
t-sql语言主要由以下几个部分组成。
dml(数据操作语言):用来查询、插入、删除和修改数据库中的数据,如 select、insert、update及delete等。
dcl(数据控制语言):用来控制数据库组件的存取许可、存取权限等,如grant、revoke等。
ddl(数据定义语言):用来建立数据库、数据库对象和定义其列,大部分是以create开头的命令,如create table、create view及drop table等。
除此之外,t-sql还包括变量说明、内嵌函数以及其他的命令等。
3.2 t-sql中的条件表达式和逻辑运算符
与java语言一样,表达式是符号和运算符的组合,并且可以对它求值得到单个数据值。简单表达式可以是一个常数、变量、列或标量函数,可以用运算符把两个或多个简单表达式连接成一个复杂表达式。
3.2.1 条件表达式
sql server中的表达式可以包含下列一个或多个参数。
常量:表示单个指定数据值的符号。一个常量由一个或多个字母、数字字符(字母a~z、a~z、数字0~9)或符号(!、@、#等)组成。字母和datetime需要用引号括起来,而二进制字符串和数字常量则不需要。
列名:表中列的名称,表达式中仅允许使用列的名称。
{一元运算符}:仅有一个操作数的运算符,其中“+”表示正数,“-”表示负数,“~”表示补数运算符。
{二元运算符}:将两个操作数组合执行操作的运算符。二元运算符可以是算术运算符、赋值运算符(=)、位运算符、比较运算符、逻辑运算符、字符串串联(或连接)运算符(+)或一元运算符。比较运算符及其含义如图。
运算符含义
=等于
>大于
>=大于或等于
不等于
!非
可以用这些运算符组成条件表达式。例如:我们可以编写以下代码:
price > 100
name like '李%'
grade '3'
某些t-sql语句中还可以使用图中的通配符运算符。
通配符解释示例
'_'一个字符a like 'c_'
%任意长度的字符串b like 'co_%'
[]括号中所指定范围内的一个字符c like '9w0[1-2]'
[^]不再括号中所指定范围内的任意一个字符d like like '9w0[^1-2]'
通配符经常与like关键字一起配合使用,例如可以使用like和通配符来完成对表的一些特殊约束,例如,要求表中的电话号码列输入的格式为11位手机号、可以编写以下的约束:
telcode like '13[5-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
在查询中也经常会用到like语句。
3.2.2 逻辑表达式
t-sql支持的逻辑运算符有and、or和not。
and和or运算符连接条件,not否定条件。and连接条件,并且仅当两个条件都为真时才返回true。or也连接两个条件,但只要其中任意一个为真就返回true。
当一个语句中使用了多个逻辑运算符时,首先求not的值,然后求and的值,最后再求or的值。
例如采购订单表中的付款方式是信用卡,约束要求只能是牡丹卡、金穗卡、龙卡或者阳光卡,可以编写如下的约束表达式:
not (付款方式 = '信用卡') or (信用卡 in ('牡丹卡','金穗卡','龙卡','阳光卡'))
in关键字用来限制范围。在查询中也经常会用到逻辑表达式。
3.3 使用t-sql插入数据
已经了解了如何创建表,修改表的结构和添加约束,现在需要了解一下如何向表中添加数据。
在sql server management中插入数据比较简单,只要选择表,然后在快捷菜单中选择“打开表”选项,就可以向表中直接输入数据行。
使用t-sql可以想表中添加新数据,也可以将现有表中的数据添加到新创建的表中。
3.3.1 使用insert插入数据行
使用insert语句一行一行地插入数据是最常用的方法,其语法格式如下:
insert [into] [列名] values
其中:
[into] 是可选的,可以省略。
表名是必需的,表的列名是可选的,如果省略,将依次插入。
多个列名和多个值列表用逗号分隔。
例如以下的语句,向学员表中插入一行数据
insert into students (name, address, grade, email, sex) values ('张三', '上海', 6, '123@163.com', 0)
sql语句的执行一般在查询窗口中进行。
检验sql语句是否正确执行,可以再打开表查看数据项是否正确添加。
在插入数据的时候,需要注意以下事项。
每次插入一整行数据,不可能只插入半行或者几列数据,如果违反字段的非空约束,那么插入语句会检验失败。
数据值的数目必须与列数相同,每个数据值的数据类型、精度和小数位数也必须与相应的列匹配。
insert语句不能为标识列指定值,因为它的数字是自动增长的。
对于字符类型的列,当插入数据的时候,最好用单引号将其引起来,因为字符中包含了数字的时候特别容易出错。
尽管可以不指定列名,但是最好明确指定插入的列和对应的值,以做到“心中有数”。
如果在设计表的时候指定某列不允许为空,则该列必须插入数据,香港虚拟主机,否则将报告错误信息。
插入的数据项,要求符合检查约束的要求,例如我们在前面设置了email字段必须包含一个字符@,如果插入的语句修改为:
insert into students (name, address, grade, email, sex) values ('张三', '上海', 6, '123', 0)
执行该语句后,将提示与表的约束相冲突,插入失败。
还有一个问题就是如果指定了列名,如何为具有默认值的列插入数据? 例如以上学员信息表中的地址信息是具有默认值的。这个时候可以使用default(默认)关键字来代替插入的数值,插入语句如下:
insert into students (name, address, grade, email, sex) values ('张三', default, 6, '123', 0)
3.3.2 一次插入多行数据
一次插入多行数据有三种方法,下面分别讲解。
1. 通过insert selete语句将现有表中的数据添加到新表中。
例如,如果创建一张新表来存储本班的通讯录信息,则可以从学员表中提取相关的数据,sql语句如下:
insert into tongxunlu (姓名,地址,电子邮件) select name, address, email from students
select语句用于查询,上面的sql用来把学员信息表中已经存在的姓名、地址和e-mail信息插入到新的tongxunlu表,避免了录入大量重复的数据项。
需要注意以下两点。
(1)查询得到的数据个数、顺序、数据类型等,必须与插入的项保持一致。
(2)tongxunlu表必须预先创建好,并且具有姓名、地址和电子邮件三个字段。
2. 通过select into语句将现有表中的数据添加到新表中。
与上面的insert into 类似,select into语句也是从一个表中选择一些数据插入到新表中,香港空间,所不同的是,这个新表是执行查询语句的时候创建的,不能够预先存在。
例如,以下的t-sql语句:
select students.name, students.address, student.email into tongxunlu from students
将创建新表tongxunlu,把students表中的name、address、email作为tongxunlu表的新列,并且把查询到的数据全部插入到新表中。
在向一个新表插入数据的时候,又会牵涉到一个新的问题:如何插入标识列?
因为标识列的数据是不允许指定的,因此我们可以创建一个新的标识列,语法如下。
select identity (数据类型,标识种子,标识增长量) as 列名 into 新表 from 原始表
上面的语句可以修改为:
select students.name, students.address, students.email, identity(int, 1, 1) as studentid into tongxunlu from students
3. 通过union 关键字合并数据进行插入
union 语句用于将两个不同的数据或查询结果组合成一个新的结果集。
当然,不同的数据或查询结果,也要求数据个数、顺序、数据类型都一致,因此,当向表中重复插入多次数据的时候,可以使用select···union来简化操作。
例如,以下的t-sql语句。
insert students (name, grade, sex) select '张三', 7, 1 union select '李四', 3, 2 union select '王五', 5, 5 union select '刘六', 6, 6
这样的效果其实与上面insert···select的效果是一样的,只不过多行数据是手写的,然后用union合并组合成多行,最后把这些多行数据一起插入。
3.4 使用t-sql更新数据
数据更新是经常发生的事情,使用t-sql可以进行数据更新。
使用t-sql更新表中某行的语法如下:
update set [where ]
其中:
set 后面可以紧随多个数据列的更新值,不限一个。
where 子句是可选的,用来限制条件。如果不限制,则整个表的所有数据行将被更新。
需要注意的是,使用update语句,可能更新一行数据,也可能更新多行数据,也可能不会更新任何数据。
例如,在学员信息表中,要把所有学员的性别都改为0(女性)。
update students set sex = 0
学员的地址如果不输入默认值都为“北京女子职业技术学校”,如果这个班级改为学院,则需要按照条件进行更新。
update students set address = '北京女子职业技术学院' where address = '北京女子职业技术学校'
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录