【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

【SQL server】数据库、数据表的创建_第1张图片

【SQL server】数据库、数据表的创建_第2张图片

查看前1000行:

【SQL server】数据库、数据表的创建_第3张图片

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())--添加时间
)

【SQL server】数据库、数据表的创建_第4张图片

数据类型

  • 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('男'):不填默认就是男。

你可能感兴趣的:(SQL,server,数据库,oracle,sql)