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

大家都知道数据库的入门经典书籍是《SQL必知必会》,这本书十分简练,可以作为快速入门和查询的小册子.

但是《SQL基础教程(第2版)》可能更适合零基础入门阅读. 整本书节奏平缓,配合大量例子,图文并茂,深入简出,易读易懂.

书中的SQL语句, 使用了以下五种数据库管理系统进行了验证Oracle Database、SQL Server、DB2、PostgreSQL、MySQL

5种RDBMS之间存在差异的SQL语句,或者只能在某种特定的RDBMS中使用的SQL语句,书中都用特定图标进行标识.方便对比学习.

我这里主要是MySQL语句,其他语句的差异可以参考原书中内容.

第一章 数据库和SQL

Part11.3 SQL概要

1.3.1 SQL语句及其种类

SQL用关键字、表名、列名等组合而成的一条语句(SQL语句)来描述操作的内容. 关键字是指那些含义或使用方法已事先定义好的英语单词, 存在包含"对表进行查询"或者"参考这个表"等各种意义的关键字. 根据对RDBMS赋予的指令种类的不同, SQL语句可以分为以下三类:

一 DDL(数据定义语言)

DDL(Data Definition Language,数据定义语言)用来创建或者删除存储数据用的数据库以及数据库中的表等对象.DDL包含以下几种指:

  1. CREATE: 创建数据库和表等对象
  2. DROP: 删除数据库和表等对象
  3. ALTER: 修改数据库和表等对象的结构

二 DML(数据操纵语言)

DML(Data Manipulation Language,数据操纵语言)用来查询或者变更表中的记录. DML包含以下几种指令:

  1. SELECT: 查询表中的数据
  2. INSERT: 向表中插入新数据
  3. UPDATE: 更新表中的数据
  4. DELETE: 删除表中的数据

三 DCL(数据控制语言)

DCL(Data Control Language,数据控制语言)用来确认或者取消对数据库中的数据进行的变更. 除此之外, 还可以对RDBMS的用户是否有权限操作数据库中的对象(数据库表等)进行设定. DCL包含以下几种指令:

  1. COMMIT: 确认对数据库中的数据进行的变更
  2. ROLLBACK: 取消对数据库中的数据进行的变更
  3. GRANT: 赋予用户操作权限
  4. REVOKE: 取消用户的操作权限

==实际使用的SQL语句当中有90%属于DML==

1.3.2 SQL的基本书写规则

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

SQL语句则使用分号(;)结尾

二 SQL语句不区分大小写

==SQL不区分关键字的大小写==

默认规则书写SQL语句:

  1. 关键字大写
  2. 表名的首字母大写
  3. 其余(列名等)小写

但是插入到表中的数据是区分大小写的. 例如, 在操作过程中, 数据Computer、COMPUTER 或 computer, 三者是不一样的.

三 常数的书写方式是固定的

SQL语句常常需要直接书写字符串、日期或者数字

在SQL语句中直接书写的字符串、日期或者数字等称为常数.

常数的书写方式如下所示:

  1. 字符串使用单引号, 如 'abc'
  2. 日期使用单引号, 如 '2020--1-23'
  3. 数字, 不需要符号标识, 直接书写.

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

SQL 语句的单词之间需使用半角空格或换行符来进行分隔

Part21.4 表的创建

1.4.1 数据库的创建(CREATE DATABASE 语句)

CREATE DATABASE <数据库名称>;

1.4.2 表的创建(CREATE TABLE语句)

CREATE TABLE <表名>
(<列名1> <数据类型> <该列所需约束>,
 <列名2> <数据类型> <该列所需约束>,
 <列名3> <数据类型> <该列所需约束>,
 <列名4> <数据类型> <该列所需约束>,
 ...
<该表的约束1>,<该表的约束2>,....);

如: 创建Product表

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.4.3 命名规则

  • 只能使用 半角英文字母、数字、下划线(_) 作为数据库、表和列的名称
  • 名称必须以半角英文字母开头
  • 名称不能重复: 在同一个数据库中不能创建两个相同名称的, 在同一个表中也不能创建两个名称相同的

1.4.4 数据类型的指定

所有的列都必须指定数据类型, 数据类型表示数据的种类, 包括数字型、字符型和日期型

  1. INTEGER型: 用来指定存储整数的列的数据类型(数字型), 不能存储小数
  2. CHAR型: CHAR是CHARACTER(字符)的缩写, 是用来指定存储字符串的列的数据类型(字符型). 可以像 CHAR(10)或者CHAR(200) 这样, 在括号中指定该列可以存储的字符串的长度(最大长度).
    1. 字符串以定长字符串的形式存储在被指定为 CHAR 型的列中. 所谓定长字符串, 就是当列中存储的字符串长度达不到最大长度的时候, 使用半角空格进行补足
    2. 虽然之前我们说过 SQL 不区分英文字母的大小写, 但是表中存储的字符串却是区分大小写的. 也就是说,  'ABC' 和'abc' 代表了两个不同意义的字符串.
  3. VARCHAR型: 同CHAR类型一样, VARCHAR型也是用来指定存储字符串的列的数据类型(字符串类型), 也可以通过括号内的数字来指定字符串的长度(最大长度).但该类型的列是以可变长字符串的形式来保存字符串的. 定长字符串在字符数未达到最大长度时会用半角空格补足, 但可变长字符串不同, 即使字符数未达到最大长度, 也不会用半角空格补足.
  4. DATE类型: 用来指定存储日期(年月日)的列的数据类型(日期型)

1.4.5 约束的设置

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

  • 数据类型的右侧设置约束. 如NOT NULL约束, 表示不能输入空白, 必须输入数据
  • 表的约束: 创建Product表的CREATE TABLE的语句后面.如PRIMARY KEY (product_id), 表示设置主键约束.

主键(primary key)就是可以特定一行数据的列. 也就是说, 如果把 product_id 列指定为主键, 就可以通过该列取出特定的商品数据了.

Part31.5 表的删除和更新

1.5.1 表的删除(DROP TABLE语句)

DROP TABLE <表名>;

如删除Product表,

DROP TABLE Product;

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

ALTER TABLE

一 添加列

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

如: 在Product表中添加这样一列, product name pinyin(商品名称(拼音)), 该列可以存储100位的可变长字符串.

ALTER TABLE Product ADD COLUMN product name pinyin VARCHAR(100);

二 删除列

ALTER TABLE <表名> DROP COLUMN <列名>;

如: 删除之前添加的product_name_pinyin列.ALTER TABLE Product DROP COLUMN product_name pinyin;

1.5.3 向Product表中插入数据

START TRANSACTION;
INSERT INTO Product VALUES ('0001', 'T恤衫', '衣服',
1000, 500, '2009-09-20');
....

COMMIT;

开头的 BEGIN TRANSACTION 语句是开始插入行的指令语句,
结尾的 COMMIT 语句是确定插入行的指令语句

1.5.4 表的修改

如果想把 Poduct 表的名称变为 Product, 可以使用代码清单中的指令, 如下:RENAME TABLE Poduct to Product;

posted on 2023-09-09 22:16  欢笑一声  阅读(167)  评论(0)    收藏  举报

导航