sql复习打卡记录

目录

chapter 1 环境搭建

一、MySQL 8.0 的安装

二、创建学习用的数据库

 chapter 2 初始数据库

一、初始数据库

二、初识SQL


chapter 1 环境搭建

一、MySQL 8.0 的安装

已使用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中运行成功后,形成以下结构数据库:

sql复习打卡记录_第1张图片

 chapter 2 初始数据库

一、初始数据库

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(客户端/服务器)类型,即客户端向服务器发送请求,服务器收到请求后利用数据库程序将硬盘上的数据进行修改,将结果返回给客户端。

二、初识SQL

1、书写规范

  • SQL语句要以分号( ; )结尾
  • SQL 不区分关键字的大小写,但是插入到表中的数据是区分大小写的
  • win 系统默认不区分表名及字段名的大小写
  • linux / mac 默认严格区分表名及字段名的大小写 * 本教程已统一调整表名及字段名的为小写,以方便初学者学习使用。
  • 常数的书写方式是固定的:'abc', 1234, '26 Jan 2010', '10/01/26', '2010-01-26'......
  • 单词需要用半角空格或者换行来分隔

参考资料:

  1. SQL编程风格https://zhuanlan.zhihu.com/p/27466166
  2. SQL Style Guidehttps://www.sqlstyle.guide/

2、数据库创建

CREATE DATABASE <名称> ;

 3、数据库表创建

CREATE TABLE < 表名 >
( < 列名 1> < 数据类型 > < 该列所需约束 > ,
  < 列名 2> < 数据类型 > < 该列所需约束 > ,
  < 列名 3> < 数据类型 > < 该列所需约束 > ,
  < 列名 4> < 数据类型 > < 该列所需约束 > ,
  .
  .
  < 该表的约束 1> , < 该表的约束 2> ,……);

4、命名规则

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

5、数据类型的指定

 注意:每一列都需要指定数据类型,且该列每一条数据都必须是该数据类型

四种最基本的数据类型

  • INTEGER 型
  • CHAR 型  存储定长字符串
  • VARCHAR 型  可变长度字符串
  • DATE 型

 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 (地址簿)中的列

sql复习打卡记录_第2张图片

 答案:

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 = '地址簿';

sql复习打卡记录_第3张图片

 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 '邮政编码';

sql复习打卡记录_第4张图片

sql复习打卡记录_第5张图片

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

(  DROP  ) table Addressbook;

4、是否可以编写 SQL 语句来恢复删除掉的 Addressbook 表?

不能。

你可能感兴趣的:(sql,mysql,数据库,database)