SQLServer脚本建库表
建库
什么是系统数据库
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 '该数据库已有'
else
print '该库未创建'
如何创建数据库
简单格式: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 SchoolDatabase
on
(
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 master
go
if exists(select * from sysdatabases where name='SchoolDatabase')
drop database SchoolDatabase
go
Create database SchoolDatabase
go
注意:
创建与删除数据库都需要使用master数据库,否则没有相应的权限
go是批处理脚本中要使用的执行语句
创建数据表
格式: create table 表名 ( 字段名 数据类型 约束 )
注意:当数据库表很多的时候,要先创建 主表 , 再创建 从表 如:创建 学生表(主表)、 成绩表(从表)、 科目表(主表)
use SchoolDatabase 数据表将创建到Student数据库,所以使用use先调用Studentgo
如:创建学生表
if exists(select * from sysobjects where name='student')
drop table student
go
create 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 course
go
create 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 score
go
create table Score
(
s_id char(5), -- 学号
c_id int, -- 课程号
sc_score int check (sc_score>= and sc_score<=100), -- 分数
primary key(s_id,c_id), -- 复合主键
foreign key(s_id) references student, -- 外键 :foreign key , 引用 :references
foreign key(c_id) references course -- 外键
)
go
表数据的基本操作
1 添加
格式:
insert into 表(字段1,字段2,...) values(值1,值2,...) insert into 表 values(值1,值2,...)
注意:
自增标识列不需要添加 有默认值的列可以不添加
给学生表,课程表,成绩表添加测试数据
-- 添加学生记录完整字段
insert into student values('ST001','张三','547896325415874589','男','一班','2021-12-6','123')
-- 添加学生记录部分字段
insert into student(s_id,s_name,s_icn,s_class) values('ST002','李四','896547856321452635','二班')
-- 添加课程记录 含有自增标识列的字段,不需要添加c_id
insert into course values('语文')
insert into course values('数学')
-- 添加成绩记录 向从表添加数据,需要关联主表的值
insert into score values('ST001',1,60)
insert into score values('ST001',2,70)
2 编辑
格式:update 表 set 字段1=值1, 字段2=值2, ..... where 主键=主键值
-- 修改张三的性别
update student set s_sex='女' where s_id='ST001'
-- 修改李四的空值记录
update student set s_sex='男', s_regDate='2016-9-10', s_pwd='123' where s_id='ST002'
-- 修改李四的语文课成绩为85
update score set sc_score = 85 where s_id='ST002' and c_id=1 -- 复合主键都要写入
3 删除
语法:delete from 表 where 主键=主键值
-- 删除所有的学生成绩记录
delete from score
-- 删除张三的记录
delete from student where s_id='ST001'
注意: 删除的顺序:先删除从表再删除主表 区别: 删除表:drop table 表名
相关文章