Sybase数据库教程(初级)第六
Sybase数据库教程(初级)第六第六讲数据库和T-SQL语言
首先,关系模型的基本概念。
关系数据库是建立在关系模型之上的,它由以下三部分组成:
数据结构mdash;mdash;对象和类型的集合模型
完整性规则mdash;mdash;保证有效和正确的数据约束
数据操作mdash;mdash;操作模式允许模型对象
关系(关系)是一个由行和列组成的二维表。表中的每一行都是一个记录(记录),每个列都是一个字段记录(字段)。表中的每个记录必须是互斥的,并且字段的值必须是原子的。
二、SQL语言概述
SQL(结构化查询语言)是关系数据库语言的国际标准,它是一种非过程语言,通过编写SQL语句,可以实现关系数据库上的所有操作。
数据定义语言(DDL)mdash;mdash;数据库对象的建立与管理
数据操作语言(DML)mdash;mdash;用于查询和更新数据
数据控制语言(DCL)mdash;mdash;控制数据安全
T-SQL语言是Sybase SQL92标准的扩展。它主要是在它的基础上增加了三个功能:它自己的数据类型/独特的SQL函数/过程控制功能。
在T-SQL的标识符使用说明:
(1)标识符由字母或数字组成,但第一个字符必须是字母。表名称的临时表#开头,长度不能超过13个字符。
(2)数据库对象标识的示例
database.owner.tablename.columnname
执行远程存储过程:
执行server.db.owner.proc_name
当执行语句位于批处理头时,可以省略执行程序。
三和Sybase数据类型
当创建一个表或声明一个局部变量,你必须使用Sybase系统预定义类型。
1。字符类型
查尔(N)varchar(n)
2。数字类型
整数型mdash;mdash;Integer SmallInt TinyInt
浮点型mdash;mdash;真正的浮点数的小数{ } { P,P,S }
货币型mdash;mdash;Money SmallMoney
三.日期/时间类型
DateTime smalldatetime
两个时间部分的精度不同,前者精确到点,后者精确1秒30秒。
4。文本和图像类型
文本图像
5。二进制数据类型
二元(n)varbinary(N)
四。数据定义语言
它是用来定义数据库对象,数据库对象,数据库用于存储数据的逻辑实体,主要:
表(表)、视图(视图)、临时表(临时表);
主键(主键)、外部键(外键)、索引(索引)、规则(规则)、默认值(默认值);
存储过程(存储过程)、触发器(触发器)
基本语法
给出了创建主要数据库对象的以下语法:
1。桌子
创建表的基本语法是:
创建数据库表{ }。{ } table_name所有者。
(column_name默认数据类型{ { constant_expression |用户|零} }
{ { {身份|空|无效} } | { {约束constraint_name }
{ {独特的|主键} {聚|聚集}
{ } = { FILLFACTOR | max_rows_per_page x }
segment_name {在}
|参考{ { } } ref_table数据库的所有者。
({ ref_column })
|检查(search_condition)} } } hellip;
在大型数据库中,可以考虑将表和其他数据库对象创建为文本的过程,数据库系统存在问题,在最坏的情况下,可以简化重构过程,也可以更好地监控数据库的构建过程。
创建表的过程完成以下活动:
定义表的每一列;
定义列名和列的数据类型,并指定该列是否处理null值。
指定的列具有标识属性。
定义列级的完整性约束和表级别的完整性约束
上述过程表明,创建表的过程可以设置填充因子,将列放在部分上,设计索引、外键等。
2。指数
索引对查询的性能有很大的影响,应该引起更多的关注。
索引加速了数据检索,自适应服务器有三种索引类型:
一个复合指标mdash;mdash;索引包含多个列的索引;可以建立在两个或多个列的查询作为一个整体,因为它们的逻辑关系;
唯一索引mdash;mdash;索引列的值是不允许重复;
与聚集索引和非聚簇索引mdash;mdash;表中的服务器群集索引数据排序或重新排序被迫不断保证在物理和逻辑顺序表的数据一致性,聚类的范围查询性能影响较大的指标;没有这样的规定,非聚集索引,非聚集索引有利修改操作。
索引是什么时候建立的
如果手动插入标识列,则将创建唯一索引,以确保不插入现有值;
经常排序和访问的列,也就是列子句中列出的列,最好是索引的,这样自适应服务器可以充分利用索引顺序的优点。
如果该列通常是手动连接的,则可以对列进行索引,从而使系统能够更快地执行连接。
包含主键的列通常是聚集的,尤其是当它经常与其他表的列相关联时;
最好是为范围查询列设置聚集索引。一旦找到查询区域中的第一个值,物理上的后续值将类似。
创建索引的基本语法:
{ } {创造独特的集群|聚集指数index_name }
在{ } { } table_name数据库的所有者。
(column_name { },column_name hellip;)
消费者= X segment_name } { { }
上述语法包含这样的暗示:从基表分离的聚集索引;段是逻辑概念,但部分可以位于不同的物理设备,并聚集索引和基表的物理分离。这是不允许的,我们将讨论设备、数据库、表分区段,并在以后详细。
三.钥匙(钥匙)
理解键是理解关联的关键。
键和索引通常是相同的,键的含义是概念上的,而键用于引用完整性约束。
主键是表的单值列的集合,主键通过在放置的表上创建一个单一的值索引来实现其单例。实际上,主键作为标志表的标记存在,一旦确定主键,则确定由键决定的表。
外部键是与其他表中的主键相关的列。主键与外键之间的关系决定外键的范围,即外键对应的值的范围,从而在理论上实现表与表之间的引用完整性。
表的前一个创建的语法包含创建键的组件。
唯一和主键约束约束之间的区别
独特的主键约束是用来确保在指定的列中没有重复的值相同的表,这两个约束的唯一索引保证一致性的数据,默认情况下,独特的约束产生的唯一非聚集索引,主键索引约束只聚集主键约束比唯一约束严格:主键列不允许有空值,而唯一列允许有空值。
4。看法
视图是在多个表中查看数据的方法。视图是从基表派生的。它不是物理存在,而是逻辑表。视图系统还提供了管理表的安全机制。视图使用户能够集中关注感兴趣的数据集。
创建视图的语法:
创建视图{ { } } view_name数据库的所有者。
{(column_name {,} } column_name hellip;)
选择不同的select_statement { }
{带复选选项}
无法识别具有不同关键字的视图。当视图与关联关联时,当它是多表操作时,非常小心地定义视图,而完整性是非常重要的。
五。数据操纵语言
1 SELECT语句
基本语法:
选择不同的字段列表所有| { }
{到表名}
{从表名}
{条件表达式}
{按组{所有}字段列表}
{具有过滤表达式}
{通过字段列表{ } } ASC |降序顺序
{计算聚合函数列表逐字段列表
注意:SELECT语句中的子句必须用于上述顺序。也就是说,如果语句包含一个组子句和一个BY子句,则按组子句必须放在BY子句之前。
有保留子句与WHERE子句相似。有两个区别:(1)有条件子句必须与组子句相结合;(2)WHERE子句不能使用聚合函数,而带子句可以。
下面的示例用于介绍选择的常用用法。
例1:选择所有列,语法SELECT * FROM table_list
例如:从出版商选择*
示例2:选择指定的列,语法是
选择column_name { },column_name hellip;
从table_name
如:选择pub_id,pub_name出版商
示例3:重新命名查询结果中的列,语法是
选择column_heading = column_name
从table_name
如:选择出版商= pub_name,pub_id
从出版商
4个选择列表中的计算值可以在SELECT列表中的数值数据中计算,算术运算符列在下面。
符号运算
加上
还原
除了
带*
%读取模式
如选择title_id,total_sales,total_sales×2从标题
示例5:使用不同的方式消除重复的查询结果
可选关键字消除SELECT语句结果中的重复行。如果未指定不同,默认值为全部,则将检索包含重复行的所有行数据。
如:选择不同的au_id从标题
例6:选择线mdash;mdash;在声明
SELECT语句指定要检索的行的标准,一般格式是:
选择从哪里select_list table_list search_conditions
WHERE子句中的搜索条件(或限制)包括:
比较运算符(=,
如:前进* 2 > total_sales *价格
范围(介于两者之间)
如:在5000和10000之间的total_sales
列表(in和in)
如:国家在(CAINMD)
匹配字符(喜欢和不喜欢)
如:手机在哪里;0535;
未知值(为null且不是null)
如:先行零
以上(或,或)的组合
例如,在推进<5000或total_sales之间的500和1000
示例7:用set函数查询结果
集合函数使用特定列的数据计算节点值。
集函数的结果
的总和(不重复)的总和值({所有|鲜明表达数字列})
平均(不重复)的平均值({ }的所有|鲜明表达)值列
在计算非空值的数目({ }的所有|鲜明表达)柱
按计数(*)选择的行数
马克斯(表达式)表达式的最大值
最小(表达式)表达式的最小值
如:选择AVG(提前),和(total_sales)
从标题
类型= as
从标题中选择计数(*)
从标题中选择AVG(明显的价格)
从书中选择max(价格)
例8:查询结果——集团组织;mdash;GROUP BY子句
SELECT子句在SELECT语句中用于将表划分为组。
例如:选择类型,按类型从标题组前进
例9:选择分组数据mdash;mdash;HAVING子句
设置了组子句子句的条件,与SELECT语句的位置相同,搜索条件与位置相同,但可以包括集合函数,不能包含在哪里。
下面的语句使用了带子句的带子句子句的一个示例,它按类型将标题表中的行分组,但删除包含一本书的组。
从类型中按类型选择具有计数(*)>;1
以下是HAVING子句例没有设置的功能。它分题表中的行的类型,但除去型不带信p开始。
从类型的标题中按类型选择类型,如p;
例10:查询结果排序mdash;mdash;ORDER BY子句
通过条款允许一个或多个列进行排序的查询结果的顺序。每一种可以上升(ASC)或降序(DESC)。如果没有指定,则按升序进行排序。下面的查询返回的结果pub_id:
选择pub_id,类型,title_id由pub_id阶称号
例11:连接mdash;mdash;检索多个表中的数据
连接两个或多个表是比较指定字段中数据的过程,根据比较结果,一个新表由有资格的行组成。
举一个例子:uff1a
选择publishers.pub_id,publishers.pub_name,作者*。
来自出版商、作者
在城市authors.city出版商。
例12:Clause Calculation Clause
计算是Sybase数据库的SQL标准组条款的延伸,它可以看作是一种具有聚集计算组的条款。例如:
选择类型、价格、预付款
从标题
订单类型
按类型计算总和(价格)和(预付)
2插入语句
使用INSERT命令向数据库添加一行有两种方法:使用关键字值或使用SELECT语句。
INSERT语句的基本语法是:
插入{ }表名{(字段列表)}
{值(值列表)| select_statement }
例如:插入出版商
值(‘1622rsquo;';贾丁,inc.rsquo;';' camdenrsquo;;NJrsquo;)
插入出版商(pub_id,pub_name)
值(‘1756rsquo;';健康centerrsquo;)
插入作者选择*从newauthors
插入作者(au_id,地址,au_lname,au_fname)
SELECT * FROM newauthors
3。Delect的声明
检测可以在一行或多行操作。
删除语句的基本语法:
删除的表名
{从表名称列表}
{条件表达式}
例如:删除出版商
在pub_name = 贾丁,Inc.
删除标题
从作者、书名
在title_id = authors.title_id头衔。
4、更新语句
更新命令可用于更改一行、一组行或表中的所有行。
UPDATE语句的基本语法是:
更新表的名字
集column_name1 = {则|空|(select_statement)}
{ column_name2 = { 2 |空|(select_statement)} }。
{ }
{从表名称列表}
{条件表达式}
举一个例子:uff1a
更新作者set_au_lname = healthaufname = Goodbody
在au_lname = Bloth
更新的标题
集total_sales = total_sales +数量
从标题,销售
在title_id = sales.title_id头衔。
六、Sybase预定义函数
1。聚合函数
({ }和所有|鲜明的表达)
AVG({ }的所有|鲜明的表达)
计数({所有|不同}的表达)
计数(*)
马克斯(表达式)
min(表达式)
2。字符串函数
上(字符表达式)
下(字符表达式)
查尔(整数表达式)
char_length(字符表达式)
Ltrim(字符表达式)
Rtrim(字符表达式)
hellip;hellip;
三.数学函数
abs(精确十进制表达式)
最大的整数(底部),小于或等于给定表达式的值。
{ {整数类型}
圆(精确十进制表达式,整数)
符号(精确十进制表达式)
幂(精确十进制表达式,整数幂)
hellip;hellip;
4。日期函数
getdate()
Datepart(日期,日期)
DateDiff(日期,日期1,日期2)
DateAdd(日期部分,数值表达式、日期)
5。类型转换函数
转换(数据类型,表达式{,格式})
6。系统功能
db_name({ } }数据库ID
host_name()
Isnull(表达式1,表达式2)
hellip;hellip;
七。数据控制语言
它被用来控制数据的安全性,例如授予和撤销等。