数据库怎么创建表?用SQL语句创建数据库和表
数据库怎么创建表(用SQL语句创建数据库和表)--------创建数据库
----use
----GO
----IF ( name FROM .dbo. WHERE name = 'test1')
----DROP test1
----GO
---- test1
------创建教师表
--use test1
--go
--if ( name from test1.dbo. where name ='')
--drop table
-- table
--(
--tno int not null key,
--tname (15)
--)
--go
----插入数据到教师表中
-- into (tno,tname) (1,'小屋');
-- into (tno,tname) (2,'DAVA');
-- into (tno,tname) (3,'刘局');
-- into (tno,tname) (4,'张厚');
---- ----创建学生表
----use test1
---- go
---- if ( name from test1.dbo. where name ='')
---- drop table
---- table
---- (
---- sno int not null key,
---- sname (15) not null,
---- sage not null,
---- ssex char(2) not null
------ )
------go
------插入数据
---- INTO (sno,sname,sage,ssex) (1,'张三','1980-1-23','男')
---- INTO (sno,sname,sage,ssex) (2,'李四','1982-12-12','男')
---- INTO (sno,sname,sage,ssex) (3,'张飒','1981-9-9','男')
---- INTO (sno,sname,sage,ssex) (4,'莉莉','1983-3-23','女')
---- INTO (sno,sname,sage,ssex) (5,'王弼','1982-6-21','男')
---- INTO (sno,sname,sage,ssex) (6,'王丽','1984-10-10','女')
----.创建课程表
-- TABLE [dbo].[](
-- [cno] [int] NOT NULL KEY,
-- [cname] [](20) NOT NULL,
-- [tno] [int] NOT NULL
--)
----创建外键,已经存在两张表,我想用sql语句建立这两张表的主外键关系
----ALTER TABLE 表名1 add 约束名 key(字段) 表名2(字段)
--alter table add key(tno) (tno);
--ALTER TABLE [dbo].[] WITH CHECK ADD
-- [] KEY([tno])
-- [dbo].[] ([tno])
----插入数据
-- into (cno,cname,tno) (1,'企业管理',3)
-- into (cno,cname,tno) (2,'马克思',1)
-- into (cno,cname,tno) (3,'UML',2)
-- into (cno,cname,tno) (4,'数据库',5)
-- into (cno,cname,tno) (5,'物理',8)
--5.创建成绩表
use test1
if ( * from test1.dbo. where id=(N'[dbo].[sc]') and (id, N'') = 1)
drop table sc ----[dbo].[sc]
go
table sc
(
sno int not null,
cno int not null,
score float not null
)
go
--if ( * from dbo. where id = (N'[dbo].[]') and (id, N'') = 1)
--drop table [dbo].[]
--GO
-- TABLE [dbo].[] (....)
--GO
--创建外键
--alter table [dbo].[sc] with check add [] key([cno]) [dbo].[] ([cno])
--alter table [dbo].[sc] with check add [] key([sno]) [dbo].[] ([sno])
ALTER TABLE [dbo].[sc] WITH CHECK ADD [] KEY([cno])
[dbo].[] ([cno])
ALTER TABLE [dbo].[sc] WITH CHECK ADD [] KEY([sno])
[dbo].[] ([sno])
--删除外键
--第一步:找出指定表上的外键约束名字
--exec 'dbo.sc'
--第二步:删除外键约束
alter table [dbo].[] drop
--插入数据
INTO sc(sno,cno,score)(1,1,80)
INTO sc(sno,cno,score)(1,2,86)
INTO sc(sno,cno,score)(1,3,83)
INTO sc(sno,cno,score)(1,4,89)
INTO sc(sno,cno,score)(2,1,50)
INTO sc(sno,cno,score)(2,2,36)
-- INTO sc(sno,cno,score)(2,3,43)
INTO sc(sno,cno,score)(2,4,59)
INTO sc(sno,cno,score)(3,1,50)
INTO sc(sno,cno,score)(3,2,96)
-- INTO sc(sno,cno,score)(3,3,73)
INTO sc(sno,cno,score)(3,4,69)
有一篇文章,不知道是否对你有帮助:
SQL 的系统表及其应用研究
1. SQL 的系统表
的SQL 是一个可伸缩的高性能数据库管理系统,专为分布式客户机/服务器环境而设计,SQL 几乎将所有的配置信息、安全性信息和对象信息都存储在了它自身的系统表中,而系统表存在于每个独立的数据库中,存储一个特定数据库对象信息的系统表通常称为数据库目录,数据库有其特有的系统表用于保存整个系统和所有数据库的信息,通常称为服务器目录或系统目录。
服务器上所有的数据库包括, 等都含有18个具有相同名称、结构的系统表,如表用于描述数据库中的对象棗表、视图、存储过程等,表用于描述数据库的用户,而数据库另外还有13个单独的全局系统表,如表用于保存每个服务器的登录名、口令和配置信息、表保存服务器上所有数据库名、所有者、状态及其他信息。
存储过程是内嵌于数据库中的程序代码,它与表、视图等一样是数据库的一个组成部分,不同于一般的外部程序代码,它是经过预编译处理的代码,因此具有运行速度快、效率高的特点,存储过程也是SQL 的一个重要功能,许多单纯针对后台数据库的操作一般都交由存储过程来完成以提高系统效率。本文将给出一个存储过程来说明SQL 系统表的应用。
2. SQL 系统表的应用
在应用SQL 的基于客户机/服务器体系结构的信息系统开发中,有时需要将后台SQL 上的某一数据库的表结构都打印出来,以便于开发人员查阅及最终文档的形成。SQL 本身提供了一个系统存储过程(),可以完成对单个表结构的查询,只要在SLQ 的ISQL-W工具中键入“表名”,并执行即可得到结果集。但该方法有许多不足之处,其主要缺点是:
1)只能对数据库中单个数据表进行操作,当需要查询一个数据库中所有的表时,需要多次执行系统存储过程,因此显得非常繁琐。
2)查询结果集中包含了许多不必要的信息,缺乏使用的灵活性。
下面我们创建一个存储过程来完成对某一个数据库中所有表结构的查询。
在创建一个数据库的同时,系统会自动建立一些系统表,限于篇幅的缘故我们在这里只介绍与应用实例有关的三个系统表(,,)及其相关的字段。 表为数据库内创建的每个对象(约束,规则,表,视图,触发器等)创建一条记录。
该表相关字段的含义如下:
.name 对象名,如:表名,视图名。
.id 对象id。
.type 对象类型(p存储过程,v视图,s系统表,u用户表)。
表为每个表、视图中的每个列和每个存储过程的每个参数创建一条记录。 该表相关字段的含义如下:(此处的列系指数据库中每个表、视图中的列)
.id 该列所属的表的id,可与.id相关联
.colid 列id,表示该列是表或视图的第几列
.type 物理存储类型,可与.type相关联.
. 数据的物理长度。
.name 列名字,即字段名。
.Pre 列的精度级。
.Scale 列的标度级。
表为每个系统和每个用户提供的数据类型创建一条记录,如果它们存在,给定域和默认值,描述系统提供的数据类型的行不可更改。
该表相关字段的含义如下:
.name 数据类型的名字。
.type 物理存储数据类型。
在SQL 的企业管理器(SQL )中,选定某一数据库,创建存储过程。
源代码如下:
if (* from where id=( 'dbo. ')and & 0xf=4)存储过程
drop dbo.
GO
AS
.name, .colid,
.name, .name, .prec, .scale
FROM , ,
WHERE .id=.id AND .type=.type AND ((. type= 'u '))
GO
首先判断是否存在一个名为的存储过程,如果存在,就摘除它,否则,定义SQL语句建立新的存储过程。从三个系统表中选出满足条件的记录(即该数据库中保存在系统表中的用户表信息)。
执行时,在工具中,选定所在的数据库,执行该存储过程,即可得到结果集(即该数据库中用户表的结构信息)。
3. SQL 系统表的应用推广
以上所介绍存储过程的主要缺陷在于只能对服务器上某一特定的数据库(所在的数据库)进行查询操作,我们可以通过在SQL 系统数据库中建立带有数据库名参数的系统存储过程来解决这一问题,请读者自行完成。当然,SQL 系统表的应用远不止于止,读者也可依本文所介绍的方法去挖掘其他几个系统表的应用。
/*创建bbsDB数据库*/
use
if ( * from where)
drop bbsDB
bbsDB
on
(
name='',
='D:\\.mdf',
size=10,
=20%
)
log on
(
name='',
='D:\\.ldf',
size=3,
=20,
=10%
)
/*创建表*/
use bbsdb
if ( * from where)
drop table
table
(
UID int (1,1) not null,--学号,标识列
Uname (15) not null,--用户昵称
(10) not null,--用户密码
(20),--邮箱地址
Usex bit not null,--用户性别
int,--等级
(20),--备注
not null,--注册日期
int null, --状态
int null--用户积分
)
/*创建表中的约束*/
alter table
add key(uid),--主键
() for ,--初始密码为
(1) for Usex,--性别默认为男
(()) for ,--注册日期默认为系统日期
(0) for ,--状态默认为离线
(20) for ,--积分默认为20点
check( like '%@%'),--电子邮件必须含有@符号
check (len()>=6)--密码至少为六位
/*创建表*/
use bbsdb
if ( * from where)
drop table
table
(
SID int (1,1) not null,--板块标号,自动增长
Sname (32) not null,--版块名称
int not null,--版主用户ID
(20) null,--版面简介
int null, --点击率
int null--发帖数
)
/*创建表中的约束*/
alter table
add key(sid),--主键
(0) for ,--点击率默认为0
(0) for ,--发帖数默认为0
key() (UID)--外键
/*创建表*/
use bbsdb
if ( * from where)
drop table
table
(
TID int (1,1) not null,--帖子编号,自动增长
TsID int not null,--发帖人ID
TuID int not null,--版主用户ID
int null,--回复数量
Tface int null, --发帖表情
(20) not null,--标题
(30) not null,--正文
Ttime null,--发帖时间
int null,--点击数
int not null,--状态
null--回复时间
)
/*创建表的约束*/
alter table
add (0) for ,--回复数量默认为0
key(tid),--主键
(0) for ,--点击数默认为0
(1) for ,--状态默认为1
(()) for Ttime,--发帖时间默认为系统日期
check (len()>=6),--正文必须大于六个字符
check (()>(Ttime)),--最后回复时间必须晚于发帖时间
key(TsID) (SID),--外键
key(TuID) (UID)--外键
/*创建表*/
use bbsdb
if ( * from where)
drop table
table
(
RID int (1,1) not null,--自动编号,帖子编号
RtID int not null,--主贴ID
RsID int not null,--板块ID
RuID int not null,--回帖人ID
Rface int null, --回帖表情
(30) not null,--正文
Rtime null,--回帖时间
int null--点击数
)
/*创建表的约束*/
alter table
add (()) for Rtime,--回帖时间默认为系统日期
check (len()>=6),--正文必须大于六个字符
key(RtID) (TID),--外键
key(RsID) (SID),--外键
key(RuID) (UID)--外键
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,谢谢。