欧易

欧易(OKX)

国内用户最喜爱的合约交易所

火币

火币(HTX )

全球知名的比特币交易所

币安

币安(Binance)

全球用户最多的交易所

用SQL语句创建数据库和表

时间:2022-10-10 18:04:33 | 浏览:710

--------创建数据库----use master----GO----IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = "test1")----DROP D

--------创建数据库

----use master

----GO

----IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = "test1")

----DROP DATABASE test1

----GO

----CREATE DATABASE test1

------创建教师表

--use test1

--go

--if exists (select name from test1.dbo.sysobjects where name ="teacher")

--drop table teacher

--create table teacher

--(

--tno int not null primary key,

--tname nvarchar(15)

--)

--go

----插入数据到教师表中

--insert into teacher(tno,tname) values(1,"小屋");

--insert into teacher(tno,tname) values(2,"DAVA");

--insert into teacher(tno,tname) values(3,"刘局");

--insert into teacher(tno,tname) values(4,"张厚");

---- ----创建学生表

----use test1

---- go

---- if exists(select name from test1.dbo.sysobjects where name ="student")

---- drop table studnet

----create table student

---- (

---- sno int not null primary key,

---- sname nvarchar(15) not null,

---- sage datetime not null,

---- ssex char(2) not null

------ )

------go

------插入数据

----INSERT INTO student(sno,sname,sage,ssex) VALUES(1,"张三","1980-1-23","男")

----INSERT INTO student(sno,sname,sage,ssex) VALUES(2,"李四","1982-12-12","男")

----INSERT INTO student(sno,sname,sage,ssex) VALUES(3,"张飒","1981-9-9","男")

----INSERT INTO student(sno,sname,sage,ssex) VALUES(4,"莉莉","1983-3-23","女")

----INSERT INTO student(sno,sname,sage,ssex) VALUES(5,"王弼","1982-6-21","男")

----INSERT INTO student(sno,sname,sage,ssex) VALUES(6,"王丽","1984-10-10","女")

----.创建课程表

--CREATE TABLE [dbo].[course](

-- [cno] [int] NOT NULL PRIMARY KEY,

-- [cname] [nvarchar](20) NOT NULL,

-- [tno] [int] NOT NULL

--)

----创建外键,已经存在两张表,我想用sql语句建立这两张表的主外键关系

----ALTER TABLE 表名1 add constraint 约束名 foreign key(字段) references 表名2(字段)

--alter table course add constraint course_to_student foreign key(tno) references teacher(tno);

--ALTER TABLE [dbo].[course] WITH CHECK ADD

--CONSTRAINT [FK_course_teacher] FOREIGN KEY([tno])

--REFERENCES [dbo].[teacher] ([tno])

----插入数据

--insert into course(cno,cname,tno) values(1,"企业管理",3)

--insert into course(cno,cname,tno) values(2,"马克思",1)

--insert into course(cno,cname,tno) values(3,"UML",2)

--insert into course(cno,cname,tno) values(4,"数据库",5)

--insert into course(cno,cname,tno) values(5,"物理",8)

--5.创建成绩表

use test1

if exists(select * from test1.dbo.sysobjects where id=object_id(N"[dbo].[sc]") and OBJECTPROPERTY(id, N"IsUserTable") = 1)

drop table sc ----[dbo].[sc]

go

create table sc

(

sno int not null,

cno int not null,

score float not null

)

go

--if exists (select * from dbo.sysobjects where id = object_id(N"[dbo].[table_name]") and OBJECTPROPERTY(id, N"IsUserTable") = 1)

--drop table [dbo].[table_name]

--GO

--CREATE TABLE [dbo].[table_name] (....)

--GO

--创建外键

--alter table [dbo].[sc] with check add constraint [foreign_key1] foreign key([cno]) references [dbo].[course] ([cno])

--alter table [dbo].[sc] with check add constraint [foreign_key2] foreign key([sno]) references [dbo].[student] ([sno])

ALTER TABLE [dbo].[sc] WITH CHECK ADD CONSTRAINT [FK_sc_course] FOREIGN KEY([cno])

REFERENCES [dbo].[course] ([cno])

ALTER TABLE [dbo].[sc] WITH CHECK ADD CONSTRAINT [FK_sc_student] FOREIGN KEY([sno])

REFERENCES [dbo].[student] ([sno])

--删除外键

--第一步:找出指定表上的外键约束名字

--exec sp_helpconstraint "dbo.sc"

--第二步:删除外键约束

alter table [dbo].[studnet] drop constraint FK_sc_student

--插入数据

INSERT INTO sc(sno,cno,score)VALUES(1,1,80)

INSERT INTO sc(sno,cno,score)VALUES(1,2,86)

INSERT INTO sc(sno,cno,score)VALUES(1,3,83)

INSERT INTO sc(sno,cno,score)VALUES(1,4,89)

INSERT INTO sc(sno,cno,score)VALUES(2,1,50)

INSERT INTO sc(sno,cno,score)VALUES(2,2,36)

--INSERT INTO sc(sno,cno,score)VALUES(2,3,43)

INSERT INTO sc(sno,cno,score)VALUES(2,4,59)

INSERT INTO sc(sno,cno,score)VALUES(3,1,50)

INSERT INTO sc(sno,cno,score)VALUES(3,2,96)

--INSERT INTO sc(sno,cno,score)VALUES(3,3,73)

INSERT INTO sc(sno,cno,score)VALUES(3,4,69)

有一篇文章,不知道是否对你有帮助:

SQL Server的系统表及其应用研究

1. SQL Server的系统表

Microsoft的SQL Server是一个可伸缩的高性能数据库管理系统,专为分布式客户机/服务器环境而设计,SQL Server几乎将所有的配置信息、安全性信息和对象信息都存储在了它自身的系统表中,而系统表存在于每个独立的数据库中,存储一个特定数据库对象信息的系统表通常称为数据库目录,MASTER数据库有其特有的系统表用于保存整个系统和所有数据库的信息,通常称为服务器目录或系统目录。

服务器上所有的数据库包括MODULE, MASTER等都含有18个具有相同名称、结构的系统表,如表SYSOBJECTS用于描述数据库中的对象棗表、视图、存储过程等,表SYSUSER用于描述数据库的用户,而MASTER数据库另外还有13个单独的全局系统表,如表SYSLOGINS用于保存每个服务器的登录名、口令和配置信息、表SYSDATABASE保存服务器上所有数据库名、所有者、状态及其他信息。

存储过程是内嵌于数据库中的程序代码,它与表、视图等一样是数据库的一个组成部分,不同于一般的外部程序代码,它是经过预编译处理的代码,因此具有运行速度快、效率高的特点,存储过程也是SQL Server的一个重要功能,许多单纯针对后台数据库的操作一般都交由存储过程来完成以提高系统效率。本文将给出一个存储过程来说明SQL Server系统表的应用。

2. SQL Server系统表的应用

在应用SQL Server的基于客户机/服务器体系结构的信息系统开发中,有时需要将后台SQL Server上的某一数据库的表结构都打印出来,以便于开发人员查阅及最终文档的形成。SQL Server本身提供了一个系统存储过程(SP_COLUMNS),可以完成对单个表结构的查询,只要在SLQ Server的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 物理存储数据类型。

在SQL SERVER的企业管理器(SQL ENTERPRISE MANAGER)中,选定某一数据库,创建存储过程print_dbstructure。

源代码如下:

if exists (select* from sysobjects where id=object_id( "dbo.print_dbstructure ")and sysstat & 0xf=4)存储过程

drop procedure dbo. print_dbstructure

GO

CREATE PROCEDURE print_dbstructure

AS

SELECT DISTINCT sysobjects.name, syscolumns.colid,

syscolumns.name, systypes.name, syscolumns.prec, syscolumns.scale

FROM syscolumns, sysobjects, systypes

WHERE sysobjects.id=syscolumns.id AND systypes.type=syscolumns.type AND ((sysobjects. type= "u "))

GO

首先判断是否存在一个名为print_dbstructure的存储过程,如果存在,就摘除它,否则,定义SQL语句建立新的存储过程。从三个系统表中选出满足条件的记录(即该数据库中保存在系统表中的用户表信息)。

执行时,在ISQL_W工具中,选定print_dbstructure所在的数据库,执行该存储过程,即可得到结果集(即该数据库中用户表的结构信息)。

3. SQL Server系统表的应用推广

以上所介绍存储过程的主要缺陷在于只能对服务器上某一特定的数据库(print_dbstructure所在的数据库)进行查询操作,我们可以通过在SQL Server系统数据库MASTER中建立带有数据库名参数的系统存储过程来解决这一问题,请读者自行完成。当然,SQL Server 系统表的应用远不止于止,读者也可依本文所介绍的方法去挖掘其他几个系统表的应用。

/*创建bbsDB数据库*/

use master

if exists(select * from sysdatabases where name="bbsDB")

drop database bbsDB

create database bbsDB

on

(

name="bbsDB_data",

filename="D:projectbsDB_data.mdf",

size=10,

filegrowth=20%

)

log on

(

name="bbsDB_log",

filename="D:projectbsDB_log.ldf",

size=3,

maxsize=20,

filegrowth=10%

)

/*创建bbsUsers表*/

use bbsdb

if exists(select * from sysobjects where name="bbsUsers")

drop table bbsUsers

create table bbsUsers

(

UID int identity(1,1) not null,--学号,标识列

Uname varchar(15) not null,--用户昵称

Upassword varchar(10) not null,--用户密码

Uemail varchar(20),--邮箱地址

Usex bit not null,--用户性别

Uclass int,--等级

Uremark varchar(20),--备注

UregDate datetime not null,--注册日期

Ustate int null, --状态

Upoint int null--用户积分

)

/*创建bbsUsers表中的约束*/

alter table bbsUsers

add constraint PK_uid primary key(uid),--主键

constraint DF_Upassword default(888888) for Upassword,--初始密码为888888

constraint DF_Usex default (1) for Usex,--性别默认为男

constraint DF_UregDate default (getdate()) for UregDate,--注册日期默认为系统日期

constraint DF_Ustate default(0) for Ustate,--状态默认为离线

constraint DF_Upoint default(20) for Upoint,--积分默认为20点

constraint CK_Uemail check(Uemail like "%@%"),--电子邮件必须含有@符号

constraint CK_Upassword check (len(Upassword)>=6)--密码至少为六位

/*创建bbsSection表*/

use bbsdb

if exists(select * from sysobjects where name="bbsSection")

drop table bbsSection

create table bbsSection

(

SID int identity(1,1) not null,--板块标号,自动增长

Sname varchar(32) not null,--版块名称

SmasterID int not null,--版主用户ID

Sprofile varchar(20) null,--版面简介

SclickCount int null, --点击率

StopicCount int null--发帖数

)

/*创建bbsSection表中的约束*/

alter table bbsSection

add constraint PK_sid primary key(sid),--主键

constraint DF_SclickCount default(0) for SclickCount,--点击率默认为0

constraint DF_StopicCount default(0) for StopicCount,--发帖数默认为0

constraint DF_SmasterID foreign key(SmasterID)references bbsUsers (UID)--外键

/*创建bbsTopic表*/

use bbsdb

if exists(select * from sysobjects where name="bbsTopic")

drop table bbsTopic

create table bbsTopic

(

TID int identity(1,1) not null,--帖子编号,自动增长

TsID int not null,--发帖人ID

TuID int not null,--版主用户ID

TreplyCount int null,--回复数量

Tface int null, --发帖表情

Ttopic varchar(20) not null,--标题

Tcontents varchar(30) not null,--正文

Ttime datetime null,--发帖时间

TclickCount int null,--点击数

Tstate int not null,--状态

TlastReply datetime null--回复时间

)

/*创建bbsTopic表的约束*/

alter table bbsTopic

add constraint DF_TreplyCount default(0) for TreplyCount,--回复数量默认为0

constraint PK_tid primary key(tid),--主键

constraint DF_TclickCount default (0) for TclickCount,--点击数默认为0

constraint DF_Tstate default (1) for Tstate,--状态默认为1

constraint DF_Ttime default (getdate()) for Ttime,--发帖时间默认为系统日期

constraint CK_Tcontents check (len(Tcontents)>=6),--正文必须大于六个字符

constraint CK_TlastReply check ((TlastReply)>(Ttime)),--最后回复时间必须晚于发帖时间

constraint DF_TsID foreign key(TsID)references bbsSection (SID),--外键

constraint DF_TuID foreign key(TuID)references bbsUsers (UID)--外键

/*创建bbsReply表*/

use bbsdb

if exists(select * from sysobjects where name="bbsReply")

drop table bbsReply

create table bbsReply

(

RID int identity(1,1) not null,--自动编号,帖子编号

RtID int not null,--主贴ID

RsID int not null,--板块ID

RuID int not null,--回帖人ID

Rface int null, --回帖表情

Rcontents varchar(30) not null,--正文

Rtime datetime null,--回帖时间

RclickCount int null--点击数

)

/*创建bbsReply表的约束*/

alter table bbsReply

add constraint DF_Rtime default (getdate()) for Rtime,--回帖时间默认为系统日期

constraint CK_Rcontents check (len(Rcontents)>=6),--正文必须大于六个字符

constraint DF_RtID foreign key(RtID)references bbsTopic (TID),--外键

constraint DF_RsID foreign key(RsID)references bbsSection (SID),--外键

constraint DF_RuID foreign key(RuID)references bbsUsers (UID)--外键

相关资讯

数据库:什么是数据库,数据库管理系统,数据库系统,数据库管理员?

数据库 : 数据库(DataBase 简称 DB)就是信息的集合或者说数据库是由数据库管理系统管理的数据的集合。数据库管理系统 : 数据库管理系统(Database Management System 简称 DBMS)是一种操纵和管理数据库

数据库超详细讲解,MySQL数据库的简介、及常用数据库介绍

数据库简介数据库:顾名思义,就是数据的仓库,它是长期存储在计算机内,有组织的、可共享的数据的集合。数据库管理系统(DBMS: 用来对数据进行存储、管理等操作的软件)数据库分类数据库通常分为:层次式数据库、网络式数据库和关系式数据库三种。而不

什么是数据库DataBase?数据库和数据记录的概念简单讲解

大家好,在讲数据库之前,我用了很长的时间,和大家分享了很多VBA方面的一些知识点,其中很多是我个人对VBA的理解。从这讲开始我们要在原先的基础上深入的讲解一些VBA的提高利用,就是我们要开始讲解的数据库。在《VBA与数据库利用》中我会讲解到

数据库看这一篇就够了!MySQL、Redis、Mongodb等常见数据库教程

数据库是系统健康和用户行为健康的重要指标。数据库中的异常行为可能会引起应用程序中的问题。或者当应用程序中存在异常时,都可以使用数据库指标来帮助加快调试过程。先来认识下市面上常用的数据库:关系型数据库1. MySQL数据库2. Microso

为什么要使用数据库,什么是数据库

1、为什么要使用数据库持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。持久化的大多数时候是将内存中的数据存储在数据库中,当然也可以存储在磁盘文件、XML数据文件中。方便管理数据(例如:快速的检索等)2、什么是数

重塑数据库发展路径业界聚焦我国数据库产业发展

人民网北京12月27日电 (记者乔雪峰)近日发布的《软件和信息技术服务业十四五规划》中,明确提出我国“十四五”时期要加快实施国家软件发展战略,不断提升软件产业创新活力,聚力攻坚基础软件,有效满足多层次、多样化市场需求,为构建以国内大循环为主

常见的数据库类型及各种数据库特点的简单介绍

大家好,在上一讲中,讲了数据库的概念及表的概念,通过上讲的内容,我们大概了解了一些数据库的基本知识。其实,在我的日常生产中,数据库和我们也是息息相关的,当我们打电话、上网、去银行交易等等,都要访问不同的数据库,这些数据库各有自己的特点,但都

数据库篇-第一章:数据库基本概念

基础知识学习,面试必备,关注吧 骚年01 第一,什么是数据库?维基百科上是这样定义的:所谓“数据库”是以一定方式储存在一起、能予多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。一个数据库由多个表空间(Tablespace)

C++基础语法梳理:数据库!带你深入浅出了解数据库

基本概念数据(data):描述事物的符号记录称为数据。数据库(DataBase,DB):是长期存储在计算机内、有组织的、可共享的大量数据的集合,具有永久存储、有组织、可共享三个基本特点。数据库管理系统(DataBase Management

数据库指南:一文让你浅显易懂地了解数据库

在数据分析的技能中,数据库与SQL会是性价比最高的技能之一。数据库是逻辑上的概念,它是一堆互相关联的数据,放在物理实体上,是一堆写在磁盘上的文件,文件中有数据。这些最基础的数据组成了表(table),我们把它想象成一张Excel的sheet

数据库技术新版图-Serverless数据库

数据库的发展已走过近四十年,作为基础软件之一,数据库称得上是一个“古老”的领域。而随着新技术的涌现,这个传统的领域也正不断焕发出新的生机。如果说云时代的到来推动了数据库的变革,那么,与 Serverless 的结合,则再次为数据库的发展添了

什么是数据库?用最简单的方法讲明白数据库

数据库基本概念数据库是一个以某种有组织的方式存储的数据集合。数据库(database)是保存有组织的数据的容器。数据库管理系统(DBMS)是一种数据库软件,MySQL是一种DBMS,即它是一种数据库软件,作者使用的数据库管理系统是MySQL

一文读懂Access数据库,从此不用Access数据库

1992年11月,Microsoft Access 1.0版本发布。同时,这也是Access数据库,第一次进入大家的视野。起初,Access的原名并不叫Access,而叫Cirrus。Ciruus开发于Visual Basic之前,当时的窗

闲聊数据库发展历史三个阶段、分类、数据库规范及趋势

概述数据库(Database)是存储与管理数据的软件系统,就像一个存入数据的物流仓库。在商业领域,信息就意味着商机,取得信息的一个非常重要的途径就是对数据进行分析处理,这就催生了各种专业的数据管理软件,数据库就是其中的一种。当然,数据库管理

数据库行业研究报告:数据库,云化底座,百舸争流

(报告出品方/作者:中信证券,杨泽原、丁奇)报告综述:安全可控势在必行,数据库国产替代加速开展,以党政为代表的国产替代先行,并不断向金融、电信等领域拓展。同时,伴随云计算、大数据技术的快速发展, 云数据库、数据仓库、大数据分析等领域快速增长

友情链接

网址导航 SEO域名抢注宝宝起名网妈妈知道币圈小米电视评测网零跑汽车港股行情海南椰子种植网眼镜品牌网深圳新闻资讯网特斯拉汽车之家宏宇瓷砖资讯网马可波罗瓷砖资讯陀螺山旅游网法国香水品牌网贵阳交友相亲网创维电视评测网青城山旅游攻略卡萨帝冰箱评测网会计培训网
MYSQL数据库应用网-mysql数据库基础知识、Mysql还原数据库、mysql数据库迁移方案、mysql数据库增删改查、mysql数据备份和恢复、mysql数据迁移工具、mysql数据库迁移详细步骤、mysql数据库存储目录迁移、mysql数据库不停机迁移方法、mysql数据备份和恢复、免费mysql服务器、mysql官网免费版安装教程。
MySQL数据库应用 nincu.cn ©2022-2028版权所有