还剩18页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
中创建数据库的方法SQL-------创建数据库——use master--GO--IF EXISTSSELECT nameFROMmaster.dbo.sysdatabases WHEREname=testl--DROP DATABASEtestl--GO--CREATE DATABASEtestl——创建教师表—use testl-go—if existsselect name from testl.dbo.sysobjects wherename=teacher—drop tableteacher—create tableteacher——tno intnot nullprimary key,—tname nvarchar15-go表为每个系统和每个用户提供的数据类型创SYSTYPES建一条记录,如果它们存在,给定域和默认值,描述系统提供的数据类型的行不可更改该表相关字段的含义如下数据类型的名字SYSTYPES.name物理存储数据类型SYSTYPES.type在的企业管理器SQL SERVERSQL ENTERPRISE中,选定某一数据库,创建存储过程MANAGERprint_dbstructure源代码如下if existsselect*from sysobjects whereid=object_id!dbo.print_dbstructure fandsysstat0xf=4存储过程drop proceduredbo.print_dbstructureGOCREATE PROCEDUREprint_dbstructureASSELECT DISTINCTsysobjects.name,syscolumns.colid,syscolumns.name,systypes.name,syscolumns.prec,syscolumns.scaleFROM syscolumns,sysobjects,systypesWHERE sysobjects.id=syscolumns.id AND(())systypes.type=syscolumns.type ANDsysobjects.type=u GO首先判断是否存在一个名为的存储过print_dbstructure程,如果存在,就摘除它,否则,定义语句建立新的存SQL储过程从三个系统表中选出满足条件的记录(即该数据库中保存在系统表中的用户表信息)执行时,在工具中,选定所在ISQL_W print_dbstructure的数据库,执行该存储过程,即可得到结果集(即该数据库中用户表的结构信息)系统表的应用推广
3.SQL Server以上所介绍存储过程的主要缺陷在于只能对服务器上某一特定的数据库(所在的数据库)进行查询print_dbstructure操作,我们可以通过在系统数据库中SQL ServerMASTER,建立带有数据库名参数的系统存储过程来解决这一问题请,读者自行完成当然系统表的应用远不止于止,SQL Server读者也可依本文所介绍的方法去挖掘其他几个系统表的应用/*创建数据库*/bbsDBif existsselectfrom sysdatabaseswherename=bbsDBdrop databasebbsDBcreate databasebbsDBonname=,bbsDB data1,filename=D:\project\bbsDB_data.mdf size=10,filegrowth=20%log onname=fbbsDB_log\filename=D:\project\bbsDB_log.ldf,size=3,maxsize=20,filegrowth=10%/*创建表*/bbsUsersuse bbsdbif existsselect*from sysobjectsname=bbsUserswheredrop tablebbsUserscreate tablebbsUsers学号,标识列UID intidentity1,1not null,--用户昵称Uname varchar15not null,--用户密码Upassword varcharlOnot null,--由箱地址Uemail varchar20,—B用户性别Usex bitnot null,—等级Uclass int,—备注Uremark varchar20,--注册日期UregDate datetimenot null,----状态Ustate intnull,用户积分Upoint intnull—/*创建表中的约束*/bbsUsersalter tablebbsUsers主键add constraint PK_uid primary keyuid,--forconstraint DF_Upassword default888888初始密码为Upassword,--888888性另!]默认为constraint DF_Usex default1for Usex,--男constraint DF_UregDate defaultgetdate for注册日期默认为系统日期UregDate,--状态默认为constraint DF_Ustate defaultOfor Ustate,--离线积分默认constraint DF_Upoint default20for Upoint,—为点20电constraint CK_Uemail checkUemaillike子邮件必须含有@符号constraint CK_Upassword check〉=密码至少为六位lenUpassword6--/*创建表*/bbsSectionuse bbsdbif existsselect*from sysobjects wherename=bbsSectiondrop tablebbsSectioncreate tablebbsSection,板块标号,自动增长SID intidentity1not null,--版块名称Sname varchar32not null,--版主用户SmasterlD intnot null,—ID版面简介Sprofile varchar20null,---点击率SclickCount intnull,发帖数StopicCount intnull--/*创建表中的约束*/bbsSectionalter tablebbsSection一主键add constraintPK_sid primarykeysid,constraint DF_SclickCount defaultOfor点击率默认为SclickCount,--0constraint DF_StopicCount defaultOfor发帖数默认为StopicCount,--0constraint DF_SmasterID foreign外键keySmasterIDreferences bbsUsers UID--/*创建表*/bbsTopicuse bbsdbifexistsselect*from sysobjectswhere name=,bbsTopic,drop tablebbsTopiccreate tablebbsTopic帖子编号,自动增长TID intidentity1,1not null,--发帖人TsID intnot null,--ID-版主用户TuID intnot null,-ID回复数量TreplyCount intnull,--发帖表情Tface intnull,--标题Ttopic varchar20not null,--正文Tcontents varchar30not null,--发帖时间点Ttime datetimenull,--TclickCount intnull,--击数状态Tstate intnot null,--TlastReply datetimenull—复时间/*创建表的约束*/bbsTopicalter tablebbsTopic add constraint DF_TreplyCountdefaultO for回复数量默认为TreplyCount,--0主键constraintPK_tid primarykeytid,--constraint DF_TclickCount default0for点击数默认为TclickCount,--0状态默认为constraint DF_Tstate default1for Tstate,—1一发constraint DF_Ttime defaultgetdate forTtime,帖时间默认为系统日期constraint CK_Tcontents checklenTcontents=6-constraint CK_TlastReply check正文必须大于六个字符「-最后复时间必须晚于发帖时间TlastReplyTtimeconstraint DF_T sIDforeign keyTsIDreferences外键bbsSection SID,--foreign keyTuIDreferencesconstraint DF_TuID外键bbsUsers UID--/*创建表*/bbsReplyuse bbsdbfromsysobj ectswhereif existsselect*name=bbsReplydrop tablebbsReplycreate tablebbsReply/自动编号,帖子编号RID intidentity not null,--主贴RtID intnot null,--ID板块RsID intnot null,--ID回帖人RuID intnot null,—ID--回帖表情Rface intnull,正文Rcontents varchar30not null,--回帖时间Rtime datetimenull,--点击数RclickCount intnull--/*创建表的约束*/bbsReplyalter tablebbsReply add constraint DF_Rtime defaultgetdatefor回帖时间默认为系统日期Rtime,-正文必须大于六个字符constraintDF_RtID foreign keyRtIDreferences外键bbsTopic TID,--foreign keyRsIDreferencesconstraintDF_RsID外键bbsSection SID,--foreign keyRuIDreferencesconstraintDF RuIDconstraintCK_Rcontents checklenRcontents=6-外键bbsUsersUID—---插入数据到教师表中「小屋—insert intoteachertno.tname valuesl—insert intoteachertno.tname values2/DAVA1;「文局;—insert intoteachertno.tname values3ll:张厚;—insert intoteachertno,tname values4---------创建学生表——use testl—go——ifexistsselectnamefrom testl.dbo.sysobjectswhere name=student——drop tablestudnet——create tablestudent——sno intnot nullprimarykey,——sname nvarchar15not null,——sage datetimenot null,——ssex char2not null--——go……插入数据——INSERT INTOstudentsno,sname,sage,ssex,张三?男VALUES1980-1-23,——INSERT INTOstudentsno,sname,sage,ssex李四男VALUES2,‘,1982-12-12——INSERT INTOstudentsno,sname,sage,ssex:张飒男VALUES3:1981-9-9;——INSERT INTOstudentsno,sname sage,ssex9「莉莉?女VALUES41983-3-237——INSERT INTOstudentsno,sname,sage,ssex,王弼男VALUES,1982-6-217——INSERT INTOstudentsno,sname,sage,ssex王丽女VALUES6,,1984-10-10-.创建课程表--CREATE TABLE[dbo].[course]-[eno][int]NOT NULLPRIMARY KEY,-[cname][nvarchar]20NOT NULL,-[tno][int]NOT NULL—,----创建外键,已经存在两张表我想用语句建立这sql两张表的主外键关系表名约束名——ALTER TABLE1add constraint字段表名字段foreign keyreferences2—alter tablecourse addconstraint course_to_studentforeign keytnoreferences teachertno;-ALTER TABLE[dbo].[course]WITH CHECKADD-CONSTRAINT[FK_course_teacher]FOREIGNKEY[tno]-REFERENCES[dbo].[teacher][tno]--插入数据,企业管理—insert intocoursecno,cname,tno values,3「马克思」insert intocoursecno,cname,tno values2—insert intocoursecno,cname,tno values3/UML\2:数据库—insert intocoursecno,cname,tno values415;物理—insert intocoursecno,cname,tno values
58.创建成绩表-5use testlifexistsselect*fromtestl.dbo.sysobjectswhereid=object_idN[dbo].[sc]and OBJECTPROPERTYid,NlsUserTable1=1drop tablesc——[dbo].[sc]gocreate tablescsno intnot null,eno intnot null,score floatnotnullgo—ifexistsselect*from dbo.sysobjectswhereid=object_idN![dbo].[table_name]!andOBJECTPROPERTYid,NIsUserTable=1—drop table[dbo].[table_name]-GO-CREATE TABLE[dbo].[table_name]....-GO--创建外键—alter table[dbo].[sc]with checkaddconstraint[foreign_keyl]foreign key[cno]references[dbo].[course][eno]—alter table[dbo].[sc]with checkaddconstraint[foreign_key2]foreignkey[sno]references[dbo].[student][sno]ALTER TABLE[dbo].[sc]WITH CHECKADDCONSTRAINT[FK_sc_course]FOREIGN KEY[cno]REFERENCES[dbo].[course][eno]ALTER TABLE[dbo].[sc]WITH CHECKADDCONSTRAINT[FK_sc_student]FOREIGN KEY[sno]REFERENCES[dbo].[student][sno]-删除外键-第一步:找出指定表上的外键约束名字—exec sp_helpconstraint dbo.sc―第二步删除外键约束alter table[dbo].[studnet]drop constraintFK__sc_student-插入数据,INSERT INTOscsno,eno,scoreVALUES1,80INSERT INTOscsno,cno,scoreVALUESl,2,86INSERT INTOscsno,eno,scoreVALUES1,3,83INSERT INTOscsno,cno,scoreVALUES1,4,89INSERT INTOscsno,eno,scoreVALUES2,1,50INSERT INTOscsno,eno,scoreVALUES2,2,36-INSERT INTOscsno,cno,scoreVALUES2,3,43INSERT INTOscsno,cno,scoreVALUES2,4,59INSERT INTOscsno,eno,scoreVALUES3,1,50INSERT INTOscsno,cno,scoreVALUES3,2,96-INSERT INTOscsno,eno,scoreVALUES3,3,73INSERT INTOscsno,cno,scoreVALUES3,4,69有一篇文章,不知道是否对你有帮助的系统表及其应用研究SQL Server的系统表
1.SQL Server的是一个可伸缩的高性能数据库Microsoft SQL Server管理系统,专为分布式客户机/服务器环境而设计,SQL Server几乎将所有的配置信息、安全性信息和对象信息都存储在了它自身的系统表中,而系统表存在于每个独立的数据库中,存储一个特定数据库对象信息的系统表通常称为数据库目录,数据库有其特有的系统表用于保存整个系统和所有MASTER数据库的信息,通常称为服务器目录或系统目录服务器上所有的数据库包括等都MODULE,MASTER,含有个具有相同名称、结构的系统表如表18SYSOBJECTS用于描述数据库中的对象素表、视图、存储过程等,表用于描述数据库的用户,而数据库另外SYSUSER MASTER还有个单独的全局系统表,如表用于保存每13SYSLOGINS个服务器的登录名、口令和配置信息、表SYSDATABASE保存服务器上所有数据库名、所有者、状态及其他信息存储过程是内嵌于数据库中的程序代码,它与表、视图等一样是数据库的一个组成部分,不同于一般的外部程序代码,它是经过预编译处理的代码,因此具有运行速度快、效率高的特点,存储过程也是的一个重要功能,许SQL Server多单纯针对后台数据库的操作一般都交由存储过程来完成以提高系统效率本文将给出一个存储过程来说明系统表的应用SQL Server系统表的应用
2.SQL Server在应用的基于客户机/服务器体系结构的信SQL Server息系统开发中,有时需要将后台上的某一数据库SQL Server的表结构都打印出来,以便干开发人员查阅及最终文档的形成本身提供了一个系统存储过程SQLServer,可以完成对单个表结构的查询,只要在SP_COLUMNS的工具中键入“表名”,SLQ ServerISQL-W SP_COLUMNS并执行即可得到结果集但该方法有许多不足之处,其主要缺点是只能对数据库中单个数据表进行操作,当需要查询一1个数据库中所有的表时,需要多次执行系统存储过程因此显得非常繁琐SP_COLUMNS,查询结果集中包含了许多不必要的信息,缺乏使用的2灵活性下面我们创建一个存储过程来完成对某一个数据库中所有表结构的查询在创建一个数据库的同时,系统会自动建立一些系统表,限于篇幅的缘故我们在这里只介绍与应用实例有关的三个系统表及其相SYSOBJECTS,SYSCOLUMNS,SYSTYPES关的字段表为数据库内创建的每个对象(约SYSOBJECTS束,规则,表,视图,触发器等)创建一条记录该表相关字段的含义如下对象名,如表名,视图名SYSOBJECTS.name对象SYSONJECTS.id id对象类型(存储过程,视图,系SYSOBJECTS.type pv s统表,用户表)u表为每个表、视图中的每个列和每个存SYSCOLUMNS储过程的每个参数创建一条记录该表相关字段的含义如下(此处的列系指数据库中每个表、视图中的歹()J该列所属的表的可与SYSCOLUMNS.id id,相关联SYSOBJECTS.id列表示该列是表或视图的第几SYSCOLUMNS.colid id,列物理存储类型,可与SYSCOLUMNS.type相关联.SYSTYPES.type数据的物理长度SYSCOLUMNS.length列名字,即字段名SYSCOLUMNS.name列的精度级SYSCOLUMNS.Pre列的标度级SYSCOLUMNS.Scale。
个人认证
优秀文档
获得点赞 0