建库
什么是系统数据库
master : 主数据库,创建数据库时 需要选中它 如何选择master数据库:
use master
model :模版数据库,创建的新数据库以其模板创建, msdb :保存SQLServer代理作业和执行计划的配置信息, tempdb :保存系统运行过程中产生的临时表、存储过程、全局或局部临时表及索引、表变量
系统数据库里面有哪些常见的表
1 sysdatabases 表:记录当前SQLServer里面的所有数据库
select * from sysdatabases-- 查询 crm 数据库的保存位置select filename from sysdatabases where name='crm'
2 sysobjects 表 :记录表关系、数据表、存储过程、视图
select * from sysobjects-- 查询 crm数据库的crm_contact表的记录select * from sysobjects where name='crm_contact'
如何判断已经存在某张表
1 系统函数:exists 表示是否存在,如果存在则true,不存在false2 if语句:
-- 格式:-- if (条件) -- 语句1 -- else-- 语句2-- 判断是否存在crm_contact数据表if exists(select * from sysobjects where name='crm_contact') print 'crm_contact表已经存在' print 打印输出else print '该表不存在,可以创建'
如何判断已经存在某个数据库
if exists(select * from sysdatabases where name='crm ')print '该数据库已有'elseprint '该库未创建'
如何创建数据库
简单格式:create database 数据库名称 参数格式:
create database 数据库名称 on ( name = 逻辑名称1, filename = 物理路径名称 size = 建库的初始大小(单位:m) filegrowth= 超过初始大小后的增长大小(单位:m) ) log on ( name = 逻辑名称2, filename = 物理路径名称 size = 建库的初始大小(单位:m) filegrowth= 超过初始大小后的增长大小(单位:m) )
注意: SQLServer的数据库文件分为:数据文件 与 日志文件 两种 数据文件后缀名:.mdf(主数据文件)、.ndf(次数据文件), 记录数据表的所有内容 日志文件后缀名:.ldf,记录操作员对该库的各种增删改查的操作
例如:
使用完整版建库语法,创建SchoolDatabase数据库,数据库文件位于D:\SDB.mdf 和 D:\SDB.ldf,初始大小10m,每次增长10m
create database SchoolDatabaseon( name=sdb_mdf,filename='D:\SDB.mdf', 主数据文件size=10,filegrowth=10)log on(name=sdb_ldf,filename='D:\SDB.ldf', 日志文件size=10,filegrowth=10)
如何删除数据库
格式:drop database 数据库名称 例如:删除已经创建的SchoolDatabase数据库
use mastergo if exists(select * from sysdatabases where name='SchoolDatabase')drop database SchoolDatabasegoCreate database SchoolDatabase go
注意:
创建与删除数据库都需要使用master数据库,否则没有相应的权限
go是批处理脚本中要使用的执行语句
创建数据表
格式: create table 表名 ( 字段名 数据类型 约束 )
注意:当数据库表很多的时候,要先创建 主表 , 再创建 从表 如:创建 学生表(主表)、 成绩表(从表)、 科目表(主表)
use SchoolDatabase 数据表将创建到Student数据库,所以使用use先调用Studentgo
如:创建学生表
if exists(select * from sysobjects where name='student') drop table studentgocreate table student( s_id char(5) primary key, -- 学号 :如:ST001 s_name nvarchar(10) not null, -- 姓名 s_icn char(18) unique not null , -- 身份证 s_sex nchar(1), -- 性别 s_class nvarchar(5) not null, -- 班级 s_regDate datetime default(getdate()), -- 入学日期 s_pwd varchar(50) -- 密码)go
解释: char(5) : 定长的字符串,不管输入多少个字符,其始终保持5个字符的长度。一个中文占两个字符 nchar(1) :定长的字符串,一个中文占一个字符 nvarchar(10) : 变长字符串,每个中文或字母占一个字符。可以保留10个中文字符 varchar(10) :变长字符串, 每个中文占两个字符。可以保留5个中文字符 datetime :日期与时间类型 int : 整数 decimal : 小数 primary key : 主键 not null :非空 unique : check :检查 foreign key :外键
创建课程表
if exists(select * from sysobjects where name='course') drop table coursegocreate table Course( c_id int identity(1,1) primary key, -- 课程ID c_name nvarchar(50) not null -- 课程名称)go
注意: 整数类型可以使用标识列自增 identity(1,1) ,从1开始每次增涨1个的自动编号
创建成绩表
if exists(select * from sysobjects where name='score')drop table scoregocreate table Score( s_id char(5), -- 学号 c_id int, -- 课程号 sc_score int check (sc_score>= and sc_score