SQL中创建数据库的方法_第1页
SQL中创建数据库的方法_第2页
SQL中创建数据库的方法_第3页
SQL中创建数据库的方法_第4页
SQL中创建数据库的方法_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SQL中创建数据库的方法--------创建数据库----usemaster----GO----IFEXISTS(SELECTnameFROMmaster.dbo.sysdatabasesWHEREname='test1')----DROPDATABASEtest1----GO----CREATEDATABASEtest1------创建教师表--usetest1--go--ifexists(selectnamefromtest1.dbo.sysobjectswherename='teacher')--droptableteacher--createtableteacher--(--tnointnotnullprimarykey,--tnamenvarchar(15)--)--go----插入数据到教师表中--insertintoteacher(tno,tname)values(1,'小屋');--insertintoteacher(tno,tname)values(2,'DAVA');--insertintoteacher(tno,tname)values(3,'刘局');--insertintoteacher(tno,tname)values(4,'张厚');--------创建学生表----usetest1----go----ifexists(selectnamefromtest1.dbo.sysobjectswherename='student')----droptablestudnet----createtablestudent----(----snointnotnullprimarykey,----snamenvarchar(15)notnull,----sagedatetimenotnull,----ssexchar(2)notnull------)------go------插入数据----INSERTINTOstudent(sno,sname,sage,ssex)VALUES(1,'张三','1980-1-23','男')----INSERTINTOstudent(sno,sname,sage,ssex)VALUES(2,'李四','1982-12-12','男')----INSERTINTOstudent(sno,sname,sage,ssex)VALUES(3,'张飒','1981-9-9','男')----INSERTINTOstudent(sno,sname,sage,ssex)VALUES(4,'莉莉','1983-3-23','女')----INSERTINTOstudent(sno,sname,sage,ssex)VALUES(5,'王弼','1982-6-21','男')----INSERTINTOstudent(sno,sname,sage,ssex)VALUES(6,'王丽','1984-10-10','女')----.创建课程表--CREATETABLE[dbo].[course](--[cno][int]NOTNULLPRIMARYKEY,--[cname][nvarchar](20)NOTNULL,--[tno][int]NOTNULL--)----创建外键,已经存在两张表,我想用sql语句建立这两张表的主外键关系----ALTERTABLE表名1addconstraint约束名foreignkey(字段)references表名2(字段)--altertablecourseaddconstraintcourse_to_studentforeignkey(tno)referencesteacher(tno);--ALTERTABLE[dbo].[course]WITHCHECKADD--CONSTRAINT[FK_course_teacher]FOREIGNKEY([tno])--REFERENCES[dbo].[teacher]([tno])----插入数据--insertintocourse(cno,cname,tno)values(1,'企业管理',3)--insertintocourse(cno,cname,tno)values(2,'马克思',1)--insertintocourse(cno,cname,tno)values(3,'UML',2)--insertintocourse(cno,cname,tno)values(4,'数据库',5)--insertintocourse(cno,cname,tno)values(5,'物理',8)--5.创建成绩表usetest1ifexists(select*fromtest1.dbo.sysobjectswhereid=object_id(N'[dbo].[sc]')andOBJECTPROPERTY(id,N'IsUserTable')=1)droptablesc----[dbo].[sc]gocreatetablesc(snointnotnull,cnointnotnull,scorefloatnotnull)go--ifexists(select*fromdbo.sysobjectswhereid=object_id(N'[dbo].[table_name]')andOBJECTPROPERTY(id,N'IsUserTable')=1)--droptable[dbo].[table_name]--GO--CREATETABLE[dbo].[table_name](....)--GO--创建外键--altertable[dbo].[sc]withcheckaddconstraint[foreign_key1]foreignkey([cno])references[dbo].[course]([cno])--altertable[dbo].[sc]withcheckaddconstraint[foreign_key2]foreignkey([sno])references[dbo].[student]([sno])ALTERTABLE[dbo].[sc]WITHCHECKADDCONSTRAINT[FK_sc_course]FOREIGNKEY([cno])REFERENCES[dbo].[course]([cno])ALTERTABLE[dbo].[sc]WITHCHECKADDCONSTRAINT[FK_sc_student]FOREIGNKEY([sno])REFERENCES[dbo].[student]([sno])--删除外键--第一步:找出指定表上的外键约束名字--execsp_helpconstraint'dbo.sc'--第二步:删除外键约束altertable[dbo].[studnet]dropconstraintFK_sc_student--插入数据INSERTINTOsc(sno,cno,score)VALUES(1,1,80)INSERTINTOsc(sno,cno,score)VALUES(1,2,86)INSERTINTOsc(sno,cno,score)VALUES(1,3,83)INSERTINTOsc(sno,cno,score)VALUES(1,4,89)INSERTINTOsc(sno,cno,score)VALUES(2,1,50)INSERTINTOsc(sno,cno,score)VALUES(2,2,36)--INSERTINTOsc(sno,cno,score)VALUES(2,3,43)INSERTINTOsc(sno,cno,score)VALUES(2,4,59)INSERTINTOsc(sno,cno,score)VALUES(3,1,50)INSERTINTOsc(sno,cno,score)VALUES(3,2,96)--INSERTINTOsc(sno,cno,score)VALUES(3,3,73)INSERTINTOsc(sno,cno,score)VALUES(3,4,69)有一篇文章,不知道是否对你有帮助:SQLServer的系统表及其应用研究1.SQLServer的系统表Microsoft的SQLServer是一个可伸缩的高性能数据库管理系统,专为分布式客户机/服务器环境而设计,SQLServer几乎将所有的配置信息、安全性信息和对象信息都存储在了它自身的系统表中,而系统表存在于每个独立的数据库中,存储一个特定数据库对象信息的系统表通常称为数据库目录,MASTER数据库有其特有的系统表用于保存整个系统和所有数据库的信息,通常称为服务器目录或系统目录。服务器上所有的数据库包括MODULE,MASTER等都含有18个具有相同名称、结构的系统表,如表SYSOBJECTS用于描述数据库中的对象棗表、视图、存储过程等,表SYSUSER用于描述数据库的用户,而MASTER数据库另外还有13个单独的全局系统表,如表SYSLOGINS用于保存每个服务器的登录名、口令和配置信息、表SYSDATABASE保存服务器上所有数据库名、所有者、状态及其他信息。存储过程是内嵌于数据库中的程序代码,它与表、视图等一样是数据库的一个组成部分,不同于一般的外部程序代码,它是经过预编译处理的代码,因此具有运行速度快、效率高的特点,存储过程也是SQLServer的一个重要功能,许多单纯针对后台数据库的操作一般都交由存储过程来完成以提高系统效率。本文将给出一个存储过程来说明SQLServer系统表的应用。2.SQLServer系统表的应用在应用SQLServer的基于客户机/服务器体系结构的信息系统开发中,有时需要将后台SQLServer上的某一数据库的表结构都打印出来,以便于开发人员查阅及最终文档的形成。SQLServer本身提供了一个系统存储过程(SP_COLUMNS),可以完成对单个表结构的查询,只要在SLQServer的ISQL-W工具中键入SP_COLUMNS“表名”,并执行即可得到结果集。但该方法有许多不足之处,其主要缺点是:1)只能对数据库中单个数据表进行操作,当需要查询一个数据库中所有的表时,需要多次执行系统存储过程SP_COLUMNS,因此显得非常繁琐。2)查询结果集中包含了许多不必要的信息,缺乏使用的灵活性。下面我们创建一个存储过程来完成对某一个数据库中所有表结构的查询。在创建一个数据库的同时,系统会自动建立一些系统表,限于篇幅的缘故我们在这里只介绍与应用实例有关的三个系统表(SYSOBJECTS,SYSCOLUMNS,SYSTYPES)及其相关的字段。表SYSOBJECTS为数据库内创建的每个对象(约束,规则,表,视图,触发器等)创建一条记录。该表相关字段的含义如下:SYSOBJECTS.name对象名,如:表名,视图名。SYSONJECTS.id对象id。SYSOBJECTS.type对象类型(p存储过程,v视图,s系统表,u用户表)。表SYSCOLUMNS为每个表、视图中的每个列和每个存储过程的每个参数创建一条记录。该表相关字段的含义如下:(此处的列系指数据库中每个表、视图中的列)SYSCOLUMNS.id该列所属的表的id,可与SYSOBJECTS.id相关联SYSCOLUMNS.colid列id,表示该列是表或视图的第几列SYSCOLUMNS.type物理存储类型,可与SYSTYPES.type相关联.SYSCOLUMNS.length数据的物理长度。SYSCOLUMNS.name列名字,即字段名。SYSCOLUMNS.Pre列的精度级。SYSCOLUMNS.Scale列的标度级。表SYSTYPES为每个系统和每个用户提供的数据类型创建一条记录,如果它们存在,给定域和默认值,描述系统提供的数据类型的行不可更改。该表相关字段的含义如下:SYSTYPES.name数据类型的名字。SYSTYPES.type物理存储数据类型。在SQLSERVER的企业管理器(SQLENTERPRISEMANAGER)中,选定某一数据库,创建存储过程print_dbstructure。源代码如下:ifexists(select*fromsysobjectswhereid=object_id('dbo.print_dbstructure')andsysstat&0xf=4)存储过程dropproceduredbo.print_dbstructureGOCREATEPROCEDUREprint_dbstructureASSELECTDISTINCT,syscolumns.colid,,,syscolumns.prec,syscolumns.scaleFROMsyscolumns,sysobjects,systypesWHEREsysobjects.id=syscolumns.idANDsystypes.type=syscolumns.typeAND((sysobjects.type='u'))GO首先判断是否存在一个名为print_dbstructure的存储过程,如果存在,就摘除它,否则,定义SQL语句建立新的存储过程。从三个系统表中选出满足条件的记录(即该数据库中保存在系统表中的用户表信息)。执行时,在ISQL_W工具中,选定print_dbstructure所在的数据库,执行该存储过程,即可得到结果集(即该数据库中用户表的结构信息)。3.SQLServer系统表的应用推广以上所介绍存储过程的主要缺陷在于只能对服务器上某一特定的数据库(print_dbstructure所在的数据库)进行查询操作,我们可以通过在SQLServer系统数据库MASTER中建立带有数据库名参数的系统存储过程来解决这一问题,请读者自行完成。当然,SQLServer系统表的应用远不止于止,读者也可依本文所介绍的方法去挖掘其他几个系统表的应用。/*创建bbsDB数据库*/usemasterifexists(select*fromsysdatabaseswherename='bbsDB')dropdatabasebbsDBcreatedatabasebbsDBon(name='bbsDB_data',filename='D:\project\bbsDB_data.mdf',size=10,filegrowth=20%)logon(name='bbsDB_log',filename='D:\project\bbsDB_log.ldf',size=3,maxsize=20,filegrowth=10%)/*创建bbsUsers表*/usebbsdbifexists(select*fromsysobjectswherename='bbsUsers')droptablebbsUserscreatetablebbsUsers(UIDintidentity(1,1)notnull,--学号,标识列Unamevarchar(15)notnull,--用户昵称Upasswordvarchar(10)notnull,--用户密码Uemailvarchar(20),--邮箱地址Usexbitnotnull,--用户性别Uclassint,--等级Uremarkvarchar(20),--备注UregDatedatetimenotnull,--注册日期Ustateintnull,--状态Upointintnull--用户积分)/*创建bbsUsers表中的约束*/altertablebbsUsersaddconstraintPK_uidprimarykey(uid),--主键constraintDF_Upassworddefault(888888)forUpassword,--初始密码为888888constraintDF_Usexdefault(1)forUsex,--性别默认为男constraintDF_UregDatedefault(getdate())forUregDate,--注册日期默认为系统日期constraintDF_Ustatedefault(0)forUstate,--状态默认为离线constraintDF_Upointdefault(20)forUpoint,--积分默认为20点constraintCK_Uemailcheck(Uemaillike'%@%'),--电子邮件必须含有@符号constraintCK_Upasswordcheck(len(Upassword)>=6)--密码至少为六位/*创建bbsSection表*/usebbsdbifexists(select*fromsysobjectswherename='bbsSection')droptablebbsSectioncreatetablebbsSection(SIDintidentity(1,1)notnull,--板块标号,自动增长Snamevarchar(32)notnull,--版块名称SmasterIDintnotnull,--版主用户IDSprofilevarchar(20)null,--版面简介SclickCountintnull,--点击率StopicCountintnull--发帖数)/*创建bbsSection表中的约束*/altertablebbsSectionaddconstraintPK_sidprimarykey(sid),--主键constraintDF_SclickCountdefault(0)forSclickCount,--点击率默认为0constraintDF_StopicCountdefault(0)forStopicCount,--发帖数默认为0constraintDF_SmasterIDforeignkey(SmasterID)referencesbbsUsers(UID)--外键/*创建bbsTopic表*/usebbsdbifexists(select*fromsysobjectswherename='bbsTopic')droptablebbsTopiccreatetablebbsTopic(TIDintidentity(1,1)notnull,--帖子编号,自动增长TsIDintnotnull,--发帖人IDTuIDintnotnull,--版主用户IDTreplyCountintnull,--回复数量Tfaceintnull,--发帖表情Ttopicvarchar(20)notnull,--标题Tcontentsvarchar(30)notnull,--正文Ttimedatetimenull,--发帖时间TclickCountintnull,--点击数Tstateintnotnull,--状态TlastReplydatetimenull--回复时间)/*创建bbsTopic表的约束*/altertablebbsTopicaddconstraintDF_TreplyCountdefault(0)forTreplyCount,--回复数量默认为0constraintPK_tidprimarykey(tid),--主键constraintDF_TclickCountdefault(0)forTclickCount,--点击数默认为0constraintDF_Tstatedefault(1)forTstate,--状态默认为1constraintDF_Ttimedefault(getdate())forTtime,--发帖时间默认为系统日期constraint

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论