bsp;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---------嗥舳渌菘 -------嗍挛竦幕毓
2、启动SQL Server的单用户模式 如果要恢复一已被损坏的master数据库,则必须要启动SQL Server的单用户模式。单用户模式下仅允许一个系统管理员向SQL Server注册。
Startserver -f RUN_SYBASE -m
3、关闭服务器
关闭SQL Server可以在isql中使用T-SQL命令:
关闭SQL备服务器 shutdown SYB_BACKUP
关闭SQL主服务器 shutdown [with nowait]
4、Sybase数据库目录说明 /usr/sybase =.. 主目录 .. /install 安装程序 ../bin 执行程序 ../include 库函数文件 ../lib 宿主语言库 ../doc 联机文件 ../scripts SQL 动态描述文件 ../help 帮助信息 ../locales 语言限制文件 ../termdef 终端定义文件 ../charsets 字符集文件
七、SQL Server的用户及权限
Sybase中的用户分为两种:SQL服务器用户(登录帐号)和数据库用户。 安装完SQL服务器后,系统自动建立一个SQL服务器用户sa,口令为空,即系统管理员,他对整个系统有操作权,其他用户均由系统管理员建立。 在SQL Server中有三种特殊的用户:系统管理员、用户数据库所有者(建立相应数据库的数据库用户)DBO、一般用户。系统管理员对整个系统有操作权;用户数据库所有者对他所建立的数据库具有全部操作权利;一般用户对给定的数据库只有被授权的操作权限。 数据库用户一般可分为用户组,任一数据库在建立后即被赋予一个用户组public。
1、建立SQL服务器用户名(登录帐号) 作为一个用户,为了使用SQL Server,他必须在SQL Server上有一个SQL服务器用户名(登录帐号)。这个帐号是系统管理员通过sp_addlogin来增加的。 sp_addlogin 登录名,口令,库名,语言,全名 例:建立用户zhang, 口令为zhangling(最低六位),全名为Zhang ling 1> sp_addlogin zhang,zhangling,null,null,"Zhang ling" 2> go 3> select * from syslogins 4> go
2、增加数据库用户名 同样,为了使用SQL Server上的数据库,他必须在数据库中有一个用户名,这个用户名是数据库所有者通过sp_adduser来增加的。数据库用户名不必和用户帐户一样,而且在不同的数据库中用户名可以不同。多个用户可以有相同的SQL Server帐户。同样,多个SQL Server帐户可以有相同的数据库名。 sp_adduser 登录名,别名,组名 登录名为用户的SQL服务器登录名;别名为用户在数据库中的用户名;组名为用户所属的数据库用户组。
例:用户zhang增加为tele114的用户,别名为zhang1,属于用户组china
1>sp_addgroup china 2>go
1>sp_adduser zhang,zhang1,china 2>go 1> sp_helpuser 2> go
*例:删除别名zhang1,用户组china,登录名zhang 1> use tele114 2> go 3> sp_dropuser zhang1 4> go 5> sp_helpuser 6> go 1>sp_dropgroup china 2>go 1> sp_helpgroup 2> go 3> use master 4> go 5> sp_droplogin zhang 6> go 7> select * from syslogins 8> go
3、数据库操作授权 grant 命令序列 to 用户名 A. 系统管理员可以授予其他用户CREATE DATABASE的权限,使其他用户可以成为数据库所有者。 B. 数据库所有者在他所拥有的数据库中,可以授予其他用户的权限有: l CREATE TABLE ------------------- 建表 lCREATE DEFAULT ------------------ 建缺省 lCREATE RULE ------------------- 建规则 lCREATE PROCedure ------------------ 建存储过程 lCREATE VIEW ------------------- 建视图 lDUMP DATABASE ------------------- 备份数据库 lDUMP TRANsaction ------------------ 备份日志 C. 数据库对象所有者可以授予其他用户的操作权限有: l SELECT l UPDATE l INSERT l EXECute l DELETE l REFERENCE
例:授予zhang1在数据库tele114上建表,建视图,建存储过程;对表students有select,reference权;对name,native字上一页 [1] [2] [3] [4] [5] [6] 下一页 |