转:SQL Server初级讲座(二) |
懒虫 发表于 2004/12/3 14:36:50 |
我想了一下,如果只讲理论上的东西,大家觉得没有意思,但是如果只讲实际应用,以后肯定就讲不下去从第二期开始,我前半部分讲讲理论,后半部分讲讲实际应用,呵呵,为打急抓的朋友们应应急.-------------------------------------------------理论部分-------------------------------------------------数据库对象 数据库对象是数据库中的物理对象。这些对象拥有唯一的名字,并保存数据和数据关系信息。SQL Server定义了如下几种对象: 1、 表(table) 表是用来存储数据的两维数组,它有行和列。列也称为表属性或字段,表中的每一列拥有唯一的名字,每一列包含具体的数据类型,这个数据类型由列中的数据类型定义。 2、 视图(view) 视图是虚拟的表,它只包含表的一部分。与表不同的是,保存在视图中的数据并不是物理存储的数据,它是由表派生的,派生表被称为视图的基本表。视图的定义存储在数据库中。换句话说,视图是一个表或者多个表的一个展示方式,且,是无法更改视图中的数据的。3、 约束条件(constraint) 约束条件定义数据的完整性和有效性。约束条件为列中的值建立规则。换而言之,如果在某一列上定义了结束条件,则插入这一列的每一个值需要通过约束条件检查。约束条件是在触发器和规则上保证数据完整性和有效性的较佳选择。SQL Server Query Optimizer利用约束条件产生出低成本的查询计划。约束条件有如下类型: · NOT NULL 这个约束条件要求列中不能有NULL值。 · CHECK 为列指定能拥有的值的集合后,检查约束条件。列中任何在定义之外的数据都为无效数据。有效值集合称为列的域。 · PRIMARY KEY 主关键字是列或列组合,它用来唯一标识一行,也就是说,主关键字是不能重复的,且只能有一个,这个非常有用哟。 · FOREIGN KEY 用来定义两个表之间的父子关系。如果一个关键字既是一个表的主关键字的一部分,同时又是另一个表的主关键字,则称 它为外来关键字,又叫外键。外键用来定义数据的引用完整性。 · UNIQUE 唯一约束条件是指无任何两行在列中有相同的NON-NULL值。唯一性由主关键字保证,但他们不允许NULL值,并且每一个表只能有 一个关键字,与主关键字不同的,一个表中可以有多个UNIQUE。 4、 默认值(default) 默认值是为列定义的值,如果在插入一行时没有提供某一列的值,则此列使用默认值,默认值可以是以下的一种: · 常量 · 数学表达式 · 内部函数(Built-in function) 5、 规则(rule) 规则执行和CHECK约束条件同样的功能。但规则和约束条件不同的是:规则作为独立的对象存在,它可以用于多个表,而约束条件作为表的一部分存储。然而,规则是作为向后兼容特点而提供的,(微软说:)建议用户使用约束条件(个人觉得没有什么区别,呵呵)。 6、 触发器和存储过程 触发器和存储过程是一个TSQL命令集,它们作为一个对象存储在数据库中(这个我们以后再说)。
对象命名约定 SQL Server用三段式(three-part)名字标识对象: <数据库名>.<所有者名>.<对象名> 前两部分可以省略,系统有一个默认值。数据库名的默认值是当前数据库,所有者名的默认值是数据库所有者(dbo)。数据类型 任何包含数据的对象都有一个数据类型和它关联。数据类型是指定对象能包含何种数据的属性。 (当然,这个东西我们下期再讲)
--------------------------------------------------应用操作--------------------------------------------------select语句select语句是用于查询某个表的内容的,具体使用如下:
假设我们有这样一个表:user_info
---------------------------id |name | age |sex---------------------------101 |Tom | 23 |Male102 |Joe | 19 |Male103 |Alex | 26 |FeMale
1.选择表中的所有列如果我想看看表里面有什么数据,那么,执行:
select * from user_info;
(请注意这个分号,在大多数SQL语句中,这个分号代表一个语句的结束,这个非常重要,虽然现在很多工具对这个分号都不太在意)
“*”对Select语句有特殊意义。它指定表中的所有列,而不用列出列的名字。列的顺序和表中的顺序相同。
2.选择表中的指定列通过第一个SQL我知道表中有什么数据了,如果我只想看看表里面的name和age数据,那么,执行:
select name,age from user_info;
---------------name | age ---------------Tom | 23 Joe | 19 Alex | 26
这就是执行结果了.
如果执行select age,name from user_info;结果就变成了---------------age | name ---------------23 | Tom 19 | Joe 26 | Alex
3. 选择不同的值
如果被选择列表中的列有重复值,这时“distinct”关键字可以用来忽略重复值。注意: 如果Select list中多于一列,则distinct关键字对它们总体有效。如果一列有重复值,而其他列的值是唯一的,则有重复值的一列包含在结果中。例如执行:select distinct sex from user_info;结果为:-----|sex -----|Male|FeMale(看懂了么?)
4. 在结果数据集合中对列重命名结果中列的默认名字是源数据库中的列名,用户可以用自己指定的列名来代替默认的列名。select name as 名字,age as 年龄 from user_info;--将列名由“name”改成“名字”,由“age”改成“年龄”结果为---------------名字 | 年龄 ---------------Tom | 23 Joe | 19 Alex | 26
5. 选择计算值在Select list中可以包含计算值或常量。计算值是在算术表达式的基础上计算而来的,它可包含在表中的一列或多列。如果执行:select name,age-10 from user_info;结果为---------------name | age-10---------------Tom | 13 Joe | 9 Alex | 16
甚至,你可以让SQL帮你算算术:select 3+2-5*4 from user_info;呵呵,结果会是什么呢?
好了,今天的课程到此为止,select 的基本用法懂了么?
|
阅读全文(2325) | 回复(3) | 编辑 | 精华 |
|