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

news2024/9/20 6:04:43

文章目录

  • 创建表格的时候出现的一些错误
  • 查询所有的表格
  • 实验一
  • 查询单个表格
  • 分块
  • 修改大学数据库表格
  • 创建大学数据库表格
    • 课程
    • 教师
    • 课程段
    • 授课
    • 学生
    • 选课
    • 注意
    • 吐槽
  • 修改大学数据库表格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
);

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

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

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

相关文章

【ONE·Git || 基本用法入门】

总言 主要内容&#xff1a;主要介绍Git中常用的指令。   PS&#xff1a;多人协作与企业开发模型使用&#xff0c;此部分内容不作博文总结。             文章目录 总言1、初识Git1.1、版本控制器1.2、git安装 2、基本操作2.1、Git本地仓库2.1.1、创建Git本地仓库&…

C++【缺省参数|函数重载|引用】

目录 1 缺省参数 1.1 全缺省 1.2 半缺省 注意 1.3 应用 2 函数重载 函数重载的概念 1、参数类型不同 2、参数个数不同 3、参数类型顺序不同 3 引用 3.1 引用概念 3.2 引用特性 3.3 常引用 3.4 使用场景 3.5 传值、传引用效率比较 3.6 引用和指针的区别 1 缺…

RestTemplet 自定义消息转换器总结

在RestTemplet 请求中&#xff0c;请求发送一个 HTTP 请求时&#xff0c;RestTemplet 会根据请求中的内容类型&#xff08;Content-Type&#xff09;选择合适的 HttpMessageConverter 来处理请求体的数据。同样地&#xff0c;当服务器返回一个 HTTP 响应时&#xff0c;RestTemp…

上位机图像处理和嵌入式模块部署(f103 mcu中main入口函数误解)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 学习stm32代码的时候&#xff0c;关于汇编文件&#xff0c;大家一般都会参考官方给出的汇编文件。通常情况下&#xff0c;不会自己去写汇编文件。特…

决策树模型-预测用户是否购买某母婴产品

1&#xff0c;场景描述 假设我们是京东的数据分析师&#xff0c;负责分析母婴产品的购买行为。我们想预测用户是否会购买一款新上线的母婴产品。为了进行预测&#xff0c;我们将利用用户的历史购买数据、浏览行为和其他特征&#xff0c;通过决策树模型进行分析&#xff0c;并提…

全球市值最高的能源公司沙特阿美股份拟出售,筹集百亿美元

KlipC报道&#xff1a;据5月28日市场消息&#xff0c;沙特政府可能最快会在本周宣布拟出售国营石油公司沙特阿美股份&#xff0c;筹集100亿-200亿美元。 沙特阿美是世界最大的石油生产商&#xff0c;2019年在沙特证交所上市。沙特的经济高度依赖石油出口。此前&#xff0c;受石…

Vue2基本创建项目

简单版项目初始化 新建一个vue2 官网文档&#xff1a;介绍 — Vue.js 先确保下载了vue的脚手架 npm install -g vue-cli npm install -g vue/cli --force vue -V 创建项目 vue create 自己起个名字 选择自己选择特性 选择&#xff1a; Babel&#xff1a;他可以将我们写…

算法的时间复杂度(详解)

前言&#xff1a; 算法(Algorithm):就是定义良好的计算过程&#xff0c;他取一个或一组的值为输入&#xff0c;并产生出一个或一组值作为 输出。简单来说算法就是一系列的计算步骤&#xff0c;用来将输入数据转化成输出结果 一、算法效率 1.1 如何衡量一个算法的好坏 如何衡…

人工智能初识

&#x1f31e;欢迎来到人工智能基础的世界 &#x1f308;博客主页&#xff1a;卿云阁 &#x1f48c;欢迎关注&#x1f389;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f31f;本文由卿云阁原创&#xff01; &#x1f4c6;首发时间&#xff1a;&#x1f339;2024年5月1…

小程序内的分包与数据共享

一:数据共享 小程序内的数据共享和vue当中不一样,vue当中的vue实例可以使得所有的组件都能this.store 但是小程序它只有page对象,和组件实例对象.对于vue而言,vue实例可以使得添加的组件都有. 但是page对象页面对象,不能使得页面内部有.只能使得这个页面内能访问.vue实例,会…

微信聊天内容怎么监控? | 三款可以监控电脑微信聊天记录的软件大盘点

你是否听说过监控微信呢&#xff1f; 有时出于特定需求&#xff0c;比如家长对孩子上网行为的关心&#xff0c;或者企业对员工工作效率的监控&#xff0c;可能需要了解某些情况下的微信聊天记录。 但请注意&#xff0c;任何未经授权的监控行为都是违法的&#xff0c;并且可能…

使用C语言实现学生信息管理系统

前言 在我们实现学生信息管理系统的过程中&#xff0c;我们几乎会使用到C语言最常用最重要的知识&#xff0c;对于刚学习完C语言的同学来说是一次很好的巩固机会&#xff0c;其中还牵扯到数据结果中链表的插入和删除内容。 实现学生信息管理系统 文件的创建与使用 对于要实现…

【国产中颖】SH79F9202U单片机驱动LCD段码液晶学习笔记

1. 引言 因新公司之前液晶数显表产品单片机一直用的是 C51单片机(SH79F9202U9)&#xff0c;本人之前没有接触过这款单片机&#xff0c;为了维护老产品不得不重新研究研究这款单片机。 10位ADC LCD的增强型8051微控制器 SH79F9202是一种高速高效率8051可兼容单片机。在同样振…

5G工厂长啥样

5G工厂是一种新型的工业互联网基础设施&#xff0c;利用5G为代表的新一代信息通信技术集成&#xff0c;打造新型工业互联网基础设施。在5G工厂中&#xff0c;自动化和智能化设备广泛使用&#xff0c;高度互联的工厂网络得以实现&#xff0c;远程监控和管理成为可能&#xff0c;…

鸿蒙应用模型:【Stage模型开发】概述

Stage模型开发概述 基本概念 下图展示了Stage模型中的基本概念。 图1 Stage模型概念图 [AbilityStage] 每个Entry类型或者Feature类型的HAP在运行期都有一个AbilityStage类实例&#xff0c;当HAP中的代码首次被加载到进程中的时候&#xff0c;系统会先创建AbilityStage实例…

微信网页版登录插件v1.1.1

说到如今的微信客户端&#xff0c;大家肯定会有很多提不完的意见或者建议。比如这几年体积越来越大&#xff0c;如果使用频率比较高&#xff0c;那占用空间就更离谱了。系统迷见过很多人电脑C盘空间爆满&#xff0c;都是由于微信PC版造成的。 而且&#xff0c;它还加了很多乱七…

【第8章】SpringBoot之单元测试

文章目录 前言一、准备1. 引入库2. 目录结构 二、测试代码1. SpringBoot3ApplicationTests2.测试结果 总结 前言 单元测试是SpringBoot项目的一大利器&#xff0c;在SpringBoot我们可以很轻松地测试我们的接口。 一、准备 1. 引入库 <dependency><groupId>org.s…

【JS基础知识07】函数

一&#xff1a;函数是什么以及函数作用 1 函数是什么 函数是经过封装、调用后&#xff0c;能够完成特定任务的代码块 2 函数的作用 仅需“函数名(实参)”就可以调用函数&#xff0c;起到精简代码&#xff0c;提高开发效率的作用 二&#xff1a;函数使用 1 语法规则&#…

Android 控件保持宽高比得几种方式

文章目录 Android 控件保持宽高比得几种方式adjustViewBounds百分比布局ConstraintLayout自定义View Android 控件保持宽高比得几种方式 adjustViewBounds 仅适用于 ImageView&#xff0c;保持横竖比。 <ImageViewandroid:layout_width"match_parent"android:l…

【使用ChatGPT构建应用程序】应用程序开发概述:1. 管理秘钥、2. 数据安全、3. 与应用程序解耦、4. 注意提示语的注入攻击

文章目录 一. 首先注意的两个方面1. 管理API密钥1.1. 用户提供API密钥1.2. 你自己提供API密钥 2. 数据安全和数据隐私 二. 软件架构设计原则&#xff1a;与应用程序解耦三. 注意LLM提示语的注入攻击1. 分析输入和输出2. 监控和审计3. 其他要注意的注入情况 在了解了ChatGPT的文…