📄 sybase数据库简介.txt
字号:
(0 rows affected)
total_read total_write total_errors connections
------------------- ------------------- ------------------- ------------------
947(1) 595(113) 0(0) 3(1)
(0 rows affected, return status = 0)
(5)触发器(Triggers)
触发器是一种特殊的存储过程,用来维护不同表中的相关数据的一致性。当在一张表中插入、删除和修改数据时,触发器就会触发另一个存储过程,从而保持数据的一致性。
(6)缺省与规则(Defaults and rules)
缺省是在数据录入时,若用户没有输入数据,SQL Server自动输入的值。
规则是可以理解为对数据库、某一列、某用户数据类型的限制。
三、SQL 查询语言
SQL不仅包括查询数据的有关命令,还包括创建数据库及其对象,增、删、改数据等功能。分别定义为数据查询语言,数据定义语言及数据操作语言。这里先介绍数据查询语言。其基本句法为:
Select select_list from table_list where search_conditions
1、简单查询
A、选择若干列
Select expression [,expression]... From table_list
B、选择若干行
查出电话号码以415到头的记录
Select * from code_1th where tel like '415%'
查询中消除值重复的行
Select distinct tel from code_1th
对Text 和 char 可用 like ,其中可用通配符‘%’及‘-’,分别代表多个字符和单个字符。
其他常用查询条件有:(出text类型除外)
大小比较 =、>、<、>=、<=、!=、!>、!<
范围确定 between exp1 and exp2 /net between exp1 and exp2
列表或集合 in (exp1[,exp2,[...]]) not in (...)
谓词 like
多重条件 and or not
2、连接查询
A、等值连接和不等值连接:通过‘=’来比较两个表之间的数据时,称为等值连接;而通过其他比较符时,称为不等值连接
等值连接:
Select * from publishers, authors where publishers.city=authors.city
不等值连接:
B、自然连接: 在连接的目标列中相同名的列只保留一个
Select publishers.pub_id publishers.pub_name, publishers.state, authors.*
From publishers, authors where publishers.city=authors.city
3、子查询
A、表达式子查询
Select au_lname, au_fname from authors where city=
(select city from publishers where pub_name="abcde")
可以使用一切大小比较操作符;在操作符和子查询之间可以使用All 或any。
B、限定谓词子查询
Select pub_name from publishers from publishers
Where pub_id in
(select pub_id from titles where type='abcde')
C、相关查询
相关查询即嵌套查询依赖于外部父查询的值,嵌套查询要重复执行若干次。
Select distinct t1.type from titles t1
Where t1.type in ( select t2.type from titles t2 where t1.pub_id!=t2.pub_id)
4、集函数、分组与排序
A、对查询结果进行聚集处理
聚集函数: Sum([all|distinct] expression),avg([all|distinct] exoression) ,
Count([all|distinct]expression), count(*), max(expression), min(expression)
Select count(*) from titles
B、用Group by 和 having 子句对查询结果分组
Select type ,avg(advance), sum(total_sales) from titles group by type
Select type from titles group by type having count(*) >1
Having 类似于where , 但where 不能用聚集函数。
C、用Order by 对查询结果进行排序
Select type ,avg(price) from titles group by type order by avg(price)
D、Compute 子句
完成基于每一组中的值的聚集运算,聚集值作为一个新行出现在查询结果中。
Select type ,price advance from titles order by type compute sum(price), sum(advance) by type
四、数据库、数据库对象的增、删、改
1、数据库
x 打开数据库
Use tele114
x 创建数据库。拥有创建数据库权利的用户可以创建自己的数据库。
CREATE DATABASE tele114
ON tele114_def01=10,tele114_run01=200,tele114_idx01=200
LOG ON tele114_log01=80
x 删除数据库
Drop database tele114
x 修改数据库
Alter database tele114 on tele114_run02=100, tele114_idx02=100
2、表
x 建表
create table spec_code
(
No tinyint not null, /*特编号(0--99)*/
Name varchar(50) null, /*名称*/
Addr varchar(50) null, /*地址*/
Tel varchar(8) null, /*电话号码*/
StaffNo varchar(4) not null /*录入员工号*/
)
on segrun /*将表放在segrun段上*/
x 删除表
Drop tabel tele114_1th
x 修改表,在表中增加新的列(用这个命令增加的列必须允许null值)
Alter table friends_etc add country varchar(20 ) null
x 表级或列级约束
Create table my_publishers
(pub_id char(4),
Pub_name carchar(40).
Constraint my_chk_constraint
Check (pub_id in ('1389','0736','0877'))
Or (pub_name not like 'bad news books'))
x 指定默认值
Create table ny_titles
(title_id char(6t),
Title varchar(80),
Price money default null,
Total_sales int default (0))
x 指定Unique 和primary key 约束
Primary key 不允许空值,常用来产生唯一的聚集索引,unique 允许空值,常用来产生唯一的非聚集索引
Create table my_sales
(stor_id char(4),
Ord_num varchar(20),
Date datetime,
Unique clustered(stor_id,ord_num))
3、索引
x 建立索引
create unique clustered index code1thidx1 on code_1th(Code1,Name,UnitNo1,Used)
on segrun
Unique: 建立唯一性索引
Clustered : 建立聚集索引,使得数据行的逻辑顺序与物理顺序一致,查询速度较快;每个表仅允许建立一个唯一性索引。(非聚集索引nonclustered)
On segrun:将索引放在segrun上
x 删除索引: drop index code_1th.code1thidx1
4、 默认:当用户没有显示地为某一列赋值时,SQL SERVER 为该列插入的值
x 创建默认值CA,把默认值CA用到friends_etc表中的State列上
Creat default statedflt
Go
Sp_bindefault statedflt, "frends_etc.state"
go
x 断离默认
Sp_unbindefault "frends_etc.state"
x 删除默认
Drop default statedflt
5、规则:可以理解为对数据库、某一列、某用户数据类型的限制.规则中的任何变量名必须
冠以@,不能直接引用列或其他数据库对象。
x 创建规则并把他关联到用户定义的数据类型P#上
Create rule phonerule as @phone like 415[0-9][0-9][0-9][0-9]
Sp_bindrule phonerule ,"p#"
x 断离规则
Sp_unbindrule "p#"
x 删除规则
Drop rule phonerule
6视图:视图是从一个或多个基本表或其他视图上导出的表,可以在视图上进行增、删、改
x 创建视图
创建视图的句法为:
create view view_name
(column_1,...,column_n)
as select_statements
例:在authors表和publishers表上定义一个视图如下:
Create view cities (authorname, acity, publishername, pcity)
As select au_lname,authors.city, pub_name, publishers.city
From authors, publishers
x 通过使用Drop view 命令来撤消一个视图
Drop view view_name
7、存储过程
x 创建存储过程
CREATE PROCEDURE procedure_name [(para1[,para2, ...])]
As sql_statements
存储工程的参数名必须一@开头,包括@最长为30个字符。
x 执行存储过程
EXEC[UTE] procedure_name [(para1[,para2, ...])]
存储过程能够返回一个整数,用来指示存储过程执行是完全错误还是错误。SQL SERVER 用0指示成功的返回,-1~-99指示不同的错误。当前所用的0及-1~-14的含义如表所示。
值 含义
0 过程执行无错
-1 丢失对象
-2 数据类型错误
-3 进程被选作死锁的牺牲品
-4 权限错误
-5 语法错误
-6 各种用户错误
-7 资源错误:如空间错误
-8 非严重的内部错误
-9 触及系统限制
-10 严重的内部不一致
-11 严重的内部不一致
-12 表或索引坏了
-13 数据库坏了
-14 硬件错误
x 更改存储过程名
Sp_rename objname newname
x 删除存储过程
DROP PROCEDURE procedure_name
8 、触发器
x 创建触发器
CREATE TRIGGER [owner.]trigger_name
ON [owner.]table_name
{FOR INSERT,UPDATE,DELETE}
AS
SQL_statements
或使用IF UPDATE 子句:
CREATE TRIGGER [owner.]trigger_name
ON [owner.]table_name
{FOR INSERT,UPDATE}
AS
[IF UPDATE (column_name)
[{AND|OR} UPDATE (column_name)]...}
SQL_statments
[IF UPDATE(column_name)
[{AND|OR} UPDATE column_name)]...
SQL_statements]...
x 触发器的删除
DROP TRIGGER [owner.]trigger_name
五、批处理和流控制语言
1、批处理
SYBASE系统允许用户将若干条相关的语句组成一个整体,交给系统同时处理。 一批语
句的结束以go语句为标志。严格地讲,单条SQL语句也是一个批处理。
例:Select count(*) from titles
Select count(*) from authors
Go
也可以将一组SQL命令放在一个操作系统文件中,再将这个文件交给isql执行。
2、流控制语言
流控制语句
在批处理中,我们可以加入流程控制语句,从而达到编程的目的。在T-SQL语言中,
流控制语句有:
· if。。。Else。。。
· begin。。。End。。。
· while和break。。。Continue
· declare和局部变量以及全局变量
· Goto
· Return
· Waitfor
· print和Raiserror
· 注释
例:
if exists(select * from zyl
where xm="李军")
print "ok"
else
print "no this one"
使用批处理有以下规则:
x CREATE PROCEDURE、CREATE RULE、 CREATE DEFAULT 、CREATE TRIGGER 以及CREATE VIEWE 必须单独交给SQL SERVER, 他们不能和别的SQL语句一起作批处理(CREATE DATABASE、CREATE TABLE 和CREATE INDEX 能和其他语句组成批处理)。
x 规则和默认值都不能在一组批处理中刚关联就使用。
x USE命令必须在引用这个数据库的对象的语句的前一组批处理中提交。
x 不能刚删除(DROP)一个数据库对象又在同一批处理中重新创建他。
x 用SET语句做的任何选择设置在批处理尾处发生作用。可以把SET语句和查询语句放入一组批处理中,但SET选择项不能在这组批处理中使用。
六、系统的启动和关闭
1、启动SQL Server
应用SQL Server安装程序(sybinit)创建SQL Server或Backup Server, 默认文件名为RUN_SYBASE 和RUN_SYB_BACKUP,放在¥SYBASE/INSTALL目录下。
Startserver 用来启动一SQL Server 或Backup Server:
Startserver -f RUN_SYBASE
Startserver -f RUN_SYB_BAKUP
可以通过showserver查看SQL ServerBackup Server是否已经启动,在$SYASE/INSTALL下运行showserver 查看SQL Server 是否启动
UID PID PPID C STIME TTY TIME CMD
(Backup Server已启动的信息)
sybase 831 830 0 17:23:50 ttyp1 00:00:00 /sybase/bin/backupserver 朣 SYB_BACKUP -I/sybase/interfaces -M/sybase/bin/sybmul
(SQL Server已启动的信息)
sybase 674 1 0 14:29:11 ttyp0 00:00:45 /sybase/bin/dataserver -d/sybase/master.dat 朣YBASE -e/sybase/install/errorlog
SQL Server的启动过程
master数据库启动-----------鄐ybsystemproces数据库启动-----------嗲蹇誸empdb---------嗥舳
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -