基本表的定义:创建表、修改表、删除表

一、创建数据库与打开数据库

学生选课数据库

学生(学号,姓名,性别,出生时间,所在系)

课程(课程编号,课程名,先修课程号)

选课(学号课程编号,成绩)

创建数据库

CREATE DATABASE <数据库名>

create database XSXK;

1、创建数据库的实质功能是向操作系统申请存储数据库所需要的存储空间

2、创建数据库后会生成操作系统文件,每个数据库至少对应有2个文件

(1).MDF文件(数据文件)

包含数据和对象,例如表、存储过程等

(2).LDF文件(日志文件)

包含恢复数据库所有事务所需要的信息

(3)在创建数据库时,可自定义指定这两个文件的位置,如不指定,将会采用默认位置

3、DBMS中有多个数据库时,可采用SQL语句打开指定数据库

USE <数据库名>

use XSXK;

二、基本表的创建

1、使用SQL语言中的CREATE TABLE语句,指定了关系表的表名、属性列的列名和属性域(DBMS所支持的数据类型)

2、格式:

CREATE TABLE <表名>

(

<属性列名1><数据类型>【列级完整性约束条件】

【,<属性列名2><数据类型>【列级完整性约束条件】,...】

【,<表级完整性约束条件>】

)

使用完整性约束可定义主键和外键,实现关系的实体完整性、参照完整性和用户自定义完整性

3、注意:

(1)所定义的表至少有一个属性列

(2)定义表的属性列时需要指定其属性列的数据类型和 长度

4、SQL Server中的数据类型

注意:

CHAR(n)类型和VARCHAR(n)都表示字符串类型,但是前者的字符数目不够n时会默认会用空格补齐到n,而后者字符数目是多少字符串的长度就是多少

5、主键约束

PRIMARY KEY 【(<属性列(组)>)】

定义主键,保证了属性列值的唯一性和非空性

sNo varchar(3) primary key,
 primary key(sNo,cNo) -- sNo和cNo都是主键、也是主属性

6、外键约束

FOREIGN KEY(<外键>)

     REFERENCES <被参照表名> (<与外键对应的主键名>)

表中的外键参照了被参照表中的主键

foreign key(cNo)references c(cNo),foreign key(sNo)references s(sNo)

(1)表中添加了外键约束,DBMS会保证关系的参照完整性,使得外键sNo和cNo只能取对应被参照表中元组的主键值

(2)为保证关系的参照完整性不被破环,DBMS会采用一些默认的处理策略

(3)用户也可以在定义外键时自定义处理策略

当对被参照表中的主键进行修改或对元组进行删除操作时,参照表是(CASCADE )否(NO ACTION )产生关联的修改和删除操作

ON UPDATE { CASCADE | NO ACTION  }

ON DELETE { CASCADE | NO ACTION }

7、对属性列的取值进行约束(定义用户自定义完整性)

(1)NOT NULL 或 NULL 约束(允许属性值是否为空),对关系的主属性必须限定为NOT NULL,以满足实体完整性

(2)UNIQUE 约束(不允许属性列中出现重复的属性值),对关系中的候选键属性必须保证为非空且唯一,以保证实体完整性

(3)DEFAULT 约束(默认约束),将关系中属性列的值出现频率高的设置为默认值

(4)CHECK约束(检查约束),通过约束条件表达式设置属性列值应该满足的条件

8、基本表

(1)学生表

create table s(sNo char(12) primary key,sN varchar(3) not null,sex char(1) default'男',sB Date,sD varchar(8),check(sex in('男','女'))
);

(2)课程表

create table c(cNo char(3) primary key,cN varchar(8),pC char(3),foreign key(pC) references c(cNo)
);

(3)学生选课表

create table sC(sNo char(12),cNo char (3),grade dec(3,1),primary key(sNo,cNo), -- sNo和cNo都是主键、也是主属性foreign key(cNo)references c(cNo),foreign key(sNo)references s(sNo),check(grade between 0 and 100)
);

三、基本表的修改

1、增加列或表约束规则

格式:

ALTER TABLE <表名>

    ADD <属性列名> <数据类型>【完整性约束】|<完整性约束>;

例1:在学生表S中加入属性列SH表示学生的籍贯

alter table sadd sH varchar(18)

例2:在学生表S中补充定义SNO为主键

alter table sadd primary key(sNo);

2、修改原有列的类型

格式:

ALTER TABLE <表名>

   ALTER COLUMN <属性列名> <数据类型>;

例:将基本表S中的学生姓名SN长度修改为12

alter table salter column sN varchar(12);

四、基本表的删除

1、删除原来就有的列或约束规则

格式:

ALTER TABLE <表名>

      DROP {【CONSTRAINT】 <完整性约束>|

                 COLUMN <列名>【CASCADE|RESTRICT】 };

注:

CASCADE:在没有视图或约束引用该属性列时,该属性列才能被删除

RESTRICT:表示在删除该属性列时,引用该属性列的视图和约束也会被自动删除

例1:删除基本表s中的sex属性列

alter table sdrop column sex;

2、删除基本表

格式:

DROP TABLE <表名>

    【CASCADE | RESTRICT】

例1:删除基本表s

drop table s cascade;

五、总结

1、利用CREATE TABLE语句完成了创建表,定义主键和外键,对属性值进行约束三个任务

2、基本表的定义会存入DBMS的数据字典中,由DBMS根据数据字典中的信息自动检查用户操作是否符合完整性约束条件,从而实现关系的实体完整性、参照完整性和用户自定义完整性

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

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

相关文章

js调试过程中修改变量值

1.在想要变更的地方添加断点 2.添加监视表达式 3.执行网页代码&#xff0c;当执行到断点处则会停止 4.点击执行下一步&#xff0c;则会执行监视表达式

Linux下打印封装_统计函数执行时间_线程号时间戳打印

统计函数执行时间&#xff08;多线程环境下统计结果不准&#xff09; // 无返回值 #define FUNC_EXEC_TIME_NORET(fun,promote) ({ \ unsigned long long timeDelta 0; \ struct timespec t1 {0}; \ struct timespec t2 {0}; \ clock_gettime(CLOCK_MONOTONIC, &t1); \ …

高考分数查询结果自动推送至微信(卷II)

祝各位端午节安康&#xff01;只要心中无结&#xff0c;每天都是节&#xff0c;开心最重要&#xff01; 在上一篇文章高考分数查询结果自动推送至微信&#xff08;卷Ⅰ&#xff09;-CSDN博客中谈了思路&#xff0c;今天具体实现。文中将敏感信息已做处理&#xff0c;读者根据自…

React+TS前台项目实战(四)-- layout整体布局搭建

文章目录 前言一、Layout组件代码注释说明二、Content全局组件注释说明三、Header基础布局组件1. Header父级组件注释说明2. NavMenu导航子组件详细说明 四、效果展示总结 前言 本文主要讲Layout整体布局的构建以及全局内容盒子Content组件的使用。还包括了导航栏组件的基本封…

未来几年,同样的性能,推理功耗降低为现在的几万分之一,有可能吗

未来几年,同样的性能,推理功耗降低为现在的几万分之一,有可能吗 一.数据二.抓取LLM排行榜,相同的MMLU精度,模型参数量缩减倍数三.其它 有人说未来几年,推理功耗能降低为现在的几万分之一,好奇怎么能做到呢 一.数据 二.抓取LLM排行榜,相同的MMLU精度,模型参数量缩减倍数 import…

spool 管道 小文件 mknod

Spool File In SQL*PLUS in Multiple Small Files ? (Doc ID 2152654.1)​编辑To Bottom In this Document Goal Solution APPLIES TO: Oracle Database - Enterprise Edition - Version 10.2.0.1 to 12.1.0.2 [Release 10.2 to 12.1] Oracle Database Cloud Schema Service…

从零开始搭建Electron项目之运行例程

最好的学习方式就是&#xff1a;给一段能够运行的代码示例。 本文给出了例程资源&#xff0c;以及运行的步骤。 在国内开发electron有一点特别不好&#xff0c;就是如果不爬梯子&#xff0c;下载依赖容易出错。 一、例程资源 到如下路径下载例程到本地。 GitCode - 全球开发者…

32、matlab:基于模板匹配的车牌识别

1、准备工作 1&#xff09;准备材料 车牌字符模板和测试的实验车牌 2&#xff09;车牌字符模板 数字、字母和省份缩写 3&#xff09;测试车牌 四张测试车牌 2、车牌识别实现(已将其嵌入matlab) 1&#xff09;打开APP 找到APP 找到我的APP双击点开 2)界面介绍 包括&am…

【网络安全的神秘世界】web应用程序安全与风险

&#x1f31d;博客主页&#xff1a;泥菩萨 &#x1f496;专栏&#xff1a;Linux探索之旅 | 网络安全的神秘世界 | 专接本 第一章&#xff1a;web应用程序安全与风险 web攻击基础知识 1、什么是web应用攻击 web攻击的本质&#xff0c;就是通过http协议篡改应用程序&#xff0…

c#自定义ORM框架-实体类扩展属性

步骤一、建立扩展属性类 实体类扩展属性要继承Attribute基类完成 步骤二、创建实体类并引用扩展实体类属性 Attributes属性定义&#xff0c;主要标明表名和主键名字 /// <summary> /// 表名 /// </summary> [AttributeUsage(AttributeTargets.Class)] [System.S…

蓝牙安全入门——两道CTF题目复现

文章目录 蓝牙安全入门题目 low_energy_crypto获取私钥解密 题目 蓝牙钥匙的春天配对过程配对方法密钥分发数据加密安全漏洞和保护实际应用实际应用 蓝牙安全入门 &#x1f680;&#x1f680;最近一直对车联网比较感兴趣&#xff0c;但是面试官说我有些技术栈缺失&#xff0c;所…

html5实现个人网站源码

文章目录 1.设计来源1.1 网站首页页面1.2 个人工具页面1.3 个人日志页面1.4 个人相册页面1.5 给我留言页面 2.效果和源码2.1 动态效果2.2 目录结构 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/139564407 ht…

Golang | Leetcode Golang题解之第141题环形链表

题目&#xff1a; 题解&#xff1a; func hasCycle(head *ListNode) bool {if head nil || head.Next nil {return false}slow, fast : head, head.Nextfor fast ! slow {if fast nil || fast.Next nil {return false}slow slow.Nextfast fast.Next.Next}return true }

unity到小游戏instantGame(流程演示,非内容制作 亲测可用)

unity到小游戏instantGame&#xff08;开发流程演示&#xff0c;非内容制作 亲测可用&#xff09; 写在前面直接 写在前面 instantGame 后妈级教学&#xff0c;主打一个填自己的坑&#xff0c;有问题下方评论交流 根据此教程使用后的一点心得记录和可能出现的问题补充&#xf…

设计随笔 ---- ADR4525 篇

ADR4525一颗超低噪声、高精度2.5V基准电压源&#xff1b; Fluke 17B准确度指标&#xff1a; ADR4525指标&#xff1a; Fluke 17B测试结果&#xff1a; 2.5V的基准&#xff0c;输出只有2.477V&#xff0c;其实这么高精度的电压基准用3位半的万用表来测试本身就是一个错误&#…

如何获取MySQL中表的大小?(官方校正版)

与大多数关系数据库一样&#xff0c;MySQL 提供了有关数据库本身的有用元数据。虽然大多数其他数据库将此信息称为 catalog&#xff0c; 但MySQL 官方文档INFORMATION_SCHEMA 将元数据 称为 tables。 目录 1 列出单个数据库中的单表大小 2 列出所有数据库中的所有表大小 以下…

【C语言】宏详解(下卷)

前言 紧接上卷&#xff0c;我们继续来了解宏。 宏替换的规则 1.在调用宏时&#xff0c;首先对参数进行检查&#xff0c;看看是否包含任何由#define定义的符号。如果是&#xff0c;它们首先被替换。 2.替换文本随后被插入到程序中原来文本的位置。对于宏&#xff0c;参数名被他…

Matlab 2024a 建模基础知识全面指南

一、Matlab简介 1. Matlab是什么&#xff1f; Matlab&#xff08;Matrix Laboratory&#xff09;是由MathWorks公司开发的一个高性能的数值计算环境和编程语言。它以其强大的矩阵运算能力、丰富的工具箱和便捷的数据可视化功能而闻名&#xff0c;广泛应用于科学研究、工程模拟…

23.汽水兑奖

上海市计算机学会竞赛平台 | YACSYACS 是由上海市计算机学会于2019年发起的活动&#xff0c;旨在激发青少年对学习人工智能与算法设计的热情与兴趣&#xff0c;提升青少年科学素养&#xff0c;引导青少年投身创新发现和科研实践活动。https://www.iai.sh.cn/problem/106 题目描…

Elasticsearch:Open Crawler 发布技术预览版

作者&#xff1a;来自 Elastic Navarone Feekery 多年来&#xff0c;Elastic 已经经历了几次 Crawler 迭代。最初是 Swiftype 的 Site Search&#xff0c;后来发展成为 App Search Crawler&#xff0c;最近又发展成为 Elastic Crawler。这些 Crawler 功能丰富&#xff0c;允许以…