数据表的创建和管理 (数据库)

目录

一、数据表结构的创建

1、利用create命令创建表

2.关于创建表时运用约束的说明

(1)空值约束(NULL or NOT NULL)

(2)主键约束(primary key constraint)

(3)唯一性约束(unique constraint)

(4)检查约束(check constraint)

(6)外部键约束

二、数据表结构的管理

1、修改表中的信息

2.数据表结构的删除


一、数据表结构的创建

在SQL Server 2000中,每个数据库中最多可以创建200万个表,用户创建数据库表时,最多可以定义1024列,也就是可以定义1024个字段。

SQL Server 2000提供了两种方法创建数据库表:

  • 第一种方法是利用企业管理器(Enterprise Manager)创建表;
  • 另一种方法是利用Transact-SQL语句中的create命令创建表。

1、利用create命令创建表

其语法形式如下:

CREATE TABLE <表名>

(

    <字段名>  <数据类型>[列级完整性约束条件]

   [,<字段名>  <数据类型> [列级完整性约束条件] …]

   [,<表级完整性约束条件>]

)

参数说明:

(1)是所要定义的基本表的名字。一个表它可以由一个或多个属性组成

(2)一般取有实际意义的名字。

(3)可以是前面介绍的数据类型。

(4)在SQL Server 2000中有下面几种完整性约束条件:

  • 空值约束(NULL or NOT NULL);
  • 主键约束(primary key constraint);
  • 唯一性约束(unique constraint);
  • 检查约束(check constraint);
  • 缺省约束(default constraint);
  • 外部键约束(foreign key constraint);
  • 规则(rule);
  • 缺省值(default)

2.关于创建表时运用约束的说明

(1)空值约束(NULL or NOT NULL)

空值NULL约束决定属性值是否允许为空值(NULL)。

NULL表示没有输入任何内容,它不是零和空白,不允许为空值则用NOT NULL表示。

例如:设置属性teacher允许为空值。

CREATE TABLE t

(

teacher char(8) NULL

)

(2)主键约束(primary key constraint)

       主健约束要求主健属性取值必须惟一一个表只能包含一个主健约束。如果没有在主健约束中指定CLUSTERED或NONCLUSTERED,并且没有为UNIQUE约束指定聚集索引,则将对该主健约束用CLUSTERED。

主键约束SQL的语法形式如下:

[CONSTRAINT 约束名] PRIMARY KEY

[CLUSTERED|NONCLUSTERED](列名[,…n])

例如:在执行创建产品信息表的操作时,指定产品编号为主键值。

CREATE TABLE products

(

id char(10) NOT NULL,

name char(20) NOT NULL,

price money,

quantity smallint NULL,

CONSTRAINT pk_products PRIMARY KEY CLUSTERED (id)

)

此例的主健名称是pk_products,在products表中关于id建立了一个索引排序。

(3)唯一性约束(unique constraint)

   唯一性约束用于指定一个或者多个列的组合的值具有唯一性,以防止在列中输入重复的值

创建唯一性约束SQL语句:

[CONSTRAINT 约束名] UNIQUE

[CLUSTERED|NONCLUSTERED](列名[,…n])

例:

CREATE TABLE student1

(

sno char(8),

sname char(16),

constraint pk_student primary key(sno),

constraint uniq_student unique(sname)

)

(4)检查约束(check constraint)

使用检查约束时,应该注意以下几点:

① 一个列级检查约束只能与限制的字段有关;一个表级检查约束只能与限制的表中字段有关。

② 一个中可以定义多个检查约束。

③ 每个CREATE TABLE语句中每个字段只能定义一个检查约束。

④ 在多个字段上定义检查约束,则必须将检查约束定义为表级约束

⑤ 检查约束中不能包含子查询

创建检查约束SQL语法格式为:

CONSTRAINT constraint_name

CHECK [NOT FOR REPLICATION] (logical_expression)

例如:创建一个职工信息表,其中输入性别字段值时,只能接受“F”或者“M”,并且为phonenum字段创建检查约束,限制只能输入类似01080798654之类的数据,而不能随意输入其他数据。

create table employee

(

Id char(8),

name char(8)    CHECK(NAME LIKE ‘[A-C,a-c][A-Z,a-z][A-Z][A-Z]’),

sex char(2),

phonenum int,

constraint chk_sex check(sex in (’F’,’M’))default ‘F’,

Constraint chk_phonenum check(phonenum like ‘(010)[8,9][0-9][0-9][0-9] [0-9][0-9][0-9][0-9]’)

)

(6)外部键约束

外部键约束用于强制参照完整性,提供单个字段或者多个字段的参照完整性。当使用外部键约束时,应该考虑以下几个因素:

① 外部键约束提供了字段参照完整性。

② 外部键从句中的字段数目和每个字段指定的数据类型必须和REFERENCES从句中的字段相匹配。

外部键约束不能自动创建索引,需要用户手动创建。

④ 一个表中最多可以有31个外部键约束。

⑤ 在临时表中,不能使用外部键约束。

⑥ 主键和外部键的数据类型必须严格匹配。

外键约束SQL的语法形式如下:

[CONSTRAINT 约束名] FOREIGN KEY (外键列名)REFERENCES

参照表(参照列名)

外键约束主要用来维护两个表之间的一致性关系。 外键的建立主要是通过将一个表的主键所在列包含在另一个表中,这些列就是另一个表的外键。

外键的作用不只是对输入自身的数据进行限制,同时也限制了对主键所在表的数据进行修改

用户无法对主键里的数据进行修改和删除,除非事先删除或修改外键引用的数据。 

二、数据表结构的管理

1、修改表中的信息

利用企业管理器修改表结构的过程如图所示。单击“设计表”命令,将弹出表设计器。

例如:将教学管理数据库中的学生表的属性“sno”的长度改为7,属性“ssex”的长度改为2。

 

 使用SQL命令修改表。

语法格式:

ALTER TABLE<表名>

ADD<新列名><数据类型>[完整性约束]

|ALTER COLUMN 列名 新类型

|DROP COLUMN 列名

|ADD PRIMARY KEY(列名[,…])

|ADD FOREIGN KEY(列名) REFERENCES 表名(列名)

|ADD CONSTRAINT 约束名….

|DROP CONSTRAINT 约束名

【例4-2】将教学管理数据库中的学生表属性“性别”的长度改为2。

其SQL语句的程序清单如下:

USE 教学管理 --打开教学管理数据库

GO

ALTER TABLE 学生表 ALTER COLUMN 性别 CHAR(2)

2.数据表结构的删除

可以用企业管理器或SQL语句删除基本表。

方法一:使用企业管理器

① 选中要删除的数据表,单击右键,在快捷菜单上选择“删除”。

② 在“除去对象”对话框中,单击“全部除去”。

方法二:使用SQL命令

SQL命令的一般格式为:

DROP TABLE <表名>

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java多线程入门到精通学习大全?了解线程池和线程常用集合的基本原理、代码示例!(第六篇:线程池和集合的学习)

设计和实现多线程应用程序需要了解线程池、线程常用集合等相关知识。下面我们将分别介绍线程池、线程常用集合的原理、使用场景、代码示例、注意事项和总结。 1. 线程池 线程池是一种线程调度机制&#xff0c;它可以管理多个线程&#xff0c;并且可以重复使用这些线程来处理多…

Node.js 与 TypeScript

目录 1、什么是 TypeScript 2、运行TypeScript 3、TypeScript 在Node.js 生态中的情况 1、什么是 TypeScript TypeScript是一种流行的开源语言&#xff0c;由微软维护和开发。它受到了世界各地许多软件开发人员的喜爱和使用。 基本上&#xff0c;它是JavaScript的超集&…

SpringBoot+@Validate+全局异常拦截实现自定义规则参数校验(校验get请求参数不能为空且在指定枚举类型中)

场景 SpringBootValidated实现参数验证(非空、类型、范围、格式等)-若依前后端导入Excel数据并校验为例&#xff1a; SpringBootValidated实现参数验证(非空、类型、范围、格式等)-若依前后端导入Excel数据并校验为例_validated 怎么设置boolean类型非空_霸道流氓气质的博客-…

公司新来的00后真是卷王,工作没两年,跳槽到我们公司起薪18K都快接近我了

都说00后躺平了&#xff0c;但是有一说一&#xff0c;该卷的还是卷。这不&#xff0c;前段时间我们公司来了个00后&#xff0c;工作都没两年&#xff0c;跳槽到我们公司起薪18K&#xff0c;都快接近我了。后来才知道人家是个卷王&#xff0c;从早干到晚就差搬张床到工位睡觉了。…

瑞云渲染农场怎么用,瑞云渲染多少钱一分钟?

Renderbus瑞云渲染农场作为亚洲前沿的 云渲染平台&#xff0c;一直以“做最好的云渲染工具”为愿景&#xff0c;紧跟CG行业的技术创新与发展&#xff0c;致力于提供专业可靠、安全稳定、可持续创新的云渲染解决方案&#xff0c;助力推动行业快速发展&#xff0c;被誉为中国云渲…

【2023/05/10】Mitchel Resnick

Hello&#xff01;大家好&#xff0c;我是霜淮子&#xff0c;2023倒计时第5天。 Share Her wistful face haunts my dreams like the rain at night. 译文&#xff1a; 她的热切的脸&#xff0c;如夜雨似的&#xff0c;搅扰着我的梦魂。 Once we dreamt that we were stra…

支付系统设计三:渠道网关设计06-业务处理

文章目录 前言一、业务服务工厂二、业务处理服务1. 业务处理服务2. 业务处理抽象服务3. 流量控制4. 报文提交4.1 获取交易的服务端通讯列表4.2 循环请求支付渠道4.2.1 报文组装4.2.2 报文发送4.2.2.1 协议处理器获取4.2.2.2 构建通讯客户端4.2.2.3 发送请求4.2.2.4 响应报文读取…

股票量价关系基础知识2

内盘与外盘 外盘&#xff0c;是指在一个交易日获某段交易时间内&#xff0c;买方主动提价以委卖价成交的股数之和&#xff0c;也称为主动性买盘 内盘&#xff0c;是指在一个交易日获某段交易时间内&#xff0c;卖方主动降价以委买价成交的股数之和&#xff0c;也称主动性卖盘。…

中文润色ai-ai原创文章生成器

在现代社会&#xff0c;每天都有大量的中文文章被发布到互联网上&#xff0c;这些文章的质量和可读性直接影响着读者的阅读体验和文章的传播效果。为了让文章更加美好&#xff0c;越来越多的人开始尝试使用中文润色ai技术。 中文润色ai是一种先进的人工智能技术&#xff0c;它能…

数字图像处理-matlab图像内插

matlab图像内插 最近邻插值双线性插值双三次插值总结 最近邻插值 目标各像素点的灰度值代替源图像中与其最邻近像素的灰度值 参考博客 假设一个2X2像素的图片采用最近邻插值法需要放大到4X4像素的图片&#xff0c;右边该为多少&#xff1f; 最近邻插值法坐标变换计算公式&…

Vue核心 列表渲染 数据监视

1.13.列表渲染 1.13.1.基本列表 v-for指令 用于展示列表数据语法&#xff1a;&#xff0c;这里key可以是index&#xff0c;更好的是遍历对象的唯一标识可遍历&#xff1a;数组、对象、字符串&#xff08;用的少&#xff09;、指定次数&#xff08;用的少&#xff09; <!…

Kubesphere流水线实现蓝绿发布

Kubesphere流水线实现蓝绿发布 1. Gitlab仓库准备 1.1 创建仓库 新建空白项目,名字随便取 greenweb复制克隆地址 http://192.168.31.199/deploy/greenweb.git1.2 初始化并上传代码 克隆并初始化代码仓库 mkdir git cd git git clone http://192.168.31.199/deploy/green…

【嵌入式烧录刷写文件】-2.3-删除/修改Intel Hex文件中指定地址范围内的数据

案例背景&#xff08;共6页精讲&#xff09;&#xff1a; 有如下一段HEX文件&#xff0c;如何“自动”地完成地址范围0x9110-0x9113数据的删除或修改。 :2091000058595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F70717273747576775F :2091200078797A7B7C7D7E7F808182838485…

一觉醒来Chat gpt就被淘汰了

目录 什么是Auto GPT&#xff1f; 与其他语言生成模型相比&#xff0c;Auto GPT具有以下优点 Auto GPT的能力 Auto GPT的能力非常强大&#xff0c;它可以应用于各种文本生成场景&#xff0c;包括但不限于以下几个方面 Auto GPT的历史 马斯克说&#xff1a;“ChatGPT 好得吓…

记csdn打不开或打开缓慢后的修复--如何查找dns并修改hosts文件

记csdn打开缓慢后的修复–如何查找dns并修改hosts文件 问题&#xff1a; CSDN文章打开的十分缓慢&#xff0c;经常出现无法打开页面的错误提示 &#xff08;以前用的好好的&#xff0c;现在不知道公司局域网改了什么东西&#xff0c;导致我的电脑打开CSDN经常缓慢好久&#x…

Lesson14 高级IO

前言 IO 等待 数据拷贝,比如read/recv,write/send只要在单位事件里,让等的比重减低,IO的效率就越高 五种IO模型 钓鱼小案例 阻塞式 阻塞式: 张三拿着一根鱼竿,一直在岸边钓鱼,期间一直盯着鱼竿,等待鱼上钩 非阻塞式轮询式 非阻塞式轮询式: 李四拿着一根鱼竿,在岸边钓鱼,期…

Linux共享库、动态库详解

目录 一.静态库 二.动态库 三.静态库的制作与使用 四.动态库的制作与使用 在日常编程中我们不想让别人看到我们写的源码&#xff0c;但还需要发给对方使用&#xff0c;在这种情况下我们引入了静态库动态库&#xff0c;让对方用调库的方式也可以实现我们写的代码的功能&…

Android电源管理介绍

一、电源管理基础知识 1.1电源管理的几种状态 Android kernel源码中&#xff0c;定义了三种电源状态&#xff0c;在kernel/power/suspend.c中&#xff1a; 对应的宏定义/include/linux/suspend.h 1.2 电源管理状态的介绍&#xff1a; PM_SUSPEND_ON 设备处于正常工作状态 …

vue2 框架运行原理剖析系列(一)之 new Vue()实例化过程到底做了什么!!!

一、vue 基础用法 1.1 引入vue 1.2 使用vue语法编写ui 1.3 实现数据绑定 示例代码如下 <div id"app">{{ message }} </div> <script> var app new Vue({el: #app,data: {message: Hello Vue!} }) </script>1.4 代码效果&#xff1a;使用浏…

Nessus 10.5 Auto Install for macOS Ventura(自动化安装 Nessus 试用版)

发布 Nessus 试用版自动化安装程序&#xff0c;支持 macOS Ventura、RHEL 9 和 Ubuntu 22.04 请访问原文链接&#xff1a;https://sysin.org/blog/nessus-auto-install-for-macos/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.o…