当前位置: 首页 > news >正文

SQL Server Management Studio创建数据表

文章目录

  • 一、建表注意事项
    • 1.1 数据类型
    • 1.2 建立数据表的基本SQL语法
  • 二、实例说明
    • 2.1 创建数据表
    • 2.2 实例2
  • 三、标识列和主键
      • 示例:

一、建表注意事项

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。

我们可以查看创建的数据表:
在这里插入图片描述
把第一行填完后使用Enter键,自动生成1
在这里插入图片描述

  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)又是主键(保证每行数据的唯一性并且不允许空值)。然而,并非所有主键都是标识列。你可以有一个主键而没有自动递增的特性,特别是当主键为复合主键时,由多个列组合成时,通常不会使用标识列。

相关文章:

SQL Server Management Studio创建数据表

文章目录 一、建表注意事项1.1 数据类型1.2 建立数据表的基本SQL语法 二、实例说明2.1 创建数据表2.2 实例2 三、标识列和主键示例: 一、建表注意事项 1.1 数据类型 可以看这个去了解数据类型: 1.2 建立数据表的基本SQL语法 建立数据表的基本 SQL 语…...

【AI的未来 - AI Agent系列】【MetaGPT】4.1 细说我在ActionNode实战中踩的那些坑

文章目录 1. MetaGPT 0.5.2 版本的坑1.1 坑一:cannot import name "ActionNode" from "metagpt.actions.action"1.2 坑二:simple_fill 没有参数 schema1.3 坑三:ActionNode一直在循环执行, 2. 升级成 MetaGP…...

Android学习(五):常用控件

Android学习(五):常用控件 常用控件 TextViewEditTextButtonRadioButtonImageView 1、TextView控件 1.1、简介 TextView是用于显示文字(字符串)的控件,可在代码中通过设置属性改变文字的大小、颜色、样式等功能。 1.2、示例…...

基于YOLOv8的学生课堂行为检测,引入BRA注意力和Shape IoU改进提升检测能力

💡💡💡本文摘要:介绍了学生课堂行为检测,并使用YOLOv8进行训练模型,以及引入BRA注意力和最新的Shape IoU提升检测能力 1.SCB介绍 摘要:利用深度学习方法自动检测学生的课堂行为是分析学生课堂表…...

【前后端分离与不分离的区别】

Web 应用的开发主要有两种模式: 前后端不分离 前后端分离 理解它们的区别有助于我们进行对应产品的测试工作。 前后端不分离 在早期,Web 应用开发主要采用前后端不分离的方式,它是以后端直接渲染模板完成响应为主的一种开发模式。以前后端不…...

ubuntu-20.04.6-live-server-amd64安装教程-完整版

简介 Ubuntu 20.04.6 Live Server AMD64 安装教程 - 完整版" 提供了详细的指南,旨在帮助用户在使用 AMD64 架构的服务器上安装 Ubuntu 20.04.6 Live Server 版本。该教程包含全面的步骤和详细说明,使用户能够顺利完成整个安装过程,建立…...

C for Graphic:Sliced Circle Image

不做UI不知道,没想到时至今日,ugui居然没有sliced filled image模式,用circle做filled,不能用sliced九宫格图,导致每次使用这个效果必须一张新图,何其浪费资源。 原始功能如下: 我…...

入门级的 DataV 教程,适用于 Vue 2

入门级的 DataV 教程,适用于 Vue 2。这个教程将指导您创建一个名为 datav-project 的 Vue 项目,并展示如何在其中使用 DataV。我们将从安装 Vue CLI 开始,然后创建项目,接着添加 DataV,并最后显示一个简单的数据可视化…...

JVM工作原理与实战(二十一):内存管理

专栏导航 JVM工作原理与实战 RabbitMQ入门指南 从零开始了解大数据 目录 专栏导航 前言 一、不同语言的内存管理 1.C/C的内存管理 2.Java的内存管理 二、垃圾回收的对比 1.自动垃圾回收与手动垃圾回收的对比 2.优点与缺点 总结 前言 JVM作为Java程序的运行环境&#…...

Win10 打开文件突然鼠标变成一个蓝色大圈卡住点不了也打不开文件,重启电脑也是这样

环境: Win10 专业版 加密客户端环境 问题描述: Win10 打开桌面word文件突然鼠标变成一个蓝色大圈卡住点不了也打不开文件,重启电脑也是这样,只有蓝色圈变大没有鼠标指针出现圈卡着不会动,和那些有鼠标箭头加小蓝色圈不一样 解决方案: 某网上查看的,还是要自己排查…...

论文阅读笔记AI篇 —— Transformer模型理论+实战 (四)

论文阅读笔记AI篇 —— Transformer模型理论实战 (四) 一、理论1.1 理论研读1.2 什么是AI Agent? 二、实战2.1 先导知识2.1.1 tensor的创建与使用2.1.2 PyTorch的模块2.1.2.1 torch.nn.Module类的继承与使用2.1.2.2 torch.nn.Linear类 2.2 Transformer代…...

Template -- Vue2

Vue2 版本 Node 14.14.0Npm 6.14.8Vue vue/cli 5.0.3 npm install -g vue/cli5.0.3 cnpm cnpm7.1.0 npm install -g cnpm7.1.0 --registryhttps://registry.npm.taobao.org 项目 创建 vue create single # vue 2.6.14配置 // vue.config.js const { defineConfi…...

zookeeper window 安装

下载 Apache ZooKeeper 解压Zookeeper安装包到指定目录,注意目录不要有空格。 备份zoo_sample.cfg并改名zoo.cfg 注意:此处的路径一定要使用双斜杠" \\ " D:\\apache-zookeeper-3.8.3-bin\\data 新建环境变量:ZOOKEEPER_HOME D…...

Redis 面试题 | 02.精选Redis高频面试题

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…...

大数据开发之kafka(完整版)

第 1 章:Kafka概述 1.1 定义 Kafka是一个分布式的基于发布/订阅模式的消息队列,主要应用于大数据实时处理领域。 发布/订阅:消息的发布者不会将消息直接发送给特定的订阅者,而是将发布的消息分为不同的类别,订阅者只…...

单体架构、微服务和无服务器架构

前言 在这篇文章中,我将演示在决定使用单体架构、微服务架构和无服务器架构时的权衡的简化心智模型。目标是突显每种风格的固有优势和缺陷,并提供关于何时选择哪种架构风格的指导。 单体架构 对于小团队或项目来说是理想的入门架构。它简单易上手&…...

Github仓库使用方式

主要参考: 「详细教程」使用git将本地项目上传至Github仓库(MacOS为例)_github上传代码到仓库-CSDN博客 新建文件夹参考: GitHub使用指南——建立仓库、建立文件夹、上传图片详细教程-CSDN博客 一、新建一个 github 仓库&#…...

Harmony Ble蓝牙App(四)描述符

Harmony Ble蓝牙App(四)描述符 前言正文一、优化二、描述① 概念② 描述提供者③ 显示描述符 三、源码 前言 上一篇中了解了特性和属性,同时显示设备蓝牙服务下的特性和属性,本文中就需要来使用这些特性和属性来完成一些功能。 正…...

C# 实现单线程异步互斥锁

文章目录 前言一、异步互斥锁的作用是什么?示例一、创建和销毁 二、如何实现?1、标识(1)标识是否锁住(2)加锁(3)解锁 2、异步通知(1)创建对象(2&a…...

Java设计模式中策略模式可以解决许多if-else的代码结构吗? 是否能满足开闭原则?

Java设计模式中策略模式可以解决许多if-else的代码结构吗? 是否能满足开闭原则? 是的,策略模式可以帮助解决许多if-else的代码结构。通过将不同的算法封装成不同的策略类,然后在需要的时候动态地切换策略,可以避免使…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...

测试markdown--肇兴

day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...

Robots.txt 文件

什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...

使用Spring AI和MCP协议构建图片搜索服务

目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式&#xff08;本地调用&#xff09; SSE模式&#xff08;远程调用&#xff09; 4. 注册工具提…...