数据库的创建

简介: 数据库的创建

数据库的创建

判断是否已经创建该数据库 使用if语句进行查询

-- 表示注释
-- 创建数据库之前,需要我们判断是否已经存在该数据库
if exists(select * from sys.databases where name ='DBTEST')
  drop database DBTEST
-- 如果已经存在,那么就删除 drop表示删除的含义
-- select * from 表示是从某某表中查找对应的信息
-- select * from xxx(查找的表) where name(列名)='DBTEST'(想要查询的表中的列的指定信息)

创建数据库

create database DBTEST  -- 创建数据库
on --  数据文件
(
  name = 'DBTEST',
  filename = 'D:\SQLcode\DBTEST.mdf', -- 物理路径和名称
  size = 5MB, -- 文件的初始大小
  filegrowth = 2MB
)
log on
(
  name = 'DBTEST_log',
  filename = 'D:\SQLcode\DBTEST_log.ldf', -- 物理路径和名称
  size = 5MB, -- 文件的初始大小
  filegrowth = 2MB
)
create database DBTEST1 -- 简单的写法

数据表的创建

数据库创建成功,接下来创建表,和创建数据库类似,也是先判断是否表已经存在

-- 表的结构
create table 表名
(
  列名1(字段) 数据类型,
    列名2(字段) 数据类型,  -- 在列名之间是有逗号的,最后一个字段是不需要逗号的
    列名3(字段) 数据类型
)
-------创建部门,职级、员工表-------
if exists(select *from sys.objects where name ='表名' and type ='U') -- U表示是我们user使用者创建的
  drop table 表明
-- 上述内容说明,如果是已经存在该表,那么就drop删除

我们创建部门、职级、员工表,在里面展示关键字,限制符,如default,check,unique等

创建部门表

-- 建表(部门,职级,员工)
create table Department
(
  -- 部门编号,primary key表示主键,identity(1,1)表示自动增长,从1,开始,步长位1
    DepartmentId int primary key identity(1,1),
    -- 部门名称  not null 表示该列不能有空值
    DepartmentName nvarchar(10) not null,
    -- 部门描述  text  就是文本,可以存放大量的数据
    DepartmentRemark text
)

char、varchar、nvarchar、text的区别

-- 上述四种数据类型都是可以表示字符的
char 表示的是定长字符,-- char(10)表示十个字节的char,如果存放“abc” 那么所占的字节为10,不变的,在定义char的时候就已经固定
varchar 特点:变长字符串,-- 如果是varchar(10),存放数值为“abc” 那么所占字节为3
n:在char、varchar加上n,构成nchar、nvarchar
  作用:存储unicode字符,对于汉字比较友好(使得汉字只占一个字节)
-- char(10)只能存放10个字符或者是5个汉字
-- nchar(10)可以存放10个字符或者10个汉字
text:就是和文本一样的性质,可以存放大量的数据

创建职级表

-- 创建职级表,因为Rank是一个关键字,所以我们用[]来阔上,
create table [Rank]
(
  -- 职级编号,primary key表示主键,identity(1,1)表示自动增长,从1,开始,步长位1
  ` RankId int primary key identity(1,1),
    -- 职级名称  not null 表示该列不能有空值
    RankName nvarchar(10) not null,
    -- 职级描述  text  就是文本,可以存放大量的数据
    RankRemark text
)

创建员工表

-- 外键的意思是:将其他表中的主键作为我的(该表)的字段(列)
-- 下面People表,将部门id和职级id作为外键,前两id都是部门表和职级表的主键
-- 员工表的外键赋值内容是必须要在外键对应的主键的数值范围内的,比如部门表的部门id有1 2 3,那么就员工表中外键,部门id必须是1 2 3中的一个,否则报错
create table People
(
  PeopleId int primary key identity(1,1),
    DepartmentId int references Department(Department) not null -- 部门(引用外键)部门id references关联到Department表的Department列 实际上是外键,该表填写的   DepartmentId必须是和Department表中DepartmentId有的
    RankId int references [Rank](RankId) not null,-- 职位id,同上,属于外键
    PeopleName nvarchar(10) not null,
    PeopleSex nvarchar(1) default'男'check(PeopleSex = '男' or PeopleSex = '女')
    PeopleBirth smalldatetime not null,-- smalldatetime是范围比datetime小的时间数据单位
    PeopleSalary decimal(12,2) check (PeopleSalary>=1000 and PeopleSalary<=15000), -- 表示浮点数的一个是float 一个是double,另外decimal(12,2)更加精确,表示的是一共12位数,小数点后保留2位
    PeoplePhone varchar(20) unique not null,-- unique表示独一无二,使得这一列数据不能重复
    PeopleAddress varchar(20), -- 地址
    PeopleAddTime smalldatetime default(getdate()) -- 表示,如果没有输入,那就默认是当前时间,getdate()属于内置函数,直接可以使用,表示的是当前时间
)

总结

我们通过本文的学习,会创建一个数据库,会创建数据表,并对于sql语句有一个初步的了解和使用,这是我们本文的目的,我们创建好表格之后,就可以在后序添加、删除、更改数据做准备

本文关键字总结:

1.create(或者drop) database 数据库名
2.create(或者drop) table 数据表名   create和drop相对应,语法一样,分别是创建和删除数据库或者是数据表
3.exists:表示是否存在的意思,用于if语言判断数据库或者数据表是否已经存在
4.primary key :表示是主键
5.identity(1,1)表示自动增长,从1,开始,步长位1
6.not null 表示该列不能有空值
7.text  就是文本,可以存放大量的数据
8.references:表示关联,用于外键
9.default:默认值,表示如果没有输入数据,那就是使用该默认值 如:default'男'
10.check(PeopleSex = '男' or PeopleSex = '女'):check表示为限制在这(范围)内选择输入的数据
11.smalldatetime是范围比datetime小的时间数据单位 前者大概是表示最近百年,后者可以表示范围为上千年
12.表示浮点数的一个是float 一个是double,另外decimal(12,2)更加精确,表示的是一共12位数,小数点后保留2位
13.getdate()相当于C++中的内置函数,直接可以使用,表示的是当前时间


相关文章
|
编解码 缓存 开发工具
Unity跨平台UI解决方案:可能是最全的FairyGUI系列教程-第三天
众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!
1412 0
|
存储 缓存 Android开发
android 读取WebView缓存及清理WebView缓存
1.缓存的分类: 首先要说的一点是缓存的分类,我们缓存的数据分为:页面缓存和数据缓存 页面缓存:加载一个网页时的html、JS、CSS等页面或者资源数据,这些缓存资源是由于浏览器  的行为而产生,开发者只能通过配置HTTP响应头影响浏览器的行为才能间接地影响到这些缓存数据。
4024 0
|
Oracle 关系型数据库 测试技术
|
Java 应用服务中间件 开发工具
苍穹外卖》电商实战项目(java)知识点整理
苍穹外卖》电商实战项目(java)知识点整理
|
存储 编解码 缓存
视频平台技术成本控制的量化方法
在线视频平台为用户提供服务时,面临的一个严重的挑战是,如何保证在为用户提供流畅 且稳定播放服务的前提下,尽量降低整体运营成本。本篇文章将围绕上述问题,重点讨论技术实践中的成本控制手段。
视频平台技术成本控制的量化方法
|
关系型数据库 MySQL 数据安全/隐私保护
Mac 下安装 MySQL 经历
1.使用 homebrew 安装: brew install mysql 结果报错: $ brew install mysql ==> Downloading http://dev.mysql.com/get/Downloads/MySQL-5.
1383 0
|
小程序 数据库 微服务
结合ruoyi-cloud和ruoyi-app实现微信小程序的授权登录
结合ruoyi-cloud和ruoyi-app实现微信小程序的授权登录
1631 0
|
编译器 网络虚拟化 C语言
2023年最全 Windows + VSCode 配置 OpenCV C++ 一站式开发调试环境教程
2023年最全 Windows + VSCode 配置 OpenCV C++ 一站式开发调试环境教程
4086 0
|
消息中间件 存储 大数据
聊一聊几款主流消息队列之间的差异,我们应该如何选择
聊一聊几款主流消息队列之间的差异,我们应该如何选择
1184 2
|
安全 搜索推荐 数据挖掘
陪玩系统源码开发流程解析,成品陪玩系统源码的优点
我们自主开发的多客陪玩系统源码,整合了市面上主流陪玩APP功能,支持二次开发。该系统适用于线上游戏陪玩、语音视频聊天、心理咨询等场景,提供用户注册管理、陪玩者资料库、预约匹配、实时通讯、支付结算、安全隐私保护、客户服务及数据分析等功能,打造综合性社交平台。随着互联网技术发展,陪玩系统正成为游戏爱好者的新宠,改变游戏体验并带来新的商业模式。
1141 1

热门文章

最新文章