目录
chapter 1 环境搭建
一、MySQL 8.0 的安装
二、创建学习用的数据库
chapter 2 初始数据库
一、初始数据库
二、初识SQL
已使用Navicat,因此对MySQL8.0安装下载不记录过程。
1、下载地址(官网下载也可)
下载链接:https://pan.baidu.com/s/1SOtMoVqqRXwa2qD0siHcIg提取码:80lf
备用下载链接:https://pan.baidu.com/s/1zK2vj50DvuAee-EqAcl-0A提取码:80lf
2、安装msi文件
注意有些组件需要额外安装,还有自行设置的账号密码要记住!很重要!!!
注意:由于学习课程中MySQL版本较高,当前已使用的MySQL版本较低,部分信息无法兼容,例如此类错误Unknown collation: 'utf8mb4_0900_ai_ci',需要替换成utf8_general_ci,
utf8mb4需要替换成utf8
根据课程提供的sql语句,修改完成之后在navicat中运行成功后,形成以下结构数据库:
1、数据库分类(根据数据保存格式)
层次数据库(Hierarchical Database,HDB)
关系数据库(Relational Database,RDB)如上是5种具有代表性的RDBMS,其特点是由行和列组成的二维表来管理数据,这种类型的 DBMS 称为关系数据库管理系统(Relational Database Management System,RDBMS)。
面向对象数据库(Object Oriented Database,OODB)
XML数据库(XML Database,XMLDB)
键值存储系统(Key-Value Store,KVS),举例:MongoDB
当前比较常用的是关系数据库,此次学习主要介绍的也是此类。
2、RDBMS常见系统结构
最常见的就是C/S(客户端/服务器)类型,即客户端向服务器发送请求,服务器收到请求后利用数据库程序将硬盘上的数据进行修改,将结果返回给客户端。
1、书写规范
参考资料:
2、数据库创建
CREATE DATABASE <名称> ;
3、数据库表创建
CREATE TABLE < 表名 >
( < 列名 1> < 数据类型 > < 该列所需约束 > ,
< 列名 2> < 数据类型 > < 该列所需约束 > ,
< 列名 3> < 数据类型 > < 该列所需约束 > ,
< 列名 4> < 数据类型 > < 该列所需约束 > ,
.
.
< 该表的约束 1> , < 该表的约束 2> ,……);
4、命名规则
5、数据类型的指定
注意:每一列都需要指定数据类型,且该列每一条数据都必须是该数据类型
四种最基本的数据类型
6、约束的设置
约束是对某一列中数据进行约束和限制,例如NOT NULL
是非空约束,即该列必须输入数据
7、表基本操作(增删改查)
7.1 删除
DROP TABLE < 表名 > ;
--需要特别注意的是,删除的表是无法恢复的,只能重新插入,请执行删除操作时要特别谨慎。
7.2 添加列
ALTER TABLE < 表名 > ADD COLUMN < 列的定义 >;
7.3 删除列
ALTER TABLE < 表名 > DROP COLUMN < 列名 >;
7.4 删除某一行
-- 一定注意添加 WHERE 条件,否则将会删除所有的数据
DELETE FROM product WHERE COLUMN_NAME='XXX';
7.5 清空表内容
TRUNCATE TABLE TABLE_NAME;
7.6 数据更新
UPDATE <表名>
SET <列名> = <表达式> [, <列名2>=<表达式2>...]
WHERE <条件> -- 可选,非常重要
ORDER BY 子句 --可选
LIMIT 子句; --可选
使用 update 时要注意添加 where 条件,否则将会将所有的行按照语句修改
7.7 多列更新
UPDATE product
SET sale_price = sale_price * 10,
purchase_price = purchase_price / 2
WHERE product_type = '厨房用具';
7.8 新增数据
INSERT INTO <表名> (列1, 列2, 列3, ……) VALUES (值1, 值2, 值3, ……);
原则上,执行一次 INSERT 语句会插入一行数据。插入多行时,通常需要循环执行相应次数的 INSERT 语句。其实很多 RDBMS 都支持一次插入多行数据
8、索引
MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。
创建索引的语句
CREATE INDEX index_name ON table_name (column_name);
练习题:
1、编写一条 CREATE TABLE 语句,用来创建一个包含表 1-A 中所列各项的表 Addressbook (地址簿),并为 regist_no (注册编号)列设置主键约束
表1-A 表 Addressbook (地址簿)中的列
答案:
DROP TABLE IF EXISTS address_book;
CREATE TABLE address_book(
regist_no INT NOT NULL COMMENT '注册编号' ,
name VARCHAR(128) NOT NULL COMMENT '姓名' ,
address VARCHAR(256) NOT NULL COMMENT '住址' ,
tel_no CHAR(10) COMMENT '电话号码' ,
mail_address CHAR(10) COMMENT '邮箱地址' ,
PRIMARY KEY (regist_no)
) COMMENT = '地址簿';
2、假设在创建练习1.1中的 Addressbook 表时忘记添加如下一列 postal_code (邮政编码)了,请编写 SQL 把此列添加到 Addressbook 表中。
列名 : postal_code
数据类型 :定长字符串类型(长度为 8)
约束 :不能为 NULL
ALTER TABLE address_book ADD COLUMN postal_code CHAR(8) NOT NULL COMMENT '邮政编码';
3、请补充如下 SQL 语句来删除 Addressbook 表。
( DROP ) table Addressbook;
4、是否可以编写 SQL 语句来恢复删除掉的 Addressbook 表?
不能。