sql server怎样用代码建立数据库,详细代码

如题所述

创建数据库和表的操作有两种方法:

一、可视化操作

1.创建数据库

选中数据库右击,在出现的对话框中选择新建数据库,然后新出现的对话框中填写数据库的名称

2.创建数据表

选中数据库下的表右击,在出现的对话框最上方有新建表选项,新出现的对话框中有列名、数据类型、允许Null值三列,这里可以添加表的的列,添加好列后保存Ctrl+S或者点击上方的保存,填写表名称确定就创建好了。

二、使用SQL语句创建

1.创建数据库
create database stuDB  --stuDB是数据库的名称
on  primary  -- 默认就属于primary文件组,可省略
(
/*--数据文件的具体描述--*/
    name='stuDB_data',  -- 主数据文件的逻辑名称
    filename='D:\stuDB_data.mdf', -- 主数据文件的物理路径和名称
    size=5mb, --主数据文件的初始大小
    maxsize=100mb, -- 主数据文件增长的最大值
    filegrowth=15%--主数据文件的增长率
)
log on
(
/*--日志文件的具体描述,各参数含义同上--*/
    name='stuDB_log',
    filename='D:\stuDB_log.ldf',
    size=2mb,
    filegrowth=1mb
)
  
-----2.创建数据表
use StuDB   --使用某个数据库(在某个数据库下建表)
go 
if exists(select * from sysobjects where name='stuMarks')--查询数据库是否已存在此表
drop table stuMarks--如果存在该表则删除,不存在不执行此句
create table stuMarks  --stuMarks是表的名称
(
    ExamNo      int     identity(1,1) primary key,--列名    数据类型   约束
    stuNo       char(6) not null,--列名   数据类型   是否允许插入Null值
    writtenExam int     not null,
    LabExam     int     not null
)
go
    
-- 其中,列属性"identity(起始值,递增量)" 表示"ExamNo"列为自动编号, 也称为标识列alter table 表名
add constraint 约束名 约束类型 具体的约束说明
alter table 表名
drop constraint 约束名

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-09-17
CREATEDATABASEdatabase_name[CONTAINMENT={NONE|PARTIAL}][ON[PRIMARY][,n][,[,n]][LOGON[,n]]][COLLATEcollation_name][WITH[,n]][;]::={FILESTREAM([,n])|DEFAULT_FULLTEXT_LANGUAGE={lcid|language_name|language_alias}|DEFAULT_LANGUAGE={lcid|language_name|language_alias}|NESTED_TRIGGERS={OFF|ON}|TRANSFORM_NOISE_WORDS={OFF|ON}|TWO_DIGIT_YEAR_CUTOFF=|DB_CHAINING{OFF|ON}|TRUSTWORTHY{OFF|ON}}::={NON_TRANSACTED_ACCESS={OFF|READ_ONLY|FULL}|DIRECTORY_NAME='directory_name'}ToattachadatabaseCREATEDATABASEdatabase_nameON[,n]FOR{{ATTACH[WITH[,n]]}|ATTACH_REBUILD_LOG}[;]::={(NAME=logical_file_name,FILENAME={'os_file_name'|'filestream_path'}[,SIZE=size[KB|MB|GB|TB]][,MAXSIZE={max_size[KB|MB|GB|TB]|UNLIMITED}][,FILEGROWTH=growth_increment[KB|MB|GB|TB|%]])}::={FILEGROUPfilegroup_name[CONTAINSFILESTREAM][DEFAULT][,n]}::={|RESTRICTED_USER|FILESTREAM(DIRECTORY_NAME={'directory_name'|NULL})}::={ENABLE_BROKER|NEW_BROKER|ERROR_BROKER_CONVERSATIONS}CreateadatabasesnapshotCREATEDATABASEdatabase_snapshot_nameON(NAME=logical_file_name,FILENAME='os_file_name')[,n]ASSNAPSHOTOFsource_database_name[;]database_name新数据库的名称。数据库名称在SQLServer的实例中必须唯一,并且必须符合标识符规则。除非没有为日志文件指定逻辑名称,否则database_name最多可以包含128个字符。如果未指定逻辑日志文件名称,则SQLServer将通过向database_name追加后缀来为日志生成logical_file_name和os_file_name。这会将database_name限制为123个字符,从而使生成的逻辑文件名称不超过128个字符。如果未指定数据文件的名称,则SQLServer使用database_name作为logical_file_name和os_file_name。默认路径从注册表中获得。可以使用ManagementStudio中的“服务器属性”(“数据库设置”页)更改默认路径。更改默认路径要求重新启动SQLServer。CONTAINMENT指定数据库的包含状态。NONE=非包含数据库。PARTIAL=部分包含的数据库。ON指定显式定义用来存储数据库数据部分的磁盘文件(数据文件)。当后面是以逗号分隔的、用以定义主文件组的数据文件的项列表时,需要使用ON。主文件组的文件列表可后跟以逗号分隔的、用以定义用户文件组及其文件的项列表(可选)。PRIMARY指定关联的列表定义主文件。在主文件组的项中指定的第一个文件将成为主文件。一个数据库只能有一个主文件。有关详细信息,请参阅数据库文件和文件组。如果没有指定PRIMARY,那么CREATEDATABASE语句中列出的第一个文件将成为主文件。LOGON指定显式定义用来存储数据库日志的磁盘文件(日志文件)。LOGON后跟以逗号分隔的用以定义日志文件的项列表。如果没有指定LOGON,将自动创建一个日志文件,其大小为该数据库的所有数据文件大小总和的25%或512KB,取两者之中的较大者。此文件放置于默认的日志文件位置。有关此位置的信息,请参阅查看或更改数据文件和日志文件的默认位置(SQLServerManagementStudio)。不能对数据库快照指定LOGON。COLLATEcollation_name指定数据库的默认排序规则。排序规则名称既可以是Windows排序规则名称,也可以是SQL排序规则名称。如果没有指定排序规则,则将SQLServer实例的默认排序规则分配为数据库的排序规则。不能对数据库快照指定排序规则名称。不能使用FORATTACH或FORATTACH_REBUILD_LOG子句指定排序规则名称。有关如何更改附加数据库的排序规则的信息,请访问此Microsoft网站。有关Windows和SQL排序规则名称的详细信息,请参阅COLLATE(Transact-SQL)。注意包含数据库的排序方式不同于非包含数据库。有关详细信息,请参阅包含数据库的排序规则。WITH仅在将CONTAINMENT设置为PARTIAL之后,才允许使用以下选项。如果将CONTAINMENT设置为NONE,将发生错误。NON_TRANSACTED_ACCESS={OFF|READ_ONLY|FULL}指定对数据库的非事务性FILESTREAM访问的级别。USEmaster;GOCREATEDATABASEmytest;GO--VerifythedatabasefilesandsizesSELECTname,size,size*1.0/128AS[SizeinMBs]FROMsys.master_filesWHEREname=N'mytest';GOUSEmaster;GOCREATEDATABASEmytest;GO--VerifythedatabasefilesandsizesSELECTname,size,size*1.0/128AS[SizeinMBs]FROMsys.master_filesWHEREname=N'mytest';GOB.创建指定数据和事务日志文件的数据库下面的示例将创建数据库Sales。因为没有使用关键字PRIMARY,第一个文件(Sales_dat)将成为主文件。因为在Sales_dat文件的SIZE参数中没有指定MB或KB,将使用MB并按MB分配。Sales_log文件以MB为单位进行分配,因为SIZE参数中显式声明了MB后缀。USEmaster;GOCREATEDATABASESalesON(NAME=Sales_dat,FILENAME='C:\ProgramFiles\MicrosoftSQLServer\MSSQL11.MSSQLSERVER\MSSQL\DATA\saledat.mdf',SIZE=10,MAXSIZE=50,FILEGROWTH=5)LOGON(NAME=Sales_log,FILENAME='C:\ProgramFiles\MicrosoftSQLServer\MSSQL11.MSSQLSERVER\MSSQL\DATA\salelog.ldf',SIZE=5MB,MAXSIZE=25MB,FILEGROWTH=5MB);GOUSEmaster;GOCREATEDATABASESalesON(NAME=Sales_dat,FILENAME='C:\ProgramFiles\MicrosoftSQLServer\MSSQL11.MSSQLSERVER\MSSQL\DATA\saledat.mdf',SIZE=10,MAXSIZE=50,FILEGROWTH=5)LOGON(NAME=Sales_log,FILENAME='C:\ProgramFiles\MicrosoftSQLServer\MSSQL11.MSSQLSERVER\MSSQL\DATA\salelog.ldf',SIZE=5MB,MAXSIZE=25MB,FILEGROWTH=5MB);GOC.通过指定多个数据和事务日志文件创建数据库以下示例创建数据库Archive,该数据库具有三个100-MB数据文件和两个100-MB事务日志文件。主文件是列表中的第一个文件,并使用PRIMARY关键字显式指定。事务日志文件在LOGON关键字后指定。请注意用于FILENAME选项中各文件的扩展名:.mdf用于主数据文件,.ndf用于辅助数据文件,.ldf用于事务日志文件。此示例将数据库放置于D:驱动器上,而非master数据库中。USEmaster;GOCREATEDATABASEArchiveONPRIMARY(NAME=Arch1,FILENAME='D:\SalesData\archdat1.mdf',SIZE=100MB,MAXSIZE=200,FILEGROWTH=20),(NAME=Arch2,FILENAME='D:\SalesData\archdat2.ndf',SIZE=100MB,MAXSIZE=200,FILEGROWTH=20),(NAME=Arch3,FILENAME='D:\SalesData\archdat3.ndf',SIZE=100MB,MAXSIZE=200,FILEGROWTH=20)LOGON(NAME=Archlog1,FILENAME='D:\SalesData\archlog1.ldf',SIZE=100MB,MAXSIZE=200,FILEGROWTH=20),(NAME=Archlog2,FILENAME='D:\SalesData\archlog2.ldf',SIZE=100MB,MAXSIZE=200,FILEGROWTH=20);GOUSEmaster;GOCREATEDATABASEArchiveONPRIMARY(NAME=Arch1,FILENAME='D:\SalesData\archdat1.mdf',SIZE=100MB,MAXSIZE=200,FILEGROWTH=20),(NAME=Arch2,FILENAME='D:\SalesData\archdat2.ndf',SIZE=100MB,MAXSIZE=200,FILEGROWTH=20),(NAME=Arch3,FILENAME='D:\SalesData\archdat3.ndf',SIZE=100MB,MAXSIZE=200,FILEGROWTH=20)LOGON(NAME=Archlog1,FILENAME='D:\SalesData\archlog1.ldf',SIZE=100MB,MAXSIZE=200,FILEGROWTH=20),(NAME=Archlog2,FILENAME='D:\SalesData\archlog2.ldf',SIZE=100MB,MAXSIZE=200,FILEGROWTH=20);GO
第2个回答  推荐于2017-09-02
下面是创建一个sqlserver数据库的代码模板,加上一个创建表的模板。开发的时候可以拷贝过去直接改动一下就可以用了。
代码如下:
USE [master]
GO
IF EXISTS(SELECT 1
FROM sysdatabases WHERE NAME=N'HkTemp')
BEGIN
DROP DATABASE HkTemp
--如果数据库存在先删掉数据库
END
GO
CREATE DATABASE HkTemp
ON
PRIMARY
--创建主数据库文件
(
NAME='HkTemp',
FILENAME='E:\Databases\HkTemp.dbf',

SIZE=5MB,
MaxSize=20MB,
FileGrowth=1MB
)
LOG ON --创建日志文件

(
NAME='HkTempLog',
FileName='E:\Databases\HkTemp.ldf',

Size=2MB,
MaxSize=20MB,
FileGrowth=1MB
)
GO
--添加表
IF
NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'Hksj_User')
AND type in (N'U'))
BEGIN
CREATE TABLE Hksj_User
(
Id INT
IDENTITY(1,1) NOT NULL,
SName NVARCHAR(20) NOT NULL,
SNickName
NVARCHAR(20),
SPassWord NVARCHAR(30) NOT NULL,
DCreateDate DATETIME ,

SCreator NVARCHAR(20),
SEmail NVARCHAR(50),
SPhone NVARCHAR(50),

SIdentifyId NVARCHAR(30),
DLastTimeLogOn DATETIME
PRIMARY KEY
CLUSTERED
(
Id ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
)
ON [PRIMARY]
END
GO
--添加注释
EXEC sys.sp_addextendedproperty
@name=N'MS_Description', @value=N'登录名' ,
@level0type=N'SCHEMA',@level0name=N'dbo',
@level1type=N'TABLE',@level1name=N'Hksj_User',
@level2type=N'COLUMN',@level2name=N'SName'
GO
EXEC
sys.sp_addextendedproperty @name=N'MS_Description', @value=N'邮箱' ,
@level0type=N'SCHEMA',@level0name=N'dbo',
@level1type=N'TABLE',@level1name=N'Hksj_User',
@level2type=N'COLUMN',@level2name=N'SEmail'
第3个回答  推荐于2017-09-11
SQL语句在SQL Server中建立数据库_随着梦想去旅行_百度空间
http://hi.baidu.com/zhaquanmin/item/bd2d8216ccfdb8701009b5a1
IF EXISTS (SELECT *
FROM master..sysdatabases
WHERE name = N'suntest')
DROP DATABASE suntest
GO
CREATE DATABASE suntest
on
primary
(
name = suntest_data,
filename = 'e:\suntest_data.mdf',
size = 3,
maxsize = 10,
filegrowth = 10%
),
filegroup newgroup1
(
name = suntest_data,
filename = 'e:\suntest_data.mdf',
size = 3,
maxsize = 10,
filegrowth = 1
)
log on
(
name=suntest_log,
filename='e:\suntest_log.mdf',
size=1,
maxsize=6,
filegrowth=1
)
GO

发的连接里有更详尽的说明。追问

谢谢,很详细,但是不太清楚filegroup newgroup1 后边()内定义的是什么东西

追答

use master
go
--1.建库
create database testdb
on primary
(name='testdb', filename='d:/db/testdb.mdf', size=8mb, filegrowth=8mb)
log on
(name='testdb_log', filename='d:/db/testdb_log.ldf', size=32mb, filegrowth=32mb)
go
不好意思哈,忘记你是初学的了。这个比较简介。size表示文件大小. filegrowth表示每次增长多少。

本回答被提问者采纳
相似回答