sql server建库、建表、建约束技巧

下面给大家分享下sql server建库、建表、建约束技巧,下文介绍有文字有代码。

--创建School数据库之前:首先判断数据库是否存在,若存在则删除后再创建,若不存在则创建--
--exists关键字:括号里边能查询到数据则返回‘true' 否则返回‘false'

if exists(select * from sysdatabases where name = 'School')
--exists返回‘true'则执行删除数据库操作--
drop database School

--exists返回‘false'则表明数据库不存在,直接创建
create database School
on primary
(
--主数据库文件--
name = 'School', --主数据文件逻辑名
fileName = 'D:\project\School.mdf', --主数据文件物理逻辑名
size = 5MB, --初始值大小
maxsize = 100MB, --最大大小
filegrowth = 15% --数据文件增长量
)
log on
(
--日志文件--
name = 'School_log',
filename = 'D:\project\School_log.ldf',
size = 2MB,
filegrowth = 1MB
)
go

----------------------------------------使用T-SQL创建employee数据库------------------------------------

create database employee
on primary
(
--主要数据文件--
name = 'employee1',
filename = 'D:\project\employee1.mdf',
size = 10MB,
filegrowth = 10%
),
(
--次要数据文件--
name = 'employee2',
filename = 'D:\project\employee2.ndf',
size = 20MB,
maxsize = 100MB,
filegrowth = 1MB
)
log on
(
--第一个日志文件--
name = 'employee_log1',
filename = 'D:\project\employee_log1.ldf',
size = 10MB,
filegrowth = 1MB
),
(
--第二个日志文件--
name = 'employee_log2',
filename = 'D:\project\employee_log2.ldf',
size = 10MB,
maxsize = 50MB,
filegrowth = 1MB
)

---------------------------------查询已存在的数据库信息---------------------------

select * from sysdatabases

---------------------------------删除数据库------------------------------------

代码如下:

drop database School

---------------------------------创建Student数据库表----------------------------

代码如下:

--1、选择操作的数据库--
use School
go

--判断表是否存在--

代码如下:

if exists(select * from sysobjects where name = 'Student')
drop table Student

--2、创建表---

create table Student
(
--具体的列名 数据类型 列的特征(是否为空)--
StudentNo int identity(2,1) not null,
LoginPwd nvarchar(20) not null,
StudentName nvarchar(20) not null,
Sex int not null,
GradeId int not null,
phone nvarchar(50) not null,
BornDate datetime not null,
Address nvarchar(255),
Email nvarchar(50),
IDENTITYcard varchar(18)
)
go

---查看所有数据库对象(数据库表)---

代码如下:

select * from sysobjects
drop table Student

----------------------创建subject课程表-------------------

代码如下:

-----1、判断表是否存在;若存在则删除再创建,若不存在则直接创建--------
if exists(select * from sysobjects where name = 'subject')
drop table subject

use School
go

---创建subject课程表--
create table subject
(
SubjectNo int not null identity(1,1),
SubjectName nvarchar(50),
ClassHour int,
GradeID int
)

----------------------------------------创建Result成绩表-------------------

代码如下:

-----1、判断表是否存在;若存在则删除再创建,若不存在则直接创建--------
if exists(select * from sysobjects where name = 'Result')
drop table Result
use School
go

---创建Result成绩表--

代码如下:

create table Result
(
StudentNo int not null,
SubjectNo int not null,
ExamDate Datetime not null,
StudentResult int not null
)

-----------------------------------------创建Grande年级表-------------------

代码如下:

-----1、判断表是否存在;若存在则删除再创建,若不存在则直接创建--------
if exists(select * from sysobjects where name = 'Grade')
drop table Grade
use School
go

---创建Grande年级表--

代码如下:

create table Grade
(
GradeId int not null,
GrandeName nvarchar(50)
)

-----------------------------------------T-SQL添加约束-------------------------

代码如下:

--给StudentNo添加主键约束---
alter table Student
add constraint pk_StuNo primary key(StudentNo)

--给身份证添加唯一约束--

代码如下:

alter table Student
add constraint uq_StuIdcard unique(IDENTITYcard)

---给地址address添加默认约束--

代码如下:

alter table Student
add constraint df_stuaddress default('地址不详') for Address

---删除地址address默认约束---

代码如下:

alter table Student
drop constraint df_stuaddress

----------出生日期添加检查约束--------

代码如下:

alter table Student
add constraint ck_stuBorndate check(Borndate > '1980-01-01')

---------与Grand(年级表)建立主外键关系--------

--1、添加Grade主键(操作Grade)---

代码如下:

alter table Grade
add constraint pk_graid primary key(GradeId)

--2、添加Grade外键(操作Student)--

代码如下:

alter table Student
add constraint fk_stuGradeID foreign key(GradeId) references Grade(GradeId)

-------------------给subject课程表添加约束-----------------------

代码如下:

----给subjectNo列添加主键约束------
alter table subject
add constraint pk_SubID primary key(SubjectNo)

------给课程名称subjectName添加非空约束;-----

代码如下:

-----with nocheck:已经存在数据不通过check约束-------
alter table subject with nocheck
add constraint ck_subName check(SubjectName is not null)

-----学时必须大于0-----

代码如下:

alter table subject with nocheck
add constraint ck_ClassHour check(ClassHour > 0)

-----与Grade年级表添加主外键约束----

代码如下:

alter table subject with nocheck
add constraint fk_GradeID foreign key(GradeID)
references Grade(GradeID)

----------给result成绩表添加约束------------

-------添加多个约束---------

代码如下:

alter table Result
add
constraint pk_No_subID_date primary key(StudentNo,SubjectNo,ExamDate),
constraint df_examdate default(getdate()) for ExamDate,
constraint ck_StudentResult check(StudentResult between 0 and 100),
constraint fk_StuNo foreign key(StudentNo) references Student(StudentNo),
constraint fk_subNo foreign key(SubjectNo) references Subject(SubjectNo)

--删除多个约束--

代码如下:

alter table Result
drop constraint pk_No_subID_date,fk_subNo,fk_StuNo,ck_StudentResult,df_examdate

--------更改列的数据类型----------

代码如下:

alter table Result
alter column StudentResult int

以上就是本文全部内容,希望大家喜欢。

(0)

相关推荐

  • SqlServer编写数据库表的操作方式(建库、建表、修改语句)

    学习要点: SQL之-建库.建表.建约束.关系SQL基本语句大全.txt举得起放得下叫举重,举得起放不下叫负重.头要有勇气,抬头要有底气.学习要加,骄傲要减,机会要乘,懒惰要除.人生三难题:思,相思,单相思. SQL之-建库.建表.建约束.关系.部分T-sql语句 ---创建库 创建库之前 先进行 查看数据库中是否 已存在 次数据库 有便删除 --- if exists(select * from sys.sysdatabases where name='ConstructionDB')begi

  • 用SQL语句添加删除修改字段、一些表与字段的基本操作、数据库备份等

    用SQL语句添加删除修改字段 1.增加字段 alter table docdsp add dspcode char(200) 2.删除字段 ALTER TABLE table_NAME DROP COLUMN column_NAME 3.修改字段类型 ALTER TABLE table_name ALTER COLUMN column_name new_data_type 4.sp_rename 改名 更改当前数据库中用户创建对象(如表.列或用户定义数据类型)的名称. 语法 sp_rename

  • Oracle新建用户、角色,授权,建表空间的sql语句

    oracle数据库的权限系统分为系统权限与对象权限.系统权限( database system privilege )可以让用户执行特定的命令集.例如,create table权限允许用户创建表,grant any privilege 权限允许用户授予任何系统权限.对象权限( database object privilege )可以让用户能够对各个对象进行某些操作.例如delete权限允许用户删除表或视图的行,select权限允许用户通过select从表.视图.序列(sequences)或快照

  • mysql建库时提示Specified key was too long max key length is 1000 bytes的问题的解决方法

    索引字段长度太长, 1.修改字段长度 2.修改mysql默认的存储引擎 在/etc/mysql/my.cnf 的[mysqld] 下面加入default-storage-engine=INNODB 但是在建库时已经明确表明了需要使用INNODB引擎 Sql代码 复制代码 代码如下: CREATE TABLE `acs` ( ... ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 检查当前的引擎 复制代码 代码如下: mysql> show engines; 果然没有I

  • 必须会的SQL语句(二) 创建表、修改表结构、删除表

    1.创建数据库表 --使用哪个数据库,如果不写这一句是默认的数据库,也可以用鼠标选当前数据库 use testDB --创建表 Create Table tablename ( --id表示字段名 --int 数据类型 --primary key 主键 --not null 非空 --identity(1,1)初始值是1 每次自增长1 id int primary key not null identity(1,1), --unique 唯一 name varchar(20) not null

  • mysql建表常用sql语句个人经验分享

    连接:mysql -h主机地址 -u用户名 -p用户密码 (注:u与root可以不用加空格,其它也一样) 断开:exit (回车) 创建授权:grant select on 数据库.* to 用户名@登录主机 identified by \"密码\" 修改密码:mysqladmin -u用户名 -p旧密码 password 新密码 删除授权: revoke select,insert,update,delete om *.* from test2@localhost; 显示数据库:sh

  • Mysql 建库建表技巧分享

    一.两表之间若有关联,你是否还在用主键进行关联? 比如现在有2张表,一张新闻栏目表,一张新闻表,现在两张表需要进行关联,我想大多数人的做法肯定是在新闻表里建一个新闻栏目id,然后把新闻栏目表里的主键ID(自增)写到这个字段里,通过这样进行两表关联. 如果你是这样做的,赶紧改掉这个习惯吧.也许你会问为什么,栏目id是主键啊,又是自增的,为什么这样操作不行?原因其实很简单,栏目我们会增加,也会删除,删除就会造成主键id之间会有断号的情况,由于主键设置为自增,也就是说你之前删掉的栏目,再进行添加,id

  • SQL Server 2008 阻止保存要求重新创建表的更改问题的设置方法

    SQL Server 2008"阻止保存要求重新创建表的更改"的错误的解决方案是本文我们主要要介绍的内容,情况是这样的:我们在用SQL Server 2008 建完表后,插入或修改任意列时,提示:当用户在在SQL Server 2008企业管理器中更改表结构时,必须要先删除原来的表,然后重新创建新表,才能完成表的更改. 如果强行更改会出现以下提示:不允许保存更改.您所做的更改要求删除并重新创建以下表.您对无法重新创建的标进行了更改或者启用了"阻止保存要求重新创建表的更改&qu

  • SQL Server--怎样用ADO在SQL SERVER中建库,建表

    通过ADO可以访问SQL SERVER,并执行相应的SQL语句建库.建表,下面是SQL SERVER BOOKS ONLINE中的相关定义. 建表: CREATE TABLE   [       database_name.[owner].       | owner.   ] table_name   (       {               | column_name AS computed_column_expression } [,...n]   )   [ON {filegrou

  • 一条SQL语句修改多表多字段的信息的具体实现

    之前修改两张及以上表的时候,总得需要用几次语句才修改,万一其中一条没修改上,又没事务机制的话,处理很麻烦,于是想到能不能一条语句完成呢? 结果是成功的~~ 多表多字段的时候,得用到表关联的方式修改信息: 复制代码 代码如下: UPDATE `user` join `binding` on `user`.`uid`=`binding`.`uid` SET `user`.`renren`="" ,`binding`.`renren_token`= "" , `bindi

  • 用sql命令修改数据表中的一个字段为非空(not null)的语句

    ALTER TABLE table1 ALTER COLUMN [name] varchar(60) NULL; table1 表名 name 字段名 为什么加上[],因为name是sql关键字会冲突出现错误,这样以防万一. 如果name字段已经创建了索引,如果需要修改的话,必须先删除索引才能正确的进行.

  • 详解在MySQL中创建表的教程

    创建表的命令要求: 表的名称 表字段名称 每个字段的定义 语法: 下面是通用的SQL语法来创建一个MySQL表: CREATE TABLE table_name (column_name column_type); 现在,我们将创建下面的教程数据库表中. tutorials_tbl( tutorial_id INT NOT NULL AUTO_INCREMENT, tutorial_title VARCHAR(100) NOT NULL, tutorial_author VARCHAR(40)

随机推荐