数据库的创建

简介: 数据库的创建

数据库的创建

判断是否已经创建该数据库 使用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++中的内置函数,直接可以使用,表示的是当前时间


相关文章
|
开发工具 git
Git添加子模块(submodule)
Git添加子模块(submodule)
955 0
|
小程序 数据库 微服务
结合ruoyi-cloud和ruoyi-app实现微信小程序的授权登录
结合ruoyi-cloud和ruoyi-app实现微信小程序的授权登录
1286 0
|
存储 编解码 缓存
视频平台技术成本控制的量化方法
在线视频平台为用户提供服务时,面临的一个严重的挑战是,如何保证在为用户提供流畅 且稳定播放服务的前提下,尽量降低整体运营成本。本篇文章将围绕上述问题,重点讨论技术实践中的成本控制手段。
视频平台技术成本控制的量化方法
|
存储 缓存 Android开发
android 读取WebView缓存及清理WebView缓存
1.缓存的分类: 首先要说的一点是缓存的分类,我们缓存的数据分为:页面缓存和数据缓存 页面缓存:加载一个网页时的html、JS、CSS等页面或者资源数据,这些缓存资源是由于浏览器  的行为而产生,开发者只能通过配置HTTP响应头影响浏览器的行为才能间接地影响到这些缓存数据。
3521 0
|
9月前
|
人工智能 小程序 算法
【01】AI制作音乐之三款AI音乐软件推荐,包含AI编曲-AI伴奏-AI混音合成remix等-其次关于音乐版权的阐述-跟随卓伊凡学习如何AI制作音乐-优雅草卓伊凡
【01】AI制作音乐之三款AI音乐软件推荐,包含AI编曲-AI伴奏-AI混音合成remix等-其次关于音乐版权的阐述-跟随卓伊凡学习如何AI制作音乐-优雅草卓伊凡
1639 14
|
12月前
|
安全 搜索推荐 数据挖掘
陪玩系统源码开发流程解析,成品陪玩系统源码的优点
我们自主开发的多客陪玩系统源码,整合了市面上主流陪玩APP功能,支持二次开发。该系统适用于线上游戏陪玩、语音视频聊天、心理咨询等场景,提供用户注册管理、陪玩者资料库、预约匹配、实时通讯、支付结算、安全隐私保护、客户服务及数据分析等功能,打造综合性社交平台。随着互联网技术发展,陪玩系统正成为游戏爱好者的新宠,改变游戏体验并带来新的商业模式。
861 1
|
存储 监控 安全
保护Active Directory:备份和恢复的重要性及实施指南
ManageEngine的ADSelfServicePlus现在支持离线多因素身份验证,确保即使在无网络连接时也能保护企业数据。这增强了远程工作的安全性,符合国防、医疗和金融等行业的合规要求。
164 2
|
存储 负载均衡 Java
Jetty技术深度解析及其在Java中的实战应用
【9月更文挑战第3天】Jetty,作为一款开源的、轻量级、高性能的Java Web服务器和Servlet容器,自1995年问世以来,凭借其卓越的性能、灵活的配置和丰富的扩展功能,在Java Web应用开发中占据了举足轻重的地位。本文将详细介绍Jetty的背景、核心功能点以及在Java中的实战应用,帮助开发者更好地理解和利用Jetty构建高效、可靠的Web服务。
893 2
|
JavaScript
Electron——如何使用nodejs工作线程
Electron——如何使用nodejs工作线程
269 4
|
XML Android开发 数据格式
Android实战经验之Kotlin中快速实现动态更改应用图标和名称
本文介绍在Android中通过设置多个活动别名动态更改应用图标和名称的方法,涉及XML配置及Kotlin代码示例。
495 10