ch0 环境搭建

由于之前装过MySQL5.6,所以环境是现成的,由于很久没用过,对于一些指令不熟,导致走了一些弯路,比如:
1,用指令时报出了一些警告,其实可以不去理会的;
2,执行sql脚本文件:使用cmd命令执行(windows下,unix或linux在的其控制台下)
【Mysql的bin目录】\mysql –u用户名 –p密码 –D数据库<【sql脚本文件路径全名】,eg:
D:\mysql\bin\mysql –uroot –p123456 -Dtesta.把文件中的所有的utf8mb4_0900_ai_ci替换为utf8_general_ci ;
b.把文件中的所有的utf8mb4替换为utf8。
(可参考博文https://blog.csdn.net/yinzitun7947/article/details/89917611。)
通过这种方式虽然解决了error1273,但是又有新问题出现了:MySQL插入中文时出现ERROR 1406 (22001): Data too long for column ‘name’ at row 1,于是放弃了命令行窗口登陆方式,用Navicat导入sql解决。(可参考https://blog.csdn.net/mydeman/article/details/1665997)

ch1 初识数据库

大部分数据库都是关系型数据,存储的是结构化数据,以关系模型来组织数据。数据库事务必须具备ACID特性,ACID分别是Atomic原子性,Consistency一致性,Isolation隔离性,Durability持久性。当今十大主流的关系型数据库Oracle,Microsoft SQL Server,MySQL,PostgreSQL,DB2,Microsoft Access, SQLite,Teradata,MariaDB(MySQL的一个分支),SAP;非关系型数据库:指非关系型的,分布式的,且一般不保证遵循ACID原则的数据存储系统。非关系型数据库以键值对存储,且结构不固定,每一个元组可以有不一样的字段,每个元组可以根据需要增加一些自己的键值对,不局限于固定的结构,可以减少一些时间和空间的开销。2个主流非关系型数据库:Redis,MongoDB。
对于SQL的基本操作,通过练习题来加深印象。

练习题1.1

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

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

练习题1.2

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

练习题1.3

请补充如下 SQL 语句来删除 Addressbook 表。
解答:
_Drop table Addressbook;_

练习题1.4

是否可以编写 SQL 语句来恢复删除掉的 Addressbook 表?
解答:
否。被删除的表无法恢复,只能重新插入。