数据库学习笔记1-数据库实验1

文章目录

  • 创建表格的时候出现的一些错误
  • 查询所有的表格
  • 实验一
  • 查询单个表格
  • 分块
  • 修改大学数据库表格
  • 创建大学数据库表格
    • 课程
    • 教师
    • 课程段
    • 授课
    • 学生
    • 选课
    • 注意
    • 吐槽
  • 修改大学数据库表格2(英文版本)
    • a
    • b
    • c
    • d
    • e
  • 自建项目-在线书店数据库

创建表格的时候出现的一些错误

小白使用sql语句出现的一些错误

create table 课程段
    (课程号    varchar(5),
     课程段号  varchar(8),
     学期      varchar(6) check(学期 in ('Fall', 'Winter', 'Spring', 'Summer')),
     年份      number(4,0) check(年份 > 2001 and 年份 < 2050),
     primary key(课程号, 课程段号, 学期, 年份),
     foreign key(课程号) references 课程 on delete cascade,
    );

我输入上面的语句,试图创建一个表格,
在这里插入图片描述

第 8 行出现错误:
ORA-00904: : 标识符无效

提示出现这个错误,谷歌之后说是,使用了数据库的关键字,但是其实没有,主要是因为最后一行多了一个逗号

create table 课程段
    (课程号    varchar(5),
     课程段号  varchar(8),
     学期      varchar(6) check(学期 in ('Fall', 'Winter', 'Spring', 'Summer')),
     年份      number(4,0) check(年份 > 2001 and 年份 < 2050),
     primary key(课程号, 课程段号, 学期, 年份),
     foreign key(课程号) references 课程 on delete cascade
    );
    

在这里插入图片描述
其实是可以了,只是我把这个创建了一遍了,所以就显示重复了
在这里插入图片描述
这个错误列表挺奇怪的,命令行会返回说出现了什么问题,这个错误列表就没啥用了

查询所有的表格

在这里插入图片描述

SELECT TABLE_NAME FROM USER_TABLES;

经过查询,显示有14个表格

实验一

第1、3题创建的表的名字都以“T_”开头

总共有三个题目,第一题和已有的实验报告里面的完全一致,我仔细检查了一遍,原来所有题目和实验报告的题目其实是完全一样的

查询单个表格

在这里插入图片描述
desc 课程段

分块

首先是图书采购的表格的创建,然后是修改大学数据库中的表,最后是自己做一个表格,比如说在线书店,总共是三个部分

修改大学数据库表格

增加“国家”表(表名为:T_country),属性:cid(国家代码)、name(国名)等。
instructor表中增加属性:age、gender、cid、academic_title(职称)、native_place(籍贯)。
student表中增加属性:gender、native_place(籍贯)。
删除section表中的属性:time_slot_id、room_number。
将takes表中grade的数据类型改为整型。

后面要用的时候都是英文的,但是前面创建表格的时候表的名字都是中文的,所以重新创建一下表

创建大学数据库表格

create table department
    (dept_name    varchar(20),
     building     varchar(15),
     budget   number(12,2) check(budget> 0),
     primary key(dept_name)
    );

课程

create table course
    (course_id    varchar(5),
     title    varchar(50),
     dept_name      varchar(20),
     credits      number(2,0) check(credits > 0),
     primary key(course_id),
     foreign key(dept_name) references department
 on delete set null
    );

教师

create table instructor
    (ID       varchar(7),
     name         varchar(20) not null,
     dept_name    varchar(20),
     salary       number(8,2) check(salary > 29000),
     primary key(ID),
     foreign key(dept_name) references department on delete set null
    );

课程段

create table section
    (course_id    varchar(5),
     sec_id  varchar(8),
     semester      varchar(6) check(semester in ('Fall', 'Winter', 'Spring', 'Summer')),
     year      number(4,0) check(year > 2001 and year < 2050),
     primary key(course_id, sec_id, semester, year),
     foreign key(course_id) references course on delete cascade
    );

授课

create table teaches
    (ID    varchar(7),
     course_id    varchar(5),
     sec_id  varchar(8),
     semester      varchar(6),
     year      number(4,0),
     primary key(ID, course_id, sec_id, semester, year),
     foreign key(course_id,sec_id, semester, year) references section on delete cascade,
     foreign key(ID) references instructor on delete cascade
    );

学生

create table student
    (ID    varchar(10),
     name    varchar(20) not null,
     dept_name    varchar(20),
     tot_cred  number(3,0) check(tot_cred >= 0),
     primary key(ID),
     foreign key(dept_name) references department on delete set null
    );

选课

create table takes
    (ID      varchar(10),
     course_id    varchar(5),
     sec_id  varchar(8),
     semester      varchar(6),
     year      number(4,0),
     grade      varchar(2),
     primary key(ID, course_id, sec_id, semester, year),
     foreign key(course_id,sec_id, semester, year) references section on delete cascade,
     foreign key(ID) references student on delete cascade
    ); 

注意

课程段号和开课号是一个意思(姑且这么记忆就行),英文缩写都是sec_id

学生的学号和老师的教师号都是ID

吐槽

这个中英文转换确实老费时间了,经过查询,现在有21个表格了
在这里插入图片描述

第一个采购图书主要任务是创建表格,创建完成了

修改大学数据库表格2(英文版本)

修改的具体内容和往年的要求不太一样,五个小问只有一问是相等的

a

增加“国家”表(表名为:T_country),属性:cid(国家代码)、name(国名)等。

在这里插入图片描述
启发是可以多多使用ai来辅助学习

CREATE TABLE T_country (  
    cid CHAR(2) PRIMARY KEY,    -- 假设国家代码是两位字符  
    name VARCHAR2(100) NOT NULL -- 国名可能较长,这里使用VARCHAR2类型并设定长度为100,你可以根据需要调整  
);

b

instructor表中增加属性:age、gender、cid、academic_title(职称)、native_place(籍贯)。

在这里插入图片描述
现在老师的这个数据库有四个属性,教师号,姓名,系名,工资,需要增加五个属性

NOT NULL 是一个约束,用于确保某个列(字段)不包含 NULL 值。当你为一个表的列定义 NOT NULL 约束时,该列在插入新记录或更新现有记录时都必须有一个值,不能是 NULL

CHECK 约束用于限制列中的值范围。它确保列中的所有数据都满足指定的条件。如果试图插入或更新不满足 CHECK 约束条件的行,数据库将抛出一个错误。

在这里插入图片描述

alter table instructor add academic_title varchar(5) not null check(academic_title in ('教授','副教授','讲师'));

在这里插入图片描述
新增之后可以发现,在表格里面多了一行属性

数据库表格里面的行,貌似被称为列(column)

增加年龄,限制必须非空且大于18
alter table instructor add age INT not null check(age>=18);
在这里插入图片描述
输入多条修改命令,可以实现修改,最后得到的表格如下
在这里插入图片描述
籍贯

alter table instructor add native_place varchar(20);

国家代码

alter table instructor add cid varchar(20);

性别

alter table instructor add gender varchar(1) not null check(gender in ('男','女'));

c

student表中增加属性:gender、native_place(籍贯)。

修改之后是这样,修改命令如下
在这里插入图片描述

# 学生表格的修改
alter table student add gender varchar(1) not null check(gender in ('男','女'));

alter table student add native_place varchar(20);

d

删除section表中的属性:time_slot_id、room_number。

等下,貌似这个数据库表格里面压根就没有这几个属性

在这里插入图片描述
我先把这两个属性加进去,再删除试试

在这里插入图片描述
现在把这个属性加进去了

alter table section add time_slot_id INT;

通过下面的命令删除

ALTER TABLE section DROP COLUMN time_slot_id;

在这里插入图片描述
可以发现确实被删除了

在这里插入图片描述

# 这个压根没有,我先新建,
alter table section add time_slot_id INT;
alter table section add room_number INT;

# 删除
ALTER TABLE section DROP COLUMN time_slot_id;
ALTER TABLE section DROP COLUMN room_number;

e

将takes表中grade的数据类型改为整型。

在这里插入图片描述
可以发现目前不是整型,这个的意思是最多存两个字符的字符串

在这里插入图片描述
实现了修改

ALTER TABLE takes MODIFY (grade INT);

自建项目-在线书店数据库

这个貌似可以直接用代码

create table T_author
(name varchar(5),
 address varchar(20),
 URL varchar(25) not null,
 primary key(name)
);

create table T_book1
(ISBN varchar(13),
 title varchar(10),
 year numeric(4,0),
 price numeric(4,2),
 primary key(ISBN)
);

create table T_publisher
(name varchar(10),
 phone varchar(11) not null,
 address varchar(20) not null,
 URL varchar(20) not null,
 primary key(name)
);

create table T_shopping_basket
(basket_id varchar(10) primary key
);

create table T_warehouse
(code varchar(6) primary key,
 address varchar(20),
 phone varchar(11)
);

create table T_customer
(email varchar(15) primary key,
 name varchar(5),
 address varchar(20),
 phone varchar(11)
);

create table T_written_by
(name varchar(5),
 ISBN varchar(13),
 primary key(name,ISBN),
 foreign key(name) references T_author on delete cascade,
 foreign key(ISBN) references T_book1 on delete cascade
);

create table T_published_by
(name varchar(5),
 ISBN varchar(13),
 primary key(name,ISBN),
 foreign key(name) references T_publisher on delete cascade,
 foreign key(ISBN) references T_book1 on delete cascade
);

create table T_contains
(ISBN varchar(13),
basket_id varchar(10),
num numeric(4,0),
primary key(ISBN,basket_id,num),
foreign key(ISBN) references T_book1 on delete cascade,
foreign key(basket_id) references T_shopping_basket on delete cascade
);

create table T_stocks
(ISBN varchar(13),
 code varchar(6),
 num numeric(4,0),
 primary key(ISBN,code,num),
 foreign key(ISBN) references T_book1 on delete cascade,
 foreign key(code) references T_warehouse on delete cascade
);

create table T_basket_of
(basket_id varchar(10),
 email varchar(15),
 primary key(basket_id,email),
 foreign key(basket_id) references T_shopping_basket on delete cascade,
 foreign key(email) references T_customer on delete cascade
);

全部创建完之后可以发现有这么多表格,最后实验报告加几张自己电脑的截图,就好了,缝缝补补
在这里插入图片描述

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

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

相关文章

如何在.htaccess文件创建一个自定义404页面

本周有一个客户&#xff0c;购买Hostease的虚拟主机&#xff0c;询问我们的在线客服&#xff0c;如何在.htaccess文件创建一个自定义404页面&#xff1f;我们为用户提供相关教程&#xff0c;用户很快解决了遇到的问题。在此&#xff0c;我们分享这个操作教程&#xff0c;希望可…

uni-app解决表格uni-table样式问题

一、如何让表格文字只显示一行&#xff0c;超出部分用省略号表示 步骤 &#xff1a; 给table设置table-layout:fixed; 列宽由表格宽度和列宽度设定。&#xff08;默认是由单元格内容设定&#xff09;让表格元素继承父元素宽度固定table-layout: inherit;overflow: hidden;超过…

大模型对齐方法笔记二:基于Rank的对齐方法RRHF和PRO

文章目录 RRHFPRO将RLHF嫁接到PRO 参考资料 RRHF RRHF(Rank Responses to align Human Feedback)出自2023年4月的论文《RRHF: Rank Responses to Align Language Models with Human Feedback without tears》&#xff0c;是较早提出的不需要使用PPO来对齐人类偏好的方法。 设…

Linux网络编程: udp,tcp协议原理

Linux网络编程: udp,tcp协议原理 一.udp和tcp的介绍1.udp介绍1.udp的特点2.udp的适用场景3.udp效率分析 2.tcp介绍1.tcp的特点2.tcp的适用场景 二.udp协议原理1.udp协议段格式2.udp的缓冲区和全双工通信 三.tcp协议段1.tcp协议段格式2.发送接收缓冲区3.确认应答ACK机制,窗口大小…

解决Android studio 一直提示下载gradle-xxx-all.zip问题

今天用AndroidStdiod打开一个新工程的时候&#xff0c;发现项目一直卡在正在下载gradle-xxx-all.zip的任务上&#xff0c;网络出奇的慢&#xff0c;即使配了VPN也无济于事&#xff0c;于是按照以往经验&#xff1a;将gradle-xxx-all.zip下载到.gradle\gradle\wrapper\dists目录…

oracle数据回显时候递归实战

太简单的两篇递归循环 orcale 在项目里递归循环实战 先看资产表T_ATOM_ASSET结构 看业务类别表T_ATOM_BUSI_CATEGORY结构 问题出现 页面显示 实际对应的归属业务分类 涉及到oracle递归实战(这里不会如何直接在atomAsset的seelct里面处理递归回显) 直接在实现层看atomAs…

conda修改环境名称后,无法安装包,显示no such file

1问题描述 原本创建环境时设置的名字不太合适&#xff0c;但是因为重新创建环境很麻烦&#xff0c;安装很多包。。所以想直接对包名进行修改&#xff0c;本人采用的方式是直接找到conda环境的文件目录&#xff0c;然后修改文件名&#xff0c;简单粗暴。确实修改成功了&#xf…

外卖系统开发的技术栈和架构设计

开发一个功能完备且高效的外卖系统&#xff0c;需要选择合适的技术栈并设计良好的系统架构。本文将详细介绍外卖系统开发过程中常用的技术栈以及架构设计的关键要点&#xff0c;帮助开发者构建一个高性能、可扩展且易维护的外卖平台。 1. 技术栈选择 选择合适的技术栈是开发…

京东二面:为什么Netty要造FastThreadLocal?

FastThreadLocal 从字面意义上来看&#xff0c;它是“Fast”“ThreadLocal”的结合体&#xff0c;寓意为快速的 ThreadLocal。那么&#xff0c;问题来了&#xff0c;Netty 为什么要再造一个 FastThreadLocal&#xff1f;FastThreadLocal 运行快的原因是啥&#xff1f;除了快之外…

colmap在windows上编译好的程序直接可以运行支持cuda

1.colamp简介 COLMAP 是一种通用的运动结构 (SfM) 和多视图立体 (MVS) 管道&#xff0c;具有图形和命令行界面。它为有序和无序图像集合的重建提供了广泛的功能。 2.数据采集 手机或者相机 绕 物体拍一周&#xff0c;每张的角度不要超过30&#xff08;保证有overlap区域&#…

整合SSM框架笔记

整合SSM框架笔记 Spring5 Spring MVC MyBatis Druid MySQL Thymeleaf 感谢尚硅谷课程&#xff1a;B站课程 前言 单Spring框架时&#xff0c;是Java工程。 Spring与Spring MVC可以共用一个配置文件&#xff0c;也可以不共用一个&#xff0c;推荐不共用一个。 Spring与Sp…

Scala编程基础3 数组、映射、元组、集合

Scala编程基础3 数组、映射、元组、集合 小白的Scala学习笔记 2024/5/23 14:20 文章目录 Scala编程基础3 数组、映射、元组、集合apply方法数组yield 数组的一些方法映射元组数据类型转换求和示例拉链集合flatMap方法 SetHashMap apply方法 可以new&#xff0c;也可以不new&am…

《STM32Cube高效开发教程基础篇》- 安装软件/Demo3_1LED

文章目录 下载两个软件安装问题记录在STM32CubeMX中新建项目编辑代码在CudeMX中完成图形化设置在CudeIdea中编码在CLion中编码&#xff08;智能化&#xff09; 效果图 下载两个软件 百度网盘链接&#xff1a;https://pan.baidu.com/s/1uXLWIIVCJbF4ZdvZ7k11Pw 提取码&#xff1…

Vue3使用Composition API实现响应式

title: Vue3使用Composition API实现响应式 date: 2024/5/29 下午8:10:24 updated: 2024/5/29 下午8:10:24 categories: 前端开发 tags: Vue3CompositionRefsReactiveWatchLifecycleDebugging 1. 介绍 Composition API是Vue.js 3中新增的一组API&#xff0c;用于在组件中组…

DNF手游攻略:开荒必备攻略!

DNF手游马上就要开服了&#xff0c;今天给大家带来最完整的DNF手游入门教程。这篇攻略主要讲述了 DNF手游开服第一天要注意的事项&#xff0c;这是一个新手必备的技能书&#xff0c;可以让你在开服的时候&#xff0c;少走一些弯路&#xff0c;让你更快完成任务&#xff01;废话…

深度学习创新点不大但有效果,可以发论文吗?

深度学习中创新点比较小&#xff0c;但有效果&#xff0c;可以发论文吗&#xff1f;当然可以发&#xff0c;但如果想让编辑和审稿人眼前一亮&#xff0c;投中更高区位的论文&#xff0c;写作永远都是重要的。 那么怎样“讲故事”才能让论文更有吸引力&#xff1f;我总结了三点…

富途面试题:用面向对象的思想设计人关门的场景

我工作两年后&#xff0c;有一次不成功的富途证券的面试&#xff0c;印象非常深刻&#xff0c;面试官提出了一个看似简单实则充满深意的问题&#xff1a;如何用面向对象的思想设计一个人关门的场景&#xff1f; 我当时是这样设计的&#xff0c;创建两个类&#xff1a;Person和D…

多语言印度红绿灯系统源码带三级分销代理功能

前端为2套UI&#xff0c;一套是html写的&#xff0c;一套是编译后的前端 后台功能很完善&#xff0c;带预设、首充返佣、三级分销机制、代理功能。 东西很简单&#xff0c;首页就是红绿灯的下注页面&#xff0c;玩法虽然单一&#xff0c;好在不残缺可以正常跑。

短视频脚本创作的五个方法 沈阳短视频剪辑培训

说起脚本&#xff0c;我们大概都听过影视剧脚本、剧本&#xff0c;偶尔可能在某些综艺节目里听过台本。其中剧本是影视剧拍摄的大纲&#xff0c;用来指导影视剧剧情的走向和发展&#xff0c;而台本则是综艺节目流程走向的指导大纲。 那么&#xff0c;短视频脚本是什么&#xf…

XV7011BB可为智能割草机的导航系统提供新的解决方案

智能割草机作为现代家庭和商业草坪维护保养的重要工具&#xff0c;其精确的定位和导航系统对于提高机器工作效率和确保安全运行至关重要。在智能割草机的发展历程中&#xff0c;定位和导航技术一直是关键的创新点。 传统的基于RTK(实时动态差分定位技术)技术的割草机虽然在…