(202307)wonderful-sql:初识数据库(task1)

news2024/11/25 4:45:47

学习知识

初识数据库

关系型数据库简介

特点是由行和列组成的二维表来管理数据,这种类型的 DBMS 称为关系数据库管理系统(Relational Database Management System,RDBMS)。本课程将向大家介绍使用 SQL 语言的数据库管理系统,也就是关系数据库管理系统(RDBMS)的操作方法。

在关系型数据库中,常见的是客户端 / 服务器类型(C/S类型)。通过客户端发出sql语言,向服务端请求数据,服务端像数据库中读取数据返回给客户端。

数据库中存储的表结构类似于excel中的行和列,在数据库中,行称为记录,它相当于一条记录,列称为字段,它代表了表中存储的数据项目。

SQL是为操作数据库而开发的语言。国际标准化组织(ISO)为 SQL 制定了相应的标准,以此为基准的SQL 称为标准 SQL。但实际上完全基于标准的RDBMS很少,不过datawhale教程中使用的都是标准的sql语言。

根据指令的不同,sql语句分为三类,数据定义语言DDL、数据操纵语言DML、数据控制语言DCL,教程中主要围绕DML来讲,因为其使用最多,实际使用的 SQL 语句当中有 90% 属于 DML。

语法规范

在datawhale的该项目的仓库中,有完整sql语法规范

命名规则

只能使用半角英文字母、数字、下划线(_)作为数据库、表和列的名称
名称必须以半角英文字母开头

数据类型的指定

在数据类型中,在其他语言中见得比较少的是VARCHAR类型,如其名“VAR CHAR"可变长字符串类型。

约束的设置

约束是除了数据类型之外,对列中存储的数据进行限制或者追加条件的功能。
NOT NULL是非空约束,即该列必须输入数据。
PRIMARY KEY是主键约束,代表该列是唯一值,可以通过该列取出特定的行的数据。

并且,在教程中给出的创建表的示例中,也可以把主键约束加到行后进行约束,即:

CREATE TABLE product
(
  product_id CHAR(4) NOT NULL PRIMARY KEY,
  product_name VARCHAR(100) NOT NULL,
  product_type VARCHAR(32) NOT NULL,
  sale_price INTEGER,
  purchase_price INTEGER,
  regist_date DATE
);

或者我们也可以对约束进行命名,将约束写为:

CONSTRAINT pk_product PRIMARY KEY (product_id)

即把约束命名为pk_product
创建表时也可以用DEFAULT设置默认值。

表的删除和更新

表的删除和更新主要有DROP、DELETE、ALTER、TRUNCATE等命令,需要注意的是删除后不可恢复的情况以及必须指定where的情况。
如果不指定where,那么修改(DELETE或UPDATE)将会作用于整个表。
UPDATE的SET语句也支持同时将多个列作为更新对象。

-- 合并后的写法
UPDATE product
   SET sale_price = sale_price * 10,
       purchase_price = purchase_price / 2
 WHERE product_type = '厨房用具';  

插入数据

INSERT语句可以用于添加数据。添加数据可以不列出列清单,不列出列清单将会从左往右依次添加。

-- 包含列清单
INSERT INTO productins (product_id, product_name, product_type, sale_price, purchase_price, regist_date) VALUES ('0005', '高压锅', '厨房用具', 6800, 5000, '2009-01-15');
-- 省略列清单
INSERT INTO productins VALUES ('0005', '高压锅', '厨房用具', 6800, 5000, '2009-01-15');  

并且,INSERT语句可以一次插入多行。

INSERT INTO productins VALUES ('0002', '打孔器', '办公用品', 500, 320, '2009-09-11'),
                              ('0003', '运动T恤', '衣服', 4000, 2800, NULL),
                              ('0004', '菜刀', '厨房用具', 3000, 2800, '2009-09-20'); 

如果想要赋值为空,那么将值写为NULL即可,但是只能对没有非空约束的列赋值为空哦。

也可以使用INSERT INTO...SELECT...FROM...来复制其他表中的数据。

索引

索引分为主键索引、唯一索引、普通索引、前缀索引、全文索引*(利用“分词技术”实现在长文本中搜索关键字的一种索引)、单列索引、联合索引(复合索引、多列索引)*等。

练习题

1

编写一条 CREATE TABLE 语句,用来创建一个包含表 1-A 中所列各项的表 Addressbook (地址簿),并为 regist_no (注册编号)列设置主键约束。

CREATE TABLE Addressbook
(
	regist_no INTEGER NOT NULL,
	name VARCHAR(128) NOT NULL,
	address VARCHAR(256) NOT NULL,
	tel_no CHAR(10),
	mail_address CHAR(20),
	PRIMARY KEY (regist_no)
);

在这里插入图片描述

2

假设在创建练习1.1中的 Addressbook 表时忘记添加如下一列 postal_code (邮政编码)了,请编写 SQL 把此列添加到 Addressbook 表中。
列名 : postal_code
数据类型 :定长字符串类型(长度为 8)
约束 :不能为 NULL

ALTER TABLE Addressbook ADD postal_code CHAR(8) NOT NULL;

在这里插入图片描述

3

请补充如下 SQL 语句来删除 Addressbook 表。

DROP TABLE Addressbook;

4

这是不可恢复的,无论是使用TRUNCATE TABLE 或 DELETE 清除数据还是使用DROP删除表,使用ALTER删除一列,都是不可恢复的,因为删除后数据没有被存放在任何地方,当然也就无法被恢复。

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

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

相关文章

No5:学习过程中基础语法积累

文章目录 基础语法:对象对象构建和数据封装 集合列表截取输出(特色是数据可变即可重新赋值)元组截取输出(元组特色是数据不可变)字典(根据key取value) 字符串函数 基础语法:对象 对…

【动态规划part04】| 背包问题理论基础、416.分割等和子集

目录 🎈背包问题理论基础 👜01背包 ✨二维dp数组01背包 ✨一维dp数组01背包(滚动数组) 🎈LeetCode416.分割等和子集 🎈背包问题理论基础 👜01背包 有n件物品和一个最多能背重量为w 的背…

AUTOSAR从入门到精通-【应用篇】基于 LIN 总线的汽车自动天窗防夹控制系统的设计与实现

目录 前言 天窗控制系统的 LIN 总线 2.1 LIN 总线概述 2.2 LIN 总线协议规范 2.3 防夹控制系统的 LIN 总线 2.4 系统 LIN 网络测试 天窗防夹控制系统整体设计方案 3.1 天窗防夹控制系统功能 3.2 控制系统总体设计 3.2.1 系统结构 3.2.2 天窗防夹控制器 3.2.3 天窗传…

小黑子—JavaWeb:第二章 Maven与MyBatis

JavaWeb入门2.0 1.Maven1.1 Maven 简介1.2 Maven 安装配置1.3 Maven 基本使用1.3.1 Maven常用命令1.3.2 Maven生命周期 1.4 IDEA 配置 Maven1.4.1 配置 Maven 环境1.4.2 Maven 坐标详情1.4.3 IDEA 创建Maven项目1.4.4 IDEA 导入Maven文件1.4.5 配置Maven-Helper 插件 1.5 依赖管…

逻辑斯特回归

*分类是离散的,回归是连续的 下载数据集 trainTrue:下载训练集 逻辑斯蒂函数保证输出值在0-1之间 能够把实数值映射到0-1之间 导函数类似正态分布 其他饱和函数sigmoid functions 循环神经网络经常使用tanh函数 与线性回归区别 塞戈马无参数&#x…

《嵌入式 - 工具》J-link读写MCU内部Flash

1 J-Link简介 J-Link是SEGGER公司为支持仿真ARM内核芯片推出的JTAG仿真器。配合IAR EWAR,ADS,KEIL,WINARM,RealView等集成开发环境支持所有ARM7/ARM9/ARM11,Cortex M0/M1/M3/M4, Cortex A5/A8/A9等内核芯片的仿真,是学…

VirtualBox 7.0.10 使用宿主机物理硬盘

方法: 利用virtualbox的管理工具,将宿主机脱机后的物理硬盘,映射为一个vmdk,然后在vitrualbox中注册该vmdk,然后分配给虚拟机使用。 1. 右键单击window桌面左下角,选择 Windows PowerShell (管理员) 2. c…

第一章 函数的概念

文章目录 考点1、定义域2、对应法则 一、函数的概念1、自变量 x , 因变量 y,一一对应,因此有公式 y f (x)2、定义域具体函数的定义域 (送分题) 真题1、2、3、4、抽象函数的定义域 真题1、2、 3、根据函数的对应法则求函数表达式题…

会声会影VideoStudio2023中文旗舰版有哪些新功能及最低系统配置要求

会声会影VideoStudio2023中文旗舰版使用起来很有趣。它很容易使用,但仍然给你很多功能和力量。会声会影VideoStudio2023中文旗舰版让我与世界分享我的想法!“这个产品的功能非常多,我几乎没有触及它的表面,我可以做大量的编辑、色…

js ==运算规则

let a {name: zhangsan,valueOf(){return 100;} }; let b 100; console.log(ab); //true let a {value: 1,valueOf: function() {return this.value;} };console.log(a 1 && a 2 && a 3); // 输出 true

macOS Sonoma 14 beta 3 (23A5286i) ISO、IPSW、PKG 下载,公共测试版现已推出

macOS Sonoma 14 beta 3 (23A5286i) ISO、IPSW、PKG 下载,公共测试版现已推出 本站下载的 macOS 软件包,既可以拖拽到 Applications(应用程序)下直接安装,也可以制作启动 U 盘安装,或者在虚拟机中启动安装…

树莓派安装ROS

ROS,树莓派如何快速部署ROS 版本查看 检查Raspbian版本的最简单方法是利用终端。 在开始之前,请确保已经开启了一个终端会话。 在Raspbian中使用一个简单的命令来获取当前版本。 要查看当前安装的Raspbian版本信息,需要做的就是执行下面的…

RT1052的介绍及MDK

文章目录 RT1052 核心板的资源型号为:RT1052CVL5B。GPIO端口原理LDOEEPROM 复位电路启动模式设置电路BootLoader地址 开发环境搭建新建 基于 FSL 库的 MDK5 工程软件下载SDK包SDK包内容boards 文件夹CMSIS 文件夹devices 文件夹middleware 文件夹: 新建工…

解决Git拉取代码仓库时显示文件名太长无法创建的问题解决

问题描述 拉取鸿蒙仓库应用示例代码时,鸿蒙应用示例代码,发现能下载成功,但是会报一个错误,错误截图和信息如下所示: 报错信息: try/src/main/ets/pages/pagelevelstagemanagement/multicompomentssync/ …

Redis的9种数据类型与数据持久化

系列文章传送门: 【七天入门数据库】第一天 MySQL的安装部署 【七天入门数据库】第二天 数据库理论基础 【七天入门数据库】第三天 MySQL的库表操作 【七天入门数据库】第四天 数据操作语言DML 一、Redis的9种数据类型的基本操作 (一)k…

服务器中了360后缀勒索病毒,360后缀勒索病毒介绍解密数据恢复

360后缀勒索病毒,是BeijingCrypt勒索家族中的一种勒索软件病毒,这种恶意软件一旦攻击了企业的服务器就会利用自身独特的加密技术来全盘扫描系统文件,并对用户的全部文件进行加密,并要求用户支付赎金以解锁文件。近期,我…

16matlab数据分析 多项式的求导(matlab程序)

1.简述 多项式的求导 polyder( ):多项式求导函数。调用格式: ( 1 ) ppolyder( P):求多项式P的导函数。 ( 2 ) ppolyder(P,Q):求PQ的导函数。 ( 3 ) [p,q]polyder(P,Q):求P/Q的导函数,导函数的分子存入p,分母存入q。 多项式的表示 多项式的四则运算 四…

i.MX6ULL(十七) linux LED驱动

1 设备树 LED 驱动原理 对于MX6ULL 点灯方式较多,直接通过寄存器操作更适合低成本设备,与裸机实验不同的是,在 Linux 下编写驱动要符合 Linux 的驱动框架。 但Linux 下的任何外设驱动,最终都是要配置相应的硬件寄存器&#xff0…

Spring中的Bean对象

经过上一篇博客,我们已经可以实现基本的 Spring 读取和存储对象的操作了,但在操作的过程中我们发 现读取和存储对象并没有想象中的那么“ 简单 ” ,所以接下来我们要学习更加简单的操作 Bean 对象的方法。 在 Spring 中想要 更简单的存储…

mac怎么转换音频格式?

mac怎么转换音频格式?相信很多小伙伴都知道,平时我们接触到的音频格式大多是mp3格式的,因为mp3是电脑上最为流行的音频格式,不过除了mp3格式外,还有很多不同的音频格式,有时候不同网上或者不同软件上下载到…