Day1-初识SQL(DataWhale)

SQL目录

基础SQL的学习,持续更新。

Day1 初识SQL

一、初识数据库

1. DBMS的分类

2. RDBMS的常见系统结构

二、初识SQL

1. SQL语句分类

2. SQL基本书写标准

3. 命名规则

4. 数据类型

5. 约束的设置

三、SQL语句

1. 数据库创建

2. 数据库的使用

3. 表的创建

4. 表的删除

5. 表的更新

6. 数据的插入

7. 数据的删除

8. 数据的更新

练习题

小言



Day1 初识SQL

Day1-初识SQL(DataWhale)_第1张图片

一、初识数据库

数据库是将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合。该数据集合称为数据库(Database, DB)。用来管理数据库的计算机系统称为数据库管理系统(Database Management System, DBMS)。

1. DBMS的分类

通过数据的保存格式(数据库的类型)来进行分类,现阶段5种类型

  • 层次数据库(Hierarchical Database, HDB)
    • 将数据组织成有向有序的树结构,并用"一对多"的关系联结不同层次的数据库
  • 关系数据库(Relational Database, RDB)
    • 采用行和列组成的二维表来管理数据
    • 这种类型的DBMS称为RDBMS(Relatioanl Database Management System)
      • Oracle Database: 甲骨文公司的RDBMS
      • SQL Server: 微软公司的RDBMS
      • DB2: IBM公司的RDBMS
      • PostgreSQL: 开源的RDBMS
      • MySQL: 开源的RDBMS
  • 面向对象数据库(Object Oriented Database, OODB)
    • 持久的、可共享的对象库的存储和管理者
  • XML数据库(XML Database, XMLDB)
    • 支持对XML(标准通用语言下的一个应用)格式文档进行存储和查询
  • 键值存储系统(Key-Value Store, KVS)

2. RDBMS的常见系统结构

 

Day1-初识SQL(DataWhale)_第2张图片

 

二、初识SQL

Day1-初识SQL(DataWhale)_第3张图片

1. SQL语句分类

Day1-初识SQL(DataWhale)_第4张图片

2. SQL基本书写标准

  • 以分号结尾
  • 关键字不区分大小写,表中的数据区分大小写
  • win系统不区分表名及字段名的大小写
  • 常数的书写方式是固定的
    • 'abc', 1234, '26 Jan 2010', '10/01/26', '2010-01-26'
  • 单词需要用半角空格或换行来分隔

3. 命名规则

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

Day1-初识SQL(DataWhale)_第5张图片

4. 数据类型

Day1-初识SQL(DataWhale)_第6张图片

5. 约束的设置

对列中的数据进行限制或追加条件的功能

Day1-初识SQL(DataWhale)_第7张图片

三、SQL语句

1. 数据库创建

CREATE DATABASE <数据库名称>;

2. 数据库的使用

USE DATABASE <数据库名称>;

3. 表的创建

CREATE TABLE <表名>
(<列名1> <数据类型> <约束>,
 <列名2> <数据类型> <约束>,
 … …
 <表的约束1>,<表的约束2>);
CREATE DATABASE shop; ---创建shop数据库

use shop; --- 使用shop数据库

CREATE TABLE material_table
(materialcode VARCHAR(5) NOT NULL,
 materialdescription VARCHAR(255) ,
 materialtype VARCHAR(255),
 labelprice decimal(20,2),
 saledate date,
 quantity decimal(20,2),
 amount decimal(20,2),
 PRIMARY KEY (materialcode));

---创建material_table表,主键为materialcode 

4. 表的删除

DROP TABLE <表名>; ---删除整张表

  删除的表是无法恢复的,只能重新插入

5. 表的更新

ALTER TABLE <表名> ADD COLUMN <列的定义>;---添加列

ALTER TABLE <表名> DROP COLUMN <列的定义>; ---删除列

6. 数据的插入

INSERT INTO <表名> (列1, 列2, ……) VALUES (值1,值2,……);
---对全列进行插入时可以省略列名
INSERT INTO  material_table VALUES('00006','键盘','办公用品',233,'2020-10-15',20,4660);

--插入多行
INSERT INTO  material_table VALUES ('00002','铅字笔','文具',2,'2020-10-10',40,80),
('00005','鼠标','办公用品',99,'2020-10-14',240,23760);
 
---插入其他表复制的数据
INSERT INTO material_table_copy(materialcode, materialdescription, materialtype, labelprice, saledate, quantity, amount)
SELECT materialcode, materialdescription, materialtype, labelprice, saledate, quantity, amount
FROM material_table;

7. 数据的删除

TRUNCATE TABLE TABLE_NAME; ---清空表内容

DELETE  FROM  TABLE_NAME; ---删除表内容

 truncate清除数据的速度比drop/delete快

8. 数据的更新

---数据的更新
UPDATE <表名>
SET <列名> = <表达式> [,<列名2> = <表达式2>]
WHERE <条件>  ---可选,限制条件
ORDER BY 子句; ---可选,排序
LIMIT 子句; ---可选,限制数据数量
UPDATE material_table
    SET saledate = '2020-10-09'
WHERE materialcode = '00001';

---UPDATE可以将NULL作为值使用(非NOT NULL和主键约束)
UPDATE material_table
    SET saledate = NULL
WHERE materialcode = '00001';

练习题

1.1 创建包含以下字段的表Addressbook,regist_no设置主键约束

Day1-初识SQL(DataWhale)_第8张图片

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(10),
PRIMARY KEY(regist_no)
);

1.2 在Addressbook中添加列postal_code(邮政编码),定长字符串(8),不能为空

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

1.3 编写SQL语句删除Addressbook表

DROP TABLE Addressbook;

1.4 编写SQL语句恢复删除的Addressbook表

 删除的表格只能通过新建的方式重建

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(10),
postal_code CHAR(8) NOT NULL,
PRIMARY KEY(regist_no)
);

 

小言

以上就是今天的内容,仅仅简单介绍了一下SQL,希望大家可以根据练习题检测一下自己。之后会持续更新~

你可能感兴趣的