您的位置:首页 > 数据库

SQL Server 语法 使用SQL语句创建数据库、表

2011-10-30 20:33 666 查看
v创建一个只含一个数据文件和一个事务日志文件的数据库

vCREATE DATABASE 数据库名
[ON [PRIMARY]

{(NAME=数据文件的逻辑名称,

FILENAME='数据文件的路径和文件名',

SIZE=数据文件的初始容量,

MAXSIZE=数据文件的最大容量,

FILEGROWTH=数据文件的增长量)}[,…n]

LOG ON

{(NAME=事务日志文件的逻辑名称,

FILENAME='事务日志文件的物理名称',

SIZE=事务日志文件的初始容量,

MAXSIZE=事务日志文件的最大容量,

FILEGROWTH=事务日志文件的增长量) }[,…n]]
说明

Transact-SQL的语法规则

规则

描述

|(竖线)

分隔括号或大括号内的语法项目。只能选择一个项目

[](方括号)

可选语法项目。不必键入方括号

{}(大括号)

必选语法项目。不必键入大括号

[,…n]

表示前面的项可重复n次,每一项由逗号分隔

参数

参数值

数据库名称

Student1

数据文件逻辑名

Student1_dat

数据文件物理名

D:\student1_dat.mdf

数据文件初始大小

10MB

数据文件最大值

50MB

数据文件增长值

原来的20%

事务日志文件逻辑名

Student1_log

日志文件物理名

D:\student1_log.ldf

日志文件初始大小

4MB

日志文件最大值

25MB

日志文件增长值

5MB

create database student1
on
(name=student1_dat,
filename='d:\student_dat.mdf',
size=10,
maxsize=50,
filegrowth=20%)
log on
(name=student1_log,
filename='d:\student_log.ldf',
size=4,
maxsize=25,
filegrowth=5)

举例

2、可以简单地来创建数据库, CREATE DATABASE mytest
§没有指定主文件名,在默认的情况下,命名主文件为mytest.mdf,
§日志文件名为mytest_log.ldf。
§主文件和日志文件的大小都同Model数据库的主文件和日志文件大小一致,并且可以自由增长。
删除数据库

格式:DROP DATABASE 数据库名
例、将mytest数据库删除
§Drop database mytest
删除数据库将删除数据库所使用的数据库文件和磁盘文件。

例3、复杂一点的数据库创建范例

数据库名称为Student,
§第一个数据文件逻辑名称为class1,物理文件名为E:\class1.mdf, 初始大小20MB,最大尺寸为无限大,增长速度为20%。
§第二个的数据文件Class2, E:\class2.ndf,初始大小40MB,最大尺寸为100MB,增长速度10MB。
§2个15MB的事务日志文件,事务日志文件的逻辑名为class1_log和class2_log,物理文件名为E:\classlog1.ldf和classlog2.ldf。

CREATE DATABASE student
ON PRIMARY
( NAME = class1,
FILENAME = 'E:\class1.mdf',
SIZE = 20MB,
MAXSIZE = unlimited,
FILEGROWTH = 20%),
( NAME = class2,
FILENAME = 'E:\class2.ndf',
SIZE = 40MB,
MAXSIZE = 100MB,
FILEGROWTH = 10MB)
LOG ON
( NAME = class1_log,
FILENAME = 'E:\classlog1.ldf',
SIZE = 15MB),
( NAME = class2_log,
FILENAME = 'E:\classlog2.ldf',
SIZE =15MB)
GO

使用SQL语句创建表

CREATE TABLE 表名

(

字段1 数据类型 列的特征,

字段2 数据类型 列的特征,

...

)

列的特征:
是否为主键
包括该列是是否为空(NULL)
、是否是标识列(自动编号)、
是否有默认值、等。

student

字段名

说明

字段数据类型

字段大小

约束

sno

学号

char

15

主键

sname

姓名

char

10

Not null

ssex

性别

char

2

(‘男’,‘女’);默认值为‘男’

sbirth

出生年月日

datetime

[1990-1-1,1992-12-31]

email

E-mail

varchar

40

包含@

create table student
(sno char(15) primary key,
sname char(10) not null,
ssex char(2) check(ssex in('男','女')) default('女'),
sbirth datetime check(sbirth between '1990-1-1' and '1992/12/31'),
email char(40) check(email like '%@%'))
练习:用creat bable语句创建Kcda(课程档案)表

字段名

说明

字段数据类型

字段大小

约束

kch

课程号

char

4

主键

kcmc

课程名称

char

10

Not null

zxs

总学时

smallint

create table kcda
(kch char(4) primary key,
kcmc char(10) not null,
zxs smallint)

xkqk选课情况

字段名

说明

字段数据类型

字段大小

约束

sno

学号

char

15

主键;外键

kch

课程号

char

4

主键;外键

grade

分数

smallint

[0,100]

create table xkqk
(sno char(15) foreign key references student(sno),
kch char(4) foreign key references kcda(kch),
grade smallint check(grade between 0 and 100),
constraint pk_xkqk primary key(sno,kch))

USE stuDB --将当前数据库设置为stuDB

GO

CREATE TABLE stuInfo /*-创建学员信息表-*/

(

stuName VARCHAR(20) NOT NULL , --姓名,非空(必填)

stuNo CHAR(6) NOT NULL, --学号,非空(必填)

stuAge INT NOT NULL, --年龄,INT类型默认为4个字节

stuID NUMERIC(18,0), --身份证号

stuSeat SMALLINT IDENTITY (1,1), --座位号,自动编号

stuAddress varchar(60) --住址,允许为空,即可选输入

)

GO

CREATE TABLE stuMarks

(

ExamNo CHAR(7) NOT NULL, --考号

stuNo CHAR(6) NOT NULL, --学号

writtenExam numeric(4,1) NOT NULL, --笔试成绩

LabExam numeric(4,1) NOT NULL --机试成绩

)

GO

使用ALTER TABLE语句修改表结构

使用ALTER TABLE语句可以为表添加或删除列,也可以修改列性质

使用ALTER TABLE语句修改Receipt表,具体要求如下:
① 插入Dealer(经手人)列,数据类型为整型。
alter table receipt add dealer int

② 插入Checker(审核人)列,数据类型为字符型,长度为10。
alter table receipt add checker char(10)

③ 将Dealer列的数据类型该为字符型,长度为10。
alter table receipt alter column dealer char(10)
④ 删除Dealer列。
alter table receipt drop column dealer
⑤ 删除Checker列。

删除表的语法:

DROP TABLE 表名

IF EXISTS(SELECT * FROM sysobjects WHERE name=’xkqk’ and type=‘U’ )
DROP TABLE xkqk

USE jxgl

GO

IF EXISTS(SELECT * FROM sysobjects WHERE name=’xkqk’ and type=‘U’ )

DROP TABLE xkqk

CREATE TABLE xkqk

(

…..

)

GO

插入(添加)数据

插入

一个

元组

INSERT [INTO] 表名[(属性列1[,属性列2]…)]

VALUES (常量1[,常量2]…)

插入

子查询

结果

INSERT [INTO] 表名[(属性列1[,属性列2]…)] SELECT 语句

v注意:插入字符型和日期型数据时必须用单引号。

insert into recReipt
values (R081008001,2008-10-8,杭州娃哈哈,无)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: