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包含以下几种指:
- CREATE: 创建数据库和表等对象
- DROP: 删除数据库和表等对象
- ALTER: 修改数据库和表等对象的结构
二 DML(数据操纵语言)
DML(Data Manipulation Language,数据操纵语言)用来查询或者变更表中的记录. DML包含以下几种指令:
- SELECT: 查询表中的数据
- INSERT: 向表中插入新数据
- UPDATE: 更新表中的数据
- DELETE: 删除表中的数据
三 DCL(数据控制语言)
DCL(Data Control Language,数据控制语言)用来确认或者取消对数据库中的数据进行的变更. 除此之外, 还可以对RDBMS的用户是否有权限操作数据库中的对象(数据库表等)进行设定. DCL包含以下几种指令:
- COMMIT: 确认对数据库中的数据进行的变更
- ROLLBACK: 取消对数据库中的数据进行的变更
- GRANT: 赋予用户操作权限
- REVOKE: 取消用户的操作权限
==实际使用的SQL语句当中有90%属于DML==
1.3.2 SQL的基本书写规则
一 SQL语句要以分号 (;) 结尾
SQL语句则使用分号(;)结尾
二 SQL语句不区分大小写
==SQL不区分关键字的大小写==
默认规则书写SQL语句:
- 关键字大写
- 表名的首字母大写
- 其余(列名等)小写
但是插入到表中的数据是区分大小写的. 例如, 在操作过程中, 数据Computer、COMPUTER 或 computer, 三者是不一样的.
三 常数的书写方式是固定的
SQL语句常常需要直接书写字符串、日期或者数字
在SQL语句中直接书写的字符串、日期或者数字等称为常数.
常数的书写方式如下所示:
- 字符串使用单引号, 如 'abc'
- 日期使用单引号, 如 '2020--1-23'
- 数字, 不需要符号标识, 直接书写.
四 单词需要用半角空格或者换行来分隔
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 数据类型的指定
所有的列都必须指定数据类型, 数据类型表示数据的种类, 包括数字型、字符型和日期型等
- INTEGER型: 用来指定存储整数的列的数据类型(数字型), 不能存储小数
- CHAR型: CHAR是CHARACTER(字符)的缩写, 是用来指定存储字符串的列的数据类型(字符型). 可以像 CHAR(10)或者CHAR(200) 这样, 在括号中指定该列可以存储的字符串的长度(最大长度).
- 字符串以定长字符串的形式存储在被指定为 CHAR 型的列中. 所谓定长字符串, 就是当列中存储的字符串长度达不到最大长度的时候, 使用半角空格进行补足
- 虽然之前我们说过 SQL 不区分英文字母的大小写, 但是表中存储的字符串却是区分大小写的. 也就是说, 'ABC' 和'abc' 代表了两个不同意义的字符串.
- VARCHAR型: 同CHAR类型一样, VARCHAR型也是用来指定存储字符串的列的数据类型(字符串类型), 也可以通过括号内的数字来指定字符串的长度(最大长度).但该类型的列是以可变长字符串的形式来保存字符串的. 定长字符串在字符数未达到最大长度时会用半角空格补足, 但可变长字符串不同, 即使字符数未达到最大长度, 也不会用半角空格补足.
- 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;
浙公网安备 33010602011771号