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: 每列的数据类型,例如int、varchar、date等。constraint: 可选项,用于定义列的规则,如not null、primary key 、foreing key、unique、check、default等。
二、实例说明
现在我们通过建立几个数据表来进行详细的说明
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语句的详细分析和说明:
-
use StudentManageDB: 这条命令指示SQL Server使用名为StudentManageDB的数据库,因为建表通常需要在已经存在的数据库内进行。所有接下来的操作都将在这个数据库上进行。创建数据表在第二节 -
go:GO是一个批处理命令,用于分隔批处理SQL Server语句。SQL Server Management Studio和一些其他SQL界面用它来标识一组一起执行的命令的结束。它不是SQL语句,而是一个命令指令。 -
if exists(select * from sysobjects where name='Students') drop table Students: 这条语句检查名为“Students”的表是否存在于数据库中。如果存在,它会执行drop table Students命令来删除这个表。这样能确保创建新表时不会因为一个同名的表已经存在而出现错误。 -
go: 再次使用GO指令来结束上一批命令。 -
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: 班级编号,是一个整数类型的字段,不允许为空。它建立了一个关联到另一张表(假设为班级信息表)的外键关系。
-
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

-
CSharp int null,这表示
ScoreList表中有一个名为CSharp的列,它的数据类型是int(整数)。null关键字表示这个字段能够存储NULL值,即该字段不是必须的,可以没有值。在数据库中,NULL是一个特殊的标记,表示字段的值是未知的或缺失的。 -
SQLServer int null,
这表示表中有一个名为 SQLServer 的列,其数据类型也是 int。同样的,null 表示这个字段可以接受 NULL 值,即它也是一个可选的字段,不是强制必填的。
-
UpdataTime datetime not null --更新时间这一行定义了一个名为
UpdataTime的列,数据类型为datetime,这意味着该字段将存储日期和时间信息。not null关键字表示这个字段是必须的,必须要有值,不能存储NULL。
要注意SQL中的注释,用双减号--表示。
三、标识列和主键
标识列和主键在数据库中有不同的作用:
-
自动递增:
- 标识列:通常会有一个自动递增的属性,每当插入新的记录时,标识列的值会自动增加,这个过程是自动的,不需要用户输入。
- 主键:没有自动递增的属性,除非它被明确定义为标识列。主键的值可以是手动插入的,比如在使用复合主键或者业务逻辑要求使用特定格式的键值时。
-
唯一性:
- 标识列:虽然标识列的值是唯一的,因为每次插入都会增加,但是标识列本身并不强制唯一性,除非它也被指定为主键。
- 主键:保证了表中每一行的唯一性,这是数据库强制的约束,不允许有两行具有相同的主键值。
-
NULL值:
- 标识列:通常不允许NULL值,因为它旨在为每一行提供一个唯一的标识符。
- 主键:同样不允许NULL值,因为每行都需要有一个明确的标识符来维护数据完整性。
-
显示在查询结果中:
- 标识列:当进行查询操作时,标识列的值会按照插入顺序的递增显示。
- 主键:查询结果中会显示主键字段的值,不一定是递增的,取决于主键值的插入方式。
-
索引:
- 标识列:即使是标识列,也不一定有索引,除非你创建索引或者将其设置为主键。
- 主键:默认会有一个唯一索引,以加快按主键字段的查询和排序操作。
简而言之,标识列在视觉上通常表现为一个按插入顺序递增的数字序列,而主键则是确保每行唯一且不为空的约束条件。如果主键设置为标识列,那么它就同时具备了上述两种属性。
示例:
假设我们有一个用户信息表,我们希望每个用户都有一个唯一的用户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的代码结构。通过将不同的算法封装成不同的策略类,然后在需要的时候动态地切换策略,可以避免使…...
由C++速通Lua
一.变量声明1.与C不同Lua的变量声明不需要声明类型,我们创建了一个变量就相当于声明了它,如:a10,就相当于声明了变量a。2.同时Lua中声明的变量默认都是全局变量,如果想要声明局部变量需要在声明前加上local关键字3.在L…...
卡梅德生物技术快报|多肽库筛选技术构建药物递送功能肽库:流程、算法与质控体
1. 研究背景与问题提出在多肽药物递送系统开发中,功能肽的序列空间巨大,传统逐序列合成与测试方法通量低、成本高、周期长,无法覆盖构象多样性与体内复杂环境。纳米载体蛋白冠、亚细胞器定位困难、多肽稳定性不足等问题,亟需高通量…...
Stateflow实战:构建LKA系统状态机的模块化建模与数据管理
1. 从零理解LKA系统与Stateflow建模 第一次接触车道保持辅助系统(LKA)时,我盯着那个能在高速上自动修正方向的方向盘看了半天。这玩意儿到底怎么判断什么时候该介入?后来才知道,核心就是藏在控制器里的状态机逻辑。Sta…...
Kubernetes Operator开发实战
Kubernetes Operator开发实战 一、Operator概述 Kubernetes Operator是一种软件扩展模式,用于管理复杂的有状态应用。 1.1 Operator模式 ┌──────────────────────────────────────────────────────────…...
从狼群狩猎到参数调优:GWO算法在机器学习超参数搜索中的保姆级指南
从狼群狩猎到参数调优:GWO算法在机器学习超参数搜索中的保姆级指南 在机器学习项目的最后阶段,我们常常会陷入超参数优化的泥潭。网格搜索耗时费力,随机搜索像买彩票,而贝叶斯优化又过于复杂。这时候,一群来自大自然的…...
PIC24F Curiosity开发板实战:从MCC配置到低功耗设计
1. 项目概述与核心价值最近在做一个需要兼顾低功耗和实时控制的小型嵌入式项目,选型时又一次把目光投向了Microchip的PIC24F系列MCU。说实话,对于很多从8位机过渡过来的工程师,或者在校学生、创客爱好者来说,直接上手一款16位单片…...
宏裕塑胶代理新日铁住金日本工程塑料全系列产品服务详解
宏裕塑胶代理新日铁住金系列产品专注于为制造业企业提供高性价比、稳定可靠的通用工程塑料原料,依托源头直采及技术赋能,为塑胶制品厂、汽车零部件厂等客户降低采购成本并保障全流程供应。宏裕塑胶代理新日铁住金核心功能与服务模块覆盖多个维度…...
5分钟快速上手SignTools:自托管iOS应用签名平台完整教程
5分钟快速上手SignTools:自托管iOS应用签名平台完整教程 【免费下载链接】SignTools ✒ A free, self-hosted platform to sideload iOS apps without a computer 项目地址: https://gitcode.com/gh_mirrors/si/SignTools 想要在iOS设备上自由安装第三方应用…...
3步掌握Vidupe:基于内容识别的智能视频去重终极指南
3步掌握Vidupe:基于内容识别的智能视频去重终极指南 【免费下载链接】vidupe Vidupe is a program that can find duplicate and similar video files. V1.211 released on 2019-09-18, Windows exe here: 项目地址: https://gitcode.com/gh_mirrors/vi/vidupe …...
3个核心功能+5个实战技巧:用B站神奇弹幕彻底解放你的直播双手
3个核心功能5个实战技巧:用B站神奇弹幕彻底解放你的直播双手 【免费下载链接】MagicalDanmaku 本仓库及所有相关项目已永久停止开发、维护和任何形式的分发。 项目地址: https://gitcode.com/gh_mirrors/bi/MagicalDanmaku 你是否还在直播时手忙脚乱地回复弹…...
