SQL目录
基础SQL的学习,持续更新。
Day1 初识SQL
一、初识数据库
数据库是将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合。该数据集合称为数据库(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的常见系统结构
二、初识SQL
1. SQL语句分类
2. SQL基本书写标准
- 以分号结尾
- 关键字不区分大小写,表中的数据区分大小写
- win系统不区分表名及字段名的大小写
- 常数的书写方式是固定的
- 'abc', 1234, '26 Jan 2010', '10/01/26', '2010-01-26'
- 单词需要用半角空格或换行来分隔
3. 命名规则
- 使用半角英文字母、数字、下划线作为数据库、表和列的名称
- 名称必须是半角英文字母开头
4. 数据类型
5. 约束的设置
对列中的数据进行限制或追加条件的功能
三、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设置主键约束
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,希望大家可以根据练习题检测一下自己。之后会持续更新~