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

本文介绍了关系型数据库的基本概念,包括行和列组成的二维表结构,客户端/服务器模型,以及SQL语言的作用。文章详细讲解了SQL的DML,如INSERT、UPDATE、DELETE,并提到了数据类型、约束和索引的概念。此外,还提供了创建和修改表的示例,以及数据操作的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习知识

初识数据库

关系型数据库简介

特点是由行和列组成的二维表来管理数据,这种类型的 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删除一列,都是不可恢复的,因为删除后数据没有被存放在任何地方,当然也就无法被恢复。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

早上真好

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值