01 - 数据库和 SQL

数据库简介

数据库是什么?

  • 数据库是将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合。
  • 用来管理数据库的计算机系统称为数据库管理系统(DBMS)。
  • 通过使用DBMS,多个用户便可安全、简单地操作大量数据。
  • 数据库有很多种类,SQL语言是来操作关系数据库。
  • 关系数据库通过关系数据库管理系统(RDBMS)进行管理。

数据库(DB)
数据库管理系统(DBMS)


DBMS 分类

  • 层次数据库(Hierarchical Database,HDB)

把数据通过层次结构(树形结构)的方式表现出来


  • 关系数据库(Relational Database,RDB)

采用由行和列组成的二维表来管理数据,使用专门的 SQL(Structured Query Language,结构化查询语言)对数据进行操作。

这种类型的 DBMS 称为关系数据库管理系统(Relational Database Management System,RDBMS)具有代表性的 RDBMS 有如下 5 种:
Oracle Database :甲骨文公司的 RDBMS
SQL Server :微软公司的 RDBMS
DB2 :IBM 公司的 RDBMS
PostgreSQL :开源的 RDBMS
MySQL :开源的 RDBMS


  • 面向对象数据库(Object Oriented Database,OODB)

把数据以及对数据的操作集合起来以对象为单位进行管理


  • XML 数据库(XML Database,XMLDB)

XML{4[eXtensible Markup Language 的缩写,一种使用 HTML 那样的标签来表现数据结构的语言。以 铃木 这样的形式来保存数据。]} 作为在网络上进行交互的数据的形式逐渐普及起来。XML 数据库可以对 XML 形式的大量数据进行高速处理。


  • 键值存储系统(Key-Value Store,KVS)

这是一种单纯用来保存查询所使用的主键(Key)和值(Value)的组合的数据库。


数据库结构

  • 使用 RDBMS 时,最常见的系统结构就是客户端 / 服务器类型(C/S 类型)这种结构。

说明:

  1. 服务器指的是用来接收其他程序发出的请求,并对该请求进行相应处理的程序(软件),或者是安装了此类程序的设备(计算机)。在计算机上持续执行处理,并等待接收下一条请求。RDBMS 也是一种服务器,它能够从保存在硬盘上的数据库中读取数据并返回,还可以把数据变更为指定内容。
  2. 向服务器发出请求的程序(软件),或者是安装了该程序的设备(计算机)称为客户端。
  3. 关系数据库通过类似 Excel 工作表那样的、由行和列组成的二维表来管理数据。用来管理数据的二维表在关系数据库中简称为表。
    3-1. 表的列(垂直方向)称为字段,它代表了保存在表中的数据项目
    3-2. 表的行(水平方向)称为记录,它相当于一条数据。关系数据库必须以行为单位进行数据读写
01 - 数据库和 SQL_第1张图片
1-1.png
01 - 数据库和 SQL_第2张图片
1-2.png

SQL语句的分类

SQL 用关键字、表名、列名等组合而成的一条语句(SQL 语句)来描述操作的内容。关键字是指那些含义或使用方法已事先定义好的英语单词,存在包含“对表进行查询”或者“参考这个表”等各种意义的关键字。

  • DDL(Data Definition Language,数据定义语言)用来创建或者删除存储数据用的数据库以及数据库中的表等对象
  1. CREATE:创建数据库和表等对象
  2. DROP:删除数据库和表等对象
  3. ALTER:修改数据库和表等对象的结构
  • DML(Data Manipulation Language,数据操纵语言)用来查询或者变更表中的记录
  1. SELECT:查询表中的数据
  2. INSERT:向表中插入新数据
  3. UPDATE:更新表中的数据
  4. DELETE:删除表中的数据
  • DCL(Data Control Language,数据控制语言)用来确认或者取消对数据库中的数据进行的变更。除此之外,还可以对 RDBMS 的用户是否有权限操作数据库中的对象(数据库表等)进行设定。
  1. COMMIT:确认对数据库中的数据进行的变更
  2. ROLLBACK:取消对数据库中的数据进行的变更
  3. GRANT:赋予用户操作权限
  4. REVOKE:取消用户的操作权限

SQL 基本书写规则

  • SQL 语句要以分号(;)结尾
  • SQL 不区分关键字的大小写
  • 常数的书写方式是固定的
  1. 在 SQL 语句中直接书写的字符串、日期或者数字等称为常数
  2. SQL 语句中含有字符串的时候,需要像 'abc' 这样,使用单引号(')将字符串括起来,用来标识这是一个字符串。
  3. SQL 语句中含有日期的时候,同样需要使用单引号将其括起来。日期的格式有很多种('26 Jan 2010' 或者 '10/01/26' 等)
  4. 在 SQL 语句中书写数字的时候,不需要使用任何符号标识,直接写成 1000 这样的数字即可
  • SQL 语句的单词之间需使用半角空格或换行符来进行分隔。

代码清单

创建 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)
);

删除 Product 表

DROP TABLE Product;

添加一列可以存储100位的可变长字符串的product_name_pinyin列

-- DB2  PostgreSQL  MySQL
ALTER TABLE Product ADD COLUMN product_name_pinyin VARCHAR(100);

-- Oracle
ALTER TABLE Product ADD (product_name_pinyin VARCHAR2(100));

-- SQL Server
ALTER TABLE Product ADD product_name_pinyin VARCHAR(100);

删除 product_name_pinyin 列

SQL Server  DB2  PostgreSQL  MySQL
ALTER TABLE Product DROP COLUMN product_name_pinyin;

Oracle
ALTER TABLE Product DROP (product_name_pinyin);

向 Product 表中插入数据的 SQL 语句

-- SQL Server  PostgreSQL
-- DML :插入数据
BEGIN TRANSACTION;

INSERT INTO Product VALUES ('0001', 'T恤衫', '衣服', 1000, 500, '2009-09-20');
INSERT INTO Product VALUES ('0002', '打孔器', '办公用品', 500, 320, '2009-09-11');
INSERT INTO Product VALUES ('0003', '运动T恤', '衣服', 4000, 2800, NULL);
INSERT INTO Product VALUES ('0004', '菜刀', '厨房用具', 3000, 2800, '2009-09-20');
INSERT INTO Product VALUES ('0005', '高压锅', '厨房用具', 6800, 5000, '2009-01-15');
INSERT INTO Product VALUES ('0006', '叉子', '厨房用具', 500, NULL, '2009-09-20');
INSERT INTO Product VALUES ('0007', '擦菜板', '厨房用具', 880, 790, '2008-04-28');
INSERT INTO Product VALUES ('0008', '圆珠笔', '办公用品', 100, NULL,'2009-11-11');

COMMIT;

变更表名

Oracle  PostgreSQL
ALTER TABLE Poduct RENAME TO Product;

DB2
RENAME TABLE Poduct TO Product;

SQL Server
sp_rename 'Poduct', 'Product';

MySQL
RENAME TABLE Poduct to Product;

你可能感兴趣的:(01 - 数据库和 SQL)