• SQL Server 创建表


    切换数据库,判断是否存在

    --切换数据库
    use DBTEST
    
    --判断表是否存在
    --创建的所有表都可以在sys.boject中找到,所以这里在sys.objects中查找是否有名字为department的表并且type为U 即用户生成的表
    if exists(select * from sys.objects where name='department'and type='U') drop table department;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    sys.objects中保存了所有表的各种信息,其中name字段保存的表名,type保存的对象类型;具体字段信息请看☞sys.objects (Transact-SQL)

    创建部门表

    --部门表
    create table department
    (
    --部门编号,主键用于唯一标识不同的数据的
    --identity定义自增起点和自增步长 
    DepartmentId int primary key identity(1,1),
    --部门名字
    --varchar 代表字符型,长度为50
    DepartmentName nvarchar(50),
    --部门描述
    --描述可能会比较长,这里使用text
    DepartmentRemark text
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • primary key: 表示的主键,主键可以唯一地辨别事物的属性。通过主键能够查询出表中一条完整的记录,同时使用主键能防止表中出现重复的记录,避免了数据的冗余。
    • identity(1,1):定义了自增的起点和步长,这里从1开始自增,步长为1,即下一个为2

    在创建DepartmentName时,使用的nvarchar,简单说下char、varchar、nvarchar的区别

    • char: char(10)可以存储十个字节,无论里面存储的数据是否有十个字节都会占用十个字节
    • varchar: varchar(10)最多占用十个字节,如果里面存储2个字节则占用2个字节,最多存放十个字节
    • nvarchar: char varchar text都可以加一个n,代表unicode,表示对中文友好;例如:varchar(100),可以存储100个字母或者50个汉字
      nvarchar(100),可以存储100个字母或者100个汉字

    当文本较长,如几千字节时可以使用text

    创建职级表

    --建职级表
    create table [Rank]`在这里插入代码片`
    (
    RankId int primary key identity(1,1),
    RankName nvarchar(50) not null,
    RankRemark text
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 当想要创建的表名是关键字,可以使用‘[] ’扩起来

    创建员工表

    --员工表
    create table people
    (
    PeopleId int primary key identity(1,1),--员工工号
    DepartmentID int references department(DepartmentId),--部门编号
    RankID int references [Rank](RankId),--员工职级
    PeopleName nvarchar(50) not null,--员工姓名
    PeopleSex nvarchar(1)default('男') check (PeopleSex='男'or PeopleSex='女'),--员工性别
    PeopleBirth smalldatetime not null,--员工生日
    PeopleSalary decimal(12,2) check(PeopleSalary >=1000 and PeopleSalary <=10000000),--员工薪水
    PeoplePhone varchar(20) not null,--员工电话号码(唯一)
    PeopleAddress varchar(300),
    PeopleAddTime smalldatetime default(getdate())--自动记录当前时间
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • DepaermentID和RankID:使用了References 写外键关系,当添加员工的部门信息的时候,只能填写已经存在的部门,使用外来键对DepartmentID进行约束
    • PeopleSex:限制只能输入(男/女) 其他的输入不进去,使用check进行约束,使用default默认设置为‘男’
    • PeopleSalary: sql server中有float但是没有double;这里使用decimal(12,2)去约束PeopleSalary12代表总长度,2代表小数点后两位,使用check对薪水范围进行约束,这里限制在[1000,10000000]
    • PeoplePhone :电话号码是唯一的, 使用Unique(独特的、唯一的) 进行约束
    • PeopleAddTime: 添加此员工信息的时间,这里使用getdate()去自动获取当前的时间

    date、datetime、smalldatetime的区别

    • date :存储年月日,存储范围是从1月1日(0001-01-01)到12月31日(9999-12-31)存储格式为YYYY-MM-DD。
    • datetime 可以存储年月日时分秒;存储范围从1753年1月1日到9999年12月31日,精确到毫秒级,存储格式为YYYY-MM-DD HH:MI:SS[.nnn];占用8个字节的存储空间
    • smalldatetime可以表示的范围更小;存储范围从1900年1月1日到2079年6月6日,精确到分钟级,存储格式为YYYY-MM-DD HH:MI:SS。占用4个字节的存储空间

    创建完成之后

    departme表
    在这里插入图片描述

    people 表
    在这里插入图片描述
    Rank表
    在这里插入图片描述

  • 相关阅读:
    C++函数参数匹配规则
    java设计模式之策略模式
    霍尔效应测试系统的构成部分及其主要特征
    call()、apply()、bind() 区别、使用场景、实现方式
    详细实操分享,下班刷了两小时的搞笑视频,一个月收益7000多
    计算机毕业设计 智慧养老中心管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
    深入理解Spring四大元注解DIRT
    MES管理系统在柔性制造中有何重要作用
    html5新增_webStorage
    【创建型模式】抽象工厂模式
  • 原文地址:https://blog.csdn.net/m0_46288176/article/details/133794788