【SQL server】数据库、数据表的创建
创建数据库
--如果存在就删除
--所有的数据库都存在sys.databases当中
if exists(select * from sys.databases where name = 'DBTEST')
drop database DBTEST
--创建数据库
else
create database DBTEST
on --数据文件
(
name='DBTEST',--逻辑名称 字符串用单引号
filename='D:\DATA\DBTEST.mdf',--物理路径和名称
size=5MB,--文件的初始大小
filegrowth=2mb--文件增长大小,也可以写百分比
)
log on --日志文件
(
name='DBTEST_log',--逻辑名称 字符串用单引号
filename='D:\DATA\DBTEST_log.ldf',--物理路径和名称
size=5MB,--文件的初始大小
filegrowth=2mb--文件增长大小,也可以写百分比
)
--创建数据库简写
create database DBTEST1 --数据库的数据文件和日志文件会为默认值
sys.databases路径:系统数据库 -> master -> 视图 -> 系统视图 -> sys.databases
查看前1000行:
if exists(select * from sys.databases where name = 'DBTEST')
drop database DBTEST
如果DBTEST
数据库存在,那么就删除(drop)掉这个数据库。
创建数据表
--切换数据库
use DBTEST
--创建表的基本语法
--create table 表名
--(
--)
--判断表是否存在
if exists(select * from sys.objects where name='Department'and type='U')
drop table Department
--建表(部门、职级、员工)
create table Department --部门表
(
--需要的字段
--主键,唯一标识,不能重复,identity(1,1):自动增长,初始值,增长的步长
DepartmentID int primary key identity(1,1),
DepartmenName nvarchar(50) not null, --最多能个存50个字,不能为null
DepartmentRemark text --部门描述
)
--Rank是一个关键字,可以使用[ ]括起来
create table [Rank] --部门表
(
--需要的字段
--主键,唯一标识,不能重复,identity(1,1):自动增长,初始值,增长的步长
RankID int primary key identity(1,1),
RankName nvarchar(50) not null, --最多能个存50个字,不能为null
RankRemark text --部门描述
)
--char:定长,char(10),里面可以存储10个字节,存了3个字节,也占用10个字节
--varchar:变长,varchar(10)最多占用10个字节,11个存不进去
--text:长文本
--前面加一个n标识存储的unicode字符,nchar,nvarchar,ntext
--对中文更加友好
--varchar(100):存储100个字母或者50个汉字
--nvarchar(100):存储100个字母或者100个汉字
--员工
create table People
(
--需要的字段
--主键,唯一标识,不能重复,identity(1,1):自动增长,初始值,增长的步长
DepartmentId int references Department(DepartmentId) not null, --外键,部门
RankId int references [Rank](RankId) not null,--职级,引用外键
PeopleID int primary key identity(1,1),
PeopleName nvarchar(50) not null, --最多能个存50个字,不能为null
PeopleSex nvarchar(1) default('男') check(PeopleSex='男'or PeopleSex='女'),
PeopleBrith smalldatetime not null, --data:年月日,datatime:年月日时分秒,smalldatetime:最近的一段时间的时间,占用空间也会更小
PeopleSalary decimal(12,2) check(PeopleSalary>=1000 and PeopleSalary<=1000000)not null,
PeoplePhone varchar(20) unique not null,--unique:这个数据是唯一的
PeopleAddress nvarchar(300),
PeopleAddTime smalldatetime default(getdate())--添加时间
)
数据类型
- char:定长,char(10),里面可以存储10个字节,存了3个字节,也占用10个字节
- varchar:变长,varchar(10)最多占用10个字节,11个存不进去
- text:长文本
- 前面加一个n标识存储的unicode字符,nchar,nvarchar,ntext
- 对中文更加友好
- varchar(100):存储100个字母或者50个汉字
- nvarchar(100):存储100个字母或者100个汉字
- data:只包括年月日
- datetime:包括了年月日时分秒
- smalldatetime:最近的年月日
- decimal(12,2):整数占12位,小数2位
check(PeopleSalary>=1000 and PeopleSalary<=1000000)
,检查PeopleSalary>=1000并且PeopleSalary<=1000000
。
primary key
:主键
references Department(DepartmentId)
:是指定了一个外键约束,将另一个表中的特定字段(DepartmentId)与本表的某个字段进行关联。
default('男')
:不填默认就是男。