SQL基础教程(第2版)第1章 数据库和SQL

第1章 数据库和SQL

数据库有很多种类,本书将介绍如何使用专门的 SQL语言来操作关系数据库。
用来管理数据库的计算机系统称为数据库管理系统(DBMS)。 


1-1 数据库是什么

系统的使用者通常无法直接接触到数据库。因此,在使用系统的时候往往意识不到数据库的存在。
像这样将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合称为数据库(Database, DB)。

1-2 数据库的结构

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

根据 SQL 语句的内容返回的数据同样必须是二维表的形式,这也是关系数据库的特征之一。

关系数据库必须以行为单位进行数据读写,请大家牢记。


1-3 第1章 SQL概要

国际标准化组织(ISO)为 SQL 制定了相应的标准 ,
本书将介绍以 [SQL :2003] 为基准的标准 SQL 的书写方式。

● DDL(Data Definition Language,数据定义语言) 

● DML(Data Manipulation Language,数据操纵语言)用来查询或者变更表中的记录。 DML 包含以下几种指令。
SELECT:查询表中的数据
INSERT:向表中插入新数据
UPDATE:更新表中的数据
DELETE:删除表中的数据

● DCL(Data Control Language,数据控制语言)

SQL语句要以分号( ;)结尾

SQL语句不区分大小写

● 关键字大写
● 表名的首字母大写
● 其余(列名等)小写

单词需要用半角空格或者换行来分隔

常数的书写方式是固定的

 日期的格式有很多种('26 Jan 2010' 或者 '10/01/26' 等),本书统一使用 '2010-01-26' 这种 ' 年 - 月 - 日 ' 的格式。

1-4 表的创建

● 表通过CREATE TABLE语句创建而成。
● 指定列的数据类型(整数型、字符型和日期型等)。
● 可以在表中设置约束(主键约束和NOT NULL约束等)。


数据库的创建

CREATE DATABASE shop;

表的创建 

 

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));
View Code

数据类型的指定 

VARCHAR型可变长字符串

CHAR 类型一样, VARCHAR 型也是用来指定存储字符串的列的数据类型,也可以通过括号内的数字来指定字符串的长度(最大长度)。但该类型的列是以可变长字符串的形式来保存字符串的 
定长字符串在字符数未达到最大长度时会用半角空格补足,但可变长字符串不同,即使字符数未达到最大长度,也不会用半角空格补足。

例如,我们向 VARCHAR(8) 类型的列中输入字符串'abc的时候,保存的就是字符串'abc'
该类型的列中存储的字符串也和 CHAR 类型一样,是区分大小写的。

Oracle中使用VARCHAR2(Oracle中也有VARCHAR这种数据类型,但并不推荐使用)。


约束的设置

约束是除了数据类型之外,对列中存储的数据进行限制或者追加条件的功能。 Product 表中设置了两种约束。 

另外,在创建 Product 表的 CREATE TABLE 语句的后面,还有下面这样的记述。 


1-5 表的删除和更新

● 表的删除( DROP TABLE语句)

DROP TABLE <表名>;

● 表定义的更新( ALTER TABLE语句)

有时好不容易把表创建出来之后才发现少了几列,其实这时无需把表删除再重新创建,只需使用变更表定义的 ALTER TABLE 语句就可以了。
ALTER 在英语中就是“改变”的意思。

Product表中插入数据

List1_6_MySQL.sql

--MySQL
-- DML:插入数据
START 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;
View Code

List1_6_Oracle_DB2.sql

--Oracle DB2
-- DML:插入数据
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;
View Code

List1_6_SQLServer_PostgreSQL.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;
View Code

修改TABLE的名称

 

部分内容来自于学习编程期间收集于网络的免费分享资源和工作后购买的付费内容。
原文地址:https://www.cnblogs.com/MarlonKang/p/12219503.html