SQL Server Management Studio创建数据表

这篇具有很好参考价值的文章主要介绍了SQL Server Management Studio创建数据表。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、建表注意事项

1.1 数据类型

可以看这个去了解数据类型:

1.2 建立数据表的基本SQL语法

建立数据表的基本 SQL 语法如下:

creat table table_name (
  column1 datatype [constraint],
  column2 datatype [constraint],
  column3 datatype [constraint],
  ...
);

这里是各部分的详细说明:

  • create table : 这是一个 SQL 命令,用于创建新表。
  • table_name: 所创建的表的名称。
  • column1, column2, column3, … : 这些是你想在表中创建的列的名称。
  • datatype: 每列的数据类型,例如 intvarchardate 等。
  • constraint: 可选项,用于定义列的规则,如 not null、 primary key 、foreing key、uniquecheckdefault 等。

二、实例说明

现在我们通过建立几个数据表来进行详细的说明

2.1 创建数据表

use StudentManageDB
go
if exists(select * from sysobjects where name='Students')
drop table Students 
go
create table Students
(	
   StudentID int identity(10000,1),--学号
   StudentName varchar(20)not null,--姓名
   Gender char(2) not null,--性别
   Birthday datetime not null,--出生日期
   StudentIdNo numeric(18,0)not null,--身份证号
   Age int not null,--年龄
   PhoneNumber varchar(50),
   StudentAddress varchar(500),
   ClassId int not null --班级
)
go

这段SQL语句在SQL Server数据库中创建一个新的数据表名为“Students”,用于存储学生信息。下面是这段SQL语句的详细分析和说明:

  1. use StudentManageDB: 这条命令指示SQL Server使用名为StudentManageDB的数据库,因为建表通常需要在已经存在的数据库内进行。所有接下来的操作都将在这个数据库上进行。创建数据表在第二节

  2. go: GO是一个批处理命令,用于分隔批处理SQL Server语句。SQL Server Management Studio和一些其他SQL界面用它来标识一组一起执行的命令的结束。它不是SQL语句,而是一个命令指令。

  3. if exists(select * from sysobjects where name='Students') drop table Students: 这条语句检查名为“Students”的表是否存在于数据库中。如果存在,它会执行drop table Students命令来删除这个表。这样能确保创建新表时不会因为一个同名的表已经存在而出现错误。

  4. go: 再次使用GO指令来结束上一批命令。

  5. create table Students: 这条命令开始创建一个新的表“Students”。表中包含以下字段:

    • StudentID: 学号,设定为自动增长的整数类型。identity是标识列(后面讲),起始值为10000,每次新增一条记录,ID值增加1。看数据类型点这个
    • StudentName: 学生的姓名,它是一个变长字符串(varchar),最多可包含20个字符,并且不允许为空(not null)。
    • Gender: 性别,设定为固定长度为2的字符类型(char),不允许为空。
    • Birthday: 出生日期,使用datetime类型来存储日期和时间数据,不允许为空。
    • StudentIdNo: 学生的身份证号码,它是一个数值型字段(numeric),最多18位数字,没有小数位,并且不允许为空。
    • Age: 学生的年龄,是一个整数类型的字段,不允许为空。
    • PhoneNumber: 学生的联系电话,是一个变长字符串,最多可以包含50个字符。
    • StudentAddress: 学生的地址,是一个更长的变长字符串,最多可包含500个字符。
    • ClassId: 班级编号,是一个整数类型的字段,不允许为空。它建立了一个关联到另一张表(假设为班级信息表)的外键关系。
  6. go: 这条指令结束了创建表的命令批次。

2.2 实例2

if exists(select * from sysobjects where name='ScoreList')
drop table ScoreList
go
create table ScoreList
(
  Id int identity(1,1)primary key,
  StudentId int not null,--学号外键
  CSharp int null,
  SQLServer int null,
  UpdataTime datetime not null  --更新时间
   )
go

首先,在SQL 脚本中,Id 列被直接定义为主键。

  Id int identity(1,1) primary key,

在这行中,Id 列的定义包含了关键词 primary key,这明确地将 Id 列设置为 ScoreList 表的主键。因此,每当向 ScoreList 表插入新记录时,Id 列将自动增加(从1开始,每次增加1),并且保证每一条记录的 Id 值都是唯一的。

identity(1,1) 部分是 SQL Server 特有的语法,它指定 Id 列是一个自动增长的标识列,起始值为1,每次新增记录时自动增长的步长也是1。

我们可以查看创建的数据表:
SQL Server Management Studio创建数据表,oracle,数据库
把第一行填完后使用Enter键,自动生成1
SQL Server Management Studio创建数据表,oracle,数据库

  1. CSharp int null,

    这表示 ScoreList 表中有一个名为 CSharp 的列,它的数据类型是 int(整数)。null 关键字表示这个字段能够存储 NULL 值,即该字段不是必须的,可以没有值。在数据库中,NULL 是一个特殊的标记,表示字段的值是未知的或缺失的。

  2. SQLServer int null,

这表示表中有一个名为 SQLServer 的列,其数据类型也是 int。同样的,null 表示这个字段可以接受 NULL 值,即它也是一个可选的字段,不是强制必填的。

  1. UpdataTime datetime not null --更新时间

    这一行定义了一个名为 UpdataTime 的列,数据类型为 datetime,这意味着该字段将存储日期和时间信息。not null 关键字表示这个字段是必须的,必须要有值,不能存储 NULL
    要注意SQL中的注释,用双减号 -- 表示。

三、标识列和主键

标识列和主键在数据库中有不同的作用:

  1. 自动递增

    • 标识列:通常会有一个自动递增的属性,每当插入新的记录时,标识列的值会自动增加,这个过程是自动的,不需要用户输入。
    • 主键:没有自动递增的属性,除非它被明确定义为标识列。主键的值可以是手动插入的,比如在使用复合主键或者业务逻辑要求使用特定格式的键值时。
  2. 唯一性

    • 标识列:虽然标识列的值是唯一的,因为每次插入都会增加,但是标识列本身并不强制唯一性,除非它也被指定为主键。
    • 主键:保证了表中每一行的唯一性,这是数据库强制的约束,不允许有两行具有相同的主键值。
  3. NULL值

    • 标识列:通常不允许NULL值,因为它旨在为每一行提供一个唯一的标识符。
    • 主键:同样不允许NULL值,因为每行都需要有一个明确的标识符来维护数据完整性。
  4. 显示在查询结果中

    • 标识列:当进行查询操作时,标识列的值会按照插入顺序的递增显示。
    • 主键:查询结果中会显示主键字段的值,不一定是递增的,取决于主键值的插入方式。
  5. 索引

    • 标识列:即使是标识列,也不一定有索引,除非你创建索引或者将其设置为主键。
    • 主键:默认会有一个唯一索引,以加快按主键字段的查询和排序操作。

简而言之,标识列在视觉上通常表现为一个按插入顺序递增的数字序列,而主键则是确保每行唯一且不为空的约束条件。如果主键设置为标识列,那么它就同时具备了上述两种属性。

示例:

假设我们有一个用户信息表,我们希望每个用户都有一个唯一的用户ID,并且我们希望数据库能够在新增用户记录时自动为每个用户生成这个ID。

这是创建这样一个表的SQL语句示例:

create table Users (
    UserID int identity(1,1) primary key,
    Username varchar(255) not null ,
    Email varchar(255) not null
);

在这个例子中:

  • UserID 是一个标识列,因为它具有 identity(1,1) 属性。这意味着每次插入新行时,UserID 会从1开始自动递增。
  • UserID 同时也是主键,如 primary key 关键词所定义的。这确保了 UserID 的值在表中是唯一的,而且每个用户都会有一个唯一的标识符。

在这种情况下,UserID 字段既是标识列(保证每个用户有一个自动分配、递增的唯一ID)又是主键(保证每行数据的唯一性并且不允许空值)。然而,并非所有主键都是标识列。你可以有一个主键而没有自动递增的特性,特别是当主键为复合主键时,由多个列组合成时,通常不会使用标识列。文章来源地址https://www.toymoban.com/news/detail-798402.html

到了这里,关于SQL Server Management Studio创建数据表的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SQL Server多数据表之间的数据查询和分组查询

    在SQL中,多数据表之间的查询主要用于以下方面: 在SQL Server中,多数据表之间的数据查询主要用于以下几个方面: 关联数据提取 :现代数据库通常将数据分散在多个相关的表中以便于管理。例如,订单信息可能存储在一个表中,而客户信息可能存储在另一个表中。为了获取

    2024年01月24日
    浏览(42)
  • 【数据库数据恢复】SQL Server数据表结构损坏的数据恢复案例

    数据库故障分析: SQL server数据库数据无法读取。 经过初检,发现SQL server数据库文件无法被读取的原因是因为底层File Record被截断为0,无法找到文件开头,数据表结构损坏。镜像文件的前面几十M空间和中间一部分空间被覆盖掉,系统表损坏,无法读取。考虑用自动备份文件

    2024年02月11日
    浏览(44)
  • SQL Server 数据表模糊查询(like 用法)以及查询函数

    在SQL Server Management Studio (SSMS) 中,进行模糊查询主要是通过使用 like 操作符来实现的。 like 操作符用于在 where 语句中搜索列中具有指定模式的数据。 我们在简单例子中来了解: % 通配符:表示任意数量的字符。 这个例子会选择 column_name 列中包含\\\"pattern\\\"这个词的所有记录,就

    2024年01月22日
    浏览(56)
  • 如何将Excel数据导入到MS SQL Server已定义的数据表中

    1. 前提:已经在SQL Server中定义了所要导入数据的表(如stock,salvaging和out_stock三张表)的结构。 2. 如图,选择要导入数据的数据库(例如dlqx数据库),右键-任务-导入数据。  2. 进入向导后,点击“下一步”。  3. (1)选择 数据源 ,这里选择Microsoft Excel,如图所示 (2)点击

    2024年02月04日
    浏览(29)
  • SQL SERVER 中将数据表中的字段按分隔符分成多行多列

     SQL SERVER 中将数据表中的字段按分隔符分成多行多列_sql按逗号拆分列为多行_帅气的苹果果的博客-CSDN博客      

    2024年02月07日
    浏览(40)
  • SQL Server基础 第三章 数据表基本操作(增删改查,不允许保存更改异常!)

    往表里插数据我们现在有两种方式 第一种是编辑直接修改,第二种是通过查询来修改数据 两种方法的区别 第一种更直接,如果数据量小那么直接改就好了,那如果数据量稍微庞大我们就需要用新建查询来进行表内容的修改了!!!!!!! 只需要新建查询,然后新的查询文

    2023年04月26日
    浏览(37)
  • 【postgresql 基础入门】数据表的创建,永久数据放普通表,中间结果放临时表,附带信用卡业务案例SQL设计

    ​ 专栏内容 : postgresql内核源码分析 手写数据库toadb 并发编程 ​ 开源贡献 : toadb开源库 个人主页 :我的主页 管理社区 :开源数据库 座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物. 入门准备 postgrersql基础架构 快速使用 初始化集群 数据库服务管理 psql客户

    2024年02月07日
    浏览(36)
  • SQL Server Management Studio (SSMS) 备份数据库

    之前的文章记录过如何使用sqlserver复制远程数据库到本地。这里补充下如何使用SQL Server Management Studio (SSMS) 备份。 传送门:sqlserver复制远程数据库到本地 在 SQL Server Management Studio (SSMS) 中备份数据库,可以按照以下步骤操作: 打开 SQL Server Management Studio (SSMS)。 连接到你要备

    2024年01月17日
    浏览(38)
  • 数据库实验2 创建数据表修改数据表和删除数据表

    实验2 创建数据表修改数据表和删除数据表 实验类型: ●验证性实验  ○综合性实验  ○设计性实验 实验目的:      (1)了解数据表的结构特点。      (2)掌握表中列定义时所用到的各种数据类型。      (3)学会使用企业管理器(即MSSMS-----Microsoft SQL Server Manag

    2024年02月07日
    浏览(52)
  • 实现一个MYSQL工具类,包含判断创建数据表是否存在,创建数据表

    可以使用Python的MySQLdb模块来实现一个MYSQL工具类。下面是一个简单的实现示例: 使用示例: 在上面的示例中,我们首先创建了一个MySQLTool类,并在初始化方法中传入了数据库的连接信息。然后使用connect方法连接到数据库。 table_exists方法用于判断给定的数据表是否存在,它执

    2024年01月15日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包