SQL学习笔记1——数据库基础
1. 什么是数据库?
将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合成为数据库(Database,DB)。
2. 什么是DBMS?
用来管理数据库的计算机系统称为数据库管理系统(Database Management System,DBMS)。
3. 为什么要DBMS?
- 可以多人共享数据
- 方便提供了操作大量数据所需的格式
- 实现读写自动化,通过SQL语句就可以查询
- 数据可靠性,当文件被误删、硬盘出现故障等导致无法读取的时候,可以恢复
4. DBMS种类
- 层次数据库(Hierarchical Database,HDB),现在很少使用
- 关系数据库(Relational Database,RDB),使用专门的 SQL(Structured Query Language,结构化查询语言)对数据进行操作,例如:Oracle Database、PostgreSQL、MySQL等
- 面向对象数据库(Object Oriented Database,OODB)
- XML 数据库(XML Database,XMLDB)
- 键值存储系统(Key-Value Store,KVS)
法则1-1 关系数据库以行为单位读写数据
法则1-2 一个单元格中只能输入一个数据
5. SQL 概要
- SQL是为操作数据库而开发的语言。
- 虽然SQL也有标准,但实际上根据RDBMS的不同SQL也不尽相 同。
- SQL通过一条语句来描述想要进行的操作,发送给RDBMS。
- 原则上SQL语句都会使用分号结尾。
- SQL根据操作目的可以分为DDL、DML和DCL。
法则 1-3 学会标准 SQL 就可以在各种 RDBMS 中书写 SQL 语句了
6. SQL语句
SQL 用关键字、表名、列名等组合而成的一条语句(SQL 语句)来描 述操作的内容。
- DDL(Data Definition Language),数据定义语言,用来创建或者删除存储数据用的数据库以及数据库中的表等对象。
- CREATE:创建数据库和表等对象
- DROP:删除数据库和表等对象
- ALTER:修改数据库和表等对象的结构
- DML(Data Manipulation Language,数据操纵语言)用来查询或 者变更表中的记录。
- SELECT:查询表中的数据
- INSERT:向表中插入新数据
- UPDATE:更新表中的数据
- DELETE:删除表中的数据
- DCL(Data Control Language,数据控制语言)用来确认或者取 消对数据库中的数据进行的变更。
- COMMIT:确认对数据库中的数据进行的变更
- ROLLBACK:取消对数据库中的数据进行的变更
- GRANT:赋予用户操作权限
- REVOKE:取消用户的操作权限
法则 1-4 SQL 根据功能不同可以分为三类,其中使用最多的是DML。
7. SQL 的基本书写规则
- SQL语句以分号(
;
)结尾 - SQL语句不区分大小写,但是为了方便理解,使用以下规则来书写SQL语句。但是插入到表中的数据是区分大小写的。
- 关键字大写
- 表名的首字母大写
- 其余小写
- 常数的书写方式是固定的,使用单引号(
'
)将字符串括起来,用来标识这是一个字符串。SQL 语句中含有日期的时候,同样需要使用单引号将其括起来。在 SQL 语句中书写数字的时候,不需要使用任何符号标识,直接 写成 1000 这样的数字即可。 - 单词需要用半角空格或者换行来分隔
法则 1-5 SQL 语句以分号(;)结尾。
法则 1-6 关键字不区分大小写。
法则 1-7 字符串和日期常数需要使用单引号(')括起来。数字常数无需加注单引号(直接书写数字即可)。
法则 1-8 单词之间需要使用半角空格或者换行符进行分隔。
8. 表的创建
- 表通过 CREATE TABLE语句创建而成。
- 表和列的命名要使用有意义的文字。
- 指定列的数据类型(整数型、字符型和日期型等)。
- 可以在表中设置约束(主键约束和 NOT NULL 约束等)。
- 数据库创建语法
// 创建shop数据库
CREATE DATABASE shop;
- 表的创建语法
CREATE TABLE <表名>
(<列名1> <数据类型> <该列所需约束>,
<列名2> <数据类型> <该列所需约束>,
<列名3> <数据类型> <该列所需约束>,
<列名4> <数据类型> <该列所需约束>,
.
.
.
<该表的约束1>,
<该表的约束2>,……);
该语法清楚地描述了我们要创建一个包含 < 列名 1>、< 列名 2>、…… 的名称为 < 表名 > 的表。
每一列的数据类型(后述)是 必须要指定的,还要为需要的列设置约束(后述)。
约束可以在定义列 的时候进行设置,也可以在语句的末尾进行设置 。
例:创建 Product 表的CREATE TABLE 语句
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-9 数据库名称、表名和列名等可以使用以下三种字符:半角英文字母、半角数字、下划线(_)
法则 1-10 名称必须以半角英文字母作为开头。(标准SQL中定义)
法则 1-11 名称不能重复。
- 数据类型
数据类型表示数据的种类,包括数字型、字符型和日期型等。每一列都不能存储与该列数据类型不符的数据。
INTEGER型,用来指定存储整数的列的数据类型(数字型),不能存储小数。
CHAR型,CHAR 是 CHARACTER(字符)的缩写,是用来指定存储字符串的列的数据类型(字符型)。可以像 CHAR(10) 或者 CHAR(200) 这样,在括号中指定该列可以存储的字符串的长度(最大长度),超过长度则不能输入到该列中。未达到长度会以半角空格补足。
VARCHAR型,VARCHAR 型也是用来指定存储字符串的列的数 据类型(字符串类型),也可以通过括号内的数字来指定字符串的 长度(最大长度)。长度可变,未达到长度不会补足。
DATE型,用来指定存储日期(年月日)的列的数据类型(日期型)。
- 约束设置
约束是除了数据类型之外,对列中存储的数据进行限制或者追加条件的功能。
NOT NULL 约束,NULL 是代表空白(无记录) 的关键字,在 NULL 之前加上了表示否定的 NOT,就是给该列设置了不能输入空白,也就是必须输入数据的约束(如果什么都不输入就会出错)。
主键约束,所谓键,就是在指定特定数据时使用的列的组合。键种类多样,主键(primary key)就是可以特定一行数据的列(唯一性)。主键数据不能重复。
9. 表的删除和更新
- 使用DROP TABLE语句来删除表。
- 使用ALTER TABLE语句向表中添加列或者从表中删除列。
- 删除表时使用的 DROP TABLE 语句:
DROP TABLE <表名>;
法则 1-12 删除了的表是无法恢复的。
- 表定义的更新(ALTER TABLE 语句)
// 添加列
ALTER TABLE <表名> ADD COLUMN <列的定义>;
// 添加多列
ALTER TABLE <表名> ADD (<列名>,<列名>,……);
// 删除列的 ALTER TABLE 语句
ALTER TABLE <表名> DROP COLUMN <列名>;
法则 1-13 表定义变更之后无法恢复。
- 向 Product 表中插入数据
INSERT INTO Product VALUES ('0003', '运动T恤', '衣服', 4000, 2800, NULL);
总结
我们学习了数据库是什么,以及数据库的结构和种类,接触了基础SQL语句和SQL的基本书写规则,对一些数据库的基本操作有了了解,如库表的创建、数据类型、库表的约束设置以及表单删除和更新等。