数据库表的管理

news2025/1/30 15:57:01

  表的基本概念

        表是包含数据库中所有数据的数据库对象。数据在表中的组织方式与在电子表格中相似,都是 按行和列的格式组织的。每行代表一条唯一的记录,每列代表记录中的一个字段。例如,在包含公 司员工信息的表中,每行代表一名员工,各列分别代表该员工的信息,如编号、姓名、身份证号、 职务,出生日期、基本工资等。

3aae6811506540fca2bb1b103102d0fa.png

 

SQL Server 中的表包括下列主要组件

>列:每列代表由表建模的对象的某个属性。例如,员工表有编号列、姓名列和职务列等。

>行:每行代表由表建模的对象的一个单独的实例。例如,公司每名员工在表中均占一行。

 

数据完整性

        数据完整性是指数据的精确性和可靠性,它是为防止数据库中存在不符合语义规定的数据和防止因错误信息的输入/输出造成无效操作或错误信息而提出的,它分为以下四类。

1.实体完整性

        实体完整性将行定义为特定表的唯一实体。实体完整性通过UNOUE(唯一)索引.UNIQUE约束 或PRIMARY KEY(主键)约束,强制表的标识列或主键的完整性。

2.域完整性

        域完整性指特定列的项的有效性。可以强制域完整性限制类型(通过使用数据类型)、限制格式 (通过使用CHECK约束和规则)或限制可能值的范围(通过使用FOREIGN KEY约束、CHECK约束、 DEFAULT 定义、NOT NULL定义和规则)。

3.引用完整性

        输入或删除行时,引用完整性保留表之间定义的关系。在 SQL Server中,引用完整性通过 FOREIGNKEY(外键)和CHECK(检查)约束,以外键与主键之间或外键与唯一键之间的关系为基础。 引用完整性确保键值在所有表中一致。这类一致性要求不引用不存在的值,如果一个键值发生更改, 则整个数据库中对该键值的所有引用都要进行一致的更改。

        强制引用完整性时,SQL Server将防止用户执行下列操作。

        >在主表中没有关联行的情况下在相关表中添加或更改行。

        >在主表中更改值(可导致相关表中出现孤立行)。

        >在有匹配的相关行的情况下删除主表中的行。

4.用户定义完整性

        用户定义完整性可以定义不属于其他任何完整性类别的特定业务规则。所有完整性类别都支持 用户定义完整性,这包括CREATE TABLE 中所有列级约束和表级约束、存储过程及触发器。

 

主键

        主键唯一标识表中的行数据,一个主键值对应一行数据。主键由一个或多个字段组成,其值具 有唯一性,而且不允许取空值(NULL),一个表只能有一个主键。

        如果主键由多个列组成,则其中一个列将允许重复值,但是主键中所有列的值的各种组合必须是唯一的。

        定义主键可以对在不允许空值的指定列中输入的值强制其唯一性。如果为数据库中的某个表定 义了主键,则可将该表与其他表相关联,从而减少对冗余数据的需求。

数据类型

数据类型是数据的一种属性,用于指定对象可保存的数据的类型,如整数数据、字符数据、货 币数据、日期和时间数据、字符串等。

        >SQL Server提供系统数据类型集,该类型集定义了可与SOL Server一起使用的所有数据类型。

        >SQL Server 中的数据类型可以归纳为下列类别:精准数字、近似数字、日期和时间、字符串、 Unicode 字符串、二进制字符串、其他数据类型。下面分别对一些常见的数据类型进行介绍。

精准数字可以分为九种数据类型

669be780b3e1438f8d7b9f3b52e6ae15.png

 

近似数字可以分为两种数据类型 

881cf42abc0c4af895a9be83cfae9a9b.png

 

日期和时间可以分为六种数据类型 

3cddba02897348d5b4c8a3f07ddf6542.png

字符串可以分为三种数据类型 

63aeba870da1450d96d7b3694eccc18e.png

Unicode字符串可以分为三种数据类型

f03073a00eb04c4d9be6cc679e9ca99b.png

二进制字符串可以分为三种数据类型 

4a399754371a4485b74b14de35554cad.png

默认值 

        如果插入行时没有为列指定值,则该列使用默认值。默认值可以是计算结果为常量的任何值, 如常量、内置函数或数学表达式。

        对于表中的每个列,可以指定当用户将该列保留为空白时将在该列中输入的默认值。如果没有 分配默认值,并将该列保留为空白,则:

>如果设置了允许空值的选项,则将向该列中插入NULL。

> 如果没有设置允许空值的选项,则该列将保持空白,但在用户为该列提供值之前,它们将无法保存行。

标识列

        对于每个表,均可创建一个包含系统生成的序号值的标识列,该序号值以唯一方式标识表中的 每行。例如,当在表中插入行时,标识列可自动为应用程序生成唯一的客户回执编号。标识列在其 所定义的表中包含的值通常是唯一的。

        可以使用标识列在表中创建自动递增标识号,所以标识列习惯上又叫自增列,只能为每个表创 建一个标识列。 标识列具有以下三种特点。

     >列的数据类型为不带小数的数值类型。

     >在进行插入(Insert)操作时,该列的值由系统按一定规律生成,不允许空值。

     >列值不重复,具有标识表中每行的作用,每个表只能有一个标识列。

 

创建一个标识列,通常要指定以下三个内容。
 >类型(Type):在SOL Server 2008中,标识列类型必须是数值类型,如decimal、int、numeric. smallint、bigint、tinyint。其中要注意的是,当选择decimal和numeric时,小数位数必须为 零。另外还要注意每种数据类型所表示的数值范围。

>种子(Seed):指派给表中第一行的值,默认为1。

>递增量(Increment):相邻两个标识值之间的增量,默认为1。

 

检查约束

        通过限制列可接受的值,CHECK约束可以强制域的完整性。此类约束类似于FOREIGNKEY约束, 因为可以控制放入列中的值。但是,它们在确定有效值的方式上有所不同:FOREIGNKEY约束从其他 表获得有效值列表,而CHECK约束通过不基于其他列中的数据的逻辑表达式确定有效值。

        可以通过任何基于逻辑运算符返回True 或False的逻辑(布尔)表达式创建 CHECK约束。 

        例如,可以通过创建CHECK约束将age列中值的范围限制为0~150之间的数据,以防止输入的年龄值超出正常的年龄范围。

                逻辑表达式为  “age >=0 and age <=150”

 

视图模式管理表

创建表

        下面将介绍使用SSMS创建数据表的步骤。

案例:某公司需要在名为“class”的数据库中创建表,表名称为"employee”,其中包含列为 编号(int)、姓名(nvarchar(50))、身份证号(varchar(18)).职务(nvarchar(50)).基本工资(money). 备注(nvarchar(2000))。其中,编号自动生成,从1开始,每增加一人则其编号自动加1:要 求输入基本工资的时候,其值必须为0~100000,设置身份证号列为主键。

具体操作步骤如下所述。

(1)打开SSMS,然后展开数据库,右击“表”节点,在弹出的快捷菜单中选择“新建”→ “表”命令。

7741b7309a5f43de976e111e05f58655.png

 

(2)输入第一列的列名为“编号”,数据类型设置为“int",保持“允许NUll值”复选框为默认 的选中状态。

cd387a3ec5d24165a1587238ebeb1856.png

(3)为该列设置标识规范。在“列属性”选项卡中,将“(是标识)”的值改为“是”,“标识增量”和“标识种子”分别设置为“1”,可以发现表的“编号”列的“允许NUll值”复选框被自动清 空,说明标识列自动增量,系统不允许其出现空值。

51855e15dcfb4b008045fa621529f669.png

 (4)分别新建列“姓名”“身份证号”“职务”“基本工资”“备注”。

0c608d2c959b49338e9582cb99055183.png

(5)由于要求输入基本工资的时候,其值必须为0~100000.因此可以在“基本工资”列设置 CHECK约束,即右击“基本工资”,在弹出的快捷菜单中选择“CHECK约束”命令。

477a8fececea4f168c25905e00651466.png

(6)在打开的“CHECK约束”对话框中,单击“添加”按钮,然后在“表达式”右边的文本框 中输入“基本工资>=0 and 基本工资<=100000”,在“(名称)”右边的文本框中修改为“CK_Table_ 基本工资”,确认无误后,单击“关闭”按钮。 

8bfff77a33854170963a1dfe08b7a9c5.jpeg

 (7)右击“身份证号”,在弹出的快捷菜单中选择“设置主键”命令,可将该列设置为主键,主 键列的左边会显示“黄色钥匙”图标。

3af38eb1b99e4e4ea11d0a8f9398bd34.png

(8)设置完成后,保存该表,右击表名,在弹出的快捷菜单中选择“保存”命令,命令保存后在SSMS中可以看到新建完成的表。

c476e38d6f484ad189d0ae419d36ac0e.png

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1279090.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VMware安装Debian12.2作为服务器(无桌面)

[TOC]VMware安装Debian12.2作为服务器&#xff08;无桌面&#xff09; 下载Debian系统 官方网站&#xff1a;https://www.debian.org/index.zh-cn.html 创建新的虚拟机 打开VMware Workstation&#xff0c;点击创建新的虚拟机 向导虚拟机类型选择 一般我会选择典型&…

UVA1368 DNA Consensus String

DNA Consensus String The Hamming distance is the number of different characters at each position from two strings of equal length. For example, assume we are given the two strings “AGCAT” and “GGAAT.” The Hamming distance of these two strings is 2 bec…

python 图书馆选座小程序源码

开发工具&#xff1a; PyCharm&#xff0c;mysql5.7&#xff0c;微信开发者工具 技术说明&#xff1a; python django html 小程序 功能介绍&#xff1a; 用户端&#xff1a; 登录注册&#xff08;含授权登录&#xff09; 首页显示搜索房间&#xff0c;轮播图&#xff0…

[FC][常见Mapper IRQ研究]

本次IRQ研究了如下表所示Mapper的IRQ操作: 卡带名Mapper号VRC373VRC421,23,25VRC624 & 26VRC785MMC34MMC410MMC55Sunsoft FME-769Namco16319Jaleco SS 8800618RAMBO-164 共计11种Mapper的IRQ操作使用例子 代码内有详细注释, 希望能帮助到感兴趣的人. Mapper控制代码(MMC3…

工业机器视觉megauging(向光有光)使用说明书(三,轻量级的visionpro)

下来我们说说第二个相机的添加&#xff1a; 第一步&#xff0c;点击相机二&#xff0c;如下&#xff1a; 第二步&#xff0c;点击&#xff1a;加载工具组.xml&#xff0c;加载toolgroupxml2目录下的&#xff1a;工具组.xml 注意&#xff0c;一个相机只能用一个toolgroupxml,第…

docker配置redis插件

从页面上下载对应的redis.conf文件 放入redis下的conf文件夹&#xff0c;作为通用的conf文件。 将redis.conf文件拷贝到6390/conf文件夹下 [roothao /usr/local/software/redis/conf]# cp redis.conf /usr/local/software/redis/6390/conf配置6390的redis.conf文件 配置插件…

云时空社会化商业 ERP 系统 service SQL 注入漏洞复现

0x01 产品简介 时空云社会化商业ERP&#xff08;简称时空云ERP&#xff09; &#xff0c;该产品采用JAVA语言和Oracle数据库&#xff0c; 融合用友软件的先进管理理念&#xff0c;汇集各医药企业特色管理需求&#xff0c;通过规范各个流通环节从而提高企业竞争力、降低人员成本…

[c]比较月亮大小

本题的难点就是分情况讨论 #include<stdio.h> int main() {int n;scanf("%d",&n);int arr2[n];int p;for(int m0;m<n-1;m){scanf("%d",&arr2[m]);//输入n个数保存到数组}if(n1)//当输入一个数据时&#xff0c;输入0&#xff0c;可以判断…

微信小程序 内置地图及打开外部地图导航

1. 微信小程序 内置地图及打开外部地图导航 1.1 说明 用户点击通过目的地经纬度打开地图展示坐标点&#xff0c;然后可以选择外部安装的地图app进行导航搜索。    scale“4” 缩放比例&#xff0c;缩放级别&#xff0c;取值范围为3-20。 1.2. wxml代码 <button type&qu…

leetcode:225. 用队列实现栈

一、题目 链接&#xff1a;225. 用队列实现栈 - 力扣&#xff08;LeetCode&#xff09; 函数原型&#xff1a; typedef struct { } MyStack; MyStack* myStackCreate() void myStackPush(MyStack* obj, int x) int myStackPop(MyStack* obj) int myStackTop(MyStack* obj) …

CMake构建工具

文章目录 CMake构建工具1.概念2.mk文件3.CmakeList4.预编译 CMake构建工具 1.概念 Android构建原始库的工具&#xff0c;对mk构建工具封装&#xff0c;还是makefile。 加载lib库 2.mk文件 //call调用test-dir这个方法&#xff0c;返回mk文件的路径&#xff0c;LOCAL_PATH这…

计算机组成原理笔记——存储器(静态RAM和动态RAM的区别,动态RAM的刷新, ROM……)

■ 随机存取存储器 ■ 1.随机存取存储器&#xff1a;按存储信息的原理不同分为&#xff1a;静态RAM和动态RAM 2.静态RAM&#xff08;SRAM&#xff09;&#xff1a;用触发器工作原理存储信息&#xff0c;但电源掉电时&#xff0c;存储信息会丢失具有易失性。 3.存储器的基本单元…

C#网络编程(System.Net命名空间和System.Net.Sockets命名空间)

目录 一、System.Net命名空间 1.Dns类 &#xff08;1&#xff09;示例源码 &#xff08;2&#xff09;生成效果 2.IPAddress类 &#xff08;1&#xff09;示例源码 &#xff08;2&#xff09;生成效果 3.IPEndPoint类 &#xff08;1&#xff09; 示例源码 &#xff0…

五、ZooKeeper的shell操作

目录 1、客户端连接 2、shell基本操作 2.1 操作命令

分享一个判断曲线的趋势的Demo

需求背景 最近在处理数据&#xff0c;横坐标是时间&#xff0c;纵坐标是价格&#xff0c;需要判断一段时间内&#xff0c;由这些点绘制成的曲线的走势&#xff0c;比如趋势朝上&#xff0c;趋势朝下&#xff0c;水平调整这三种趋势。尝试了不少方法&#xff0c;下面这个效果还…

数据结构算法-冒泡排序算法

引言 虽然选择排序好用 &#xff0c;但有点问题 也就是频繁找最大值下标 放到 未排序的后面 因为每次需要扫描整个未排序序列&#xff0c;找到最大值或最小值的下标&#xff0c;并将其交换到未排序序列的最后一个位置。这样做的问题在于&#xff0c;在后面的迭代中&#xff0c…

Vue安装及环境配置详细教程

一、下载node.js 访问node.js官网&#xff1a;Download | Node.js 选择Windows Installer (.msi)的64-bit进行下载。 在E盘新建一个文件夹&#xff0c;取名为nodejs&#xff0c;也可以在其他盘符新建。 在安装node.js时&#xff0c;点击Change...&#xff0c;进行切换盘符安…

【UE】UEC++获取屏幕颜色GetPixelFromCursorPosition()

目录 【UE】UE C 获取屏幕颜色GetPixelFromCursorPosition() 一、函数声明与定义 二、函数的调用 三、运行结果 【UE】UE C 获取屏幕颜色GetPixelFromCursorPosition() 一、函数声明与定义 创建一个蓝图方法库方法 GetPixelFromCursorPosition()&#xff0c;并给他指定UF…

循环队列的结构设计和基本操作的实现(初始化,入队,出队,判空,获取长度,清空,销毁)

目录 1.队列的定义 2.循环队列的设计图示 3.循环队列的结构设计 4.循环队列的实现 5.循环队列的总结 1.队列的定义 和栈相反,队列(queue)是一种先进先出(first in first out,缩写为FIFO)的线性表.它只允许在表的一端进行插入,而在另一端删除元素. 在队列中,允许插入的一…

[二分查找]LeetCode2009 :使数组连续的最少操作数

本文涉及的基础知识点 二分查找算法合集 作者推荐 动态规划LeetCode2552&#xff1a;优化了6版的1324模式 题目 给你一个整数数组 nums 。每一次操作中&#xff0c;你可以将 nums 中 任意 一个元素替换成 任意 整数。 如果 nums 满足以下条件&#xff0c;那么它是 连续的 …