前言:
1.本书在知识点提炼时侧重于实践效果,所以有些理论部分的知识点不会涉及或者几笔带过。
2.在语法实践时将会带入更多的例子和问题以便于理解数据库语法。
3.在所有关于SQL基础教程的文章中的语句全部都是用SQL Server来编写的。
1.1 数据库是什么
(1)数据库管理系统(Database Management System,DBMS):用来管理数据库的计算机系统。
(2)数据库(Database,DB):将大量数据保存起来并且通过计算机加工而成的可以进行高效访问的数据集合。
(3)DBMS的种类:
1.层次数据库(Hierarchical Database,HDB)
2.关系数据库(Relational Database,RDB) — 应用最为广泛,也是这本书中所介绍的
3.面向对象数据库(Object Oriented Database,OODB)
4.XML数据库(XML Database, XMLDB)
5.键值储存系统(Key-Value Store,KVS)
1.2 数据库的结构
(1)表:在关系数据库中用来管理数据的二维表
(2)字段:表的列(垂直方向)
(3)记录:表的行(水平方向)
(4)单元格:行和列交汇的方格
Add:
(5)关系数据库必须以行为单位进行数据编写,一个单元格只能输入一个数据。
1.3 SQL概要
(1) SQL语句及其种类:
- DDL(Data Definition Language,数据定义语言)用来创建或者删除存储数据用的数据库以及数据库中表等对象。DDL中有一下几种指令。
a. CREATE:创建数据库和表等对象
b. DROP:删除数据库和表等对象
c.ALTER:修改数据库和表等对象的结构 - DML(Data Manipulation Language,数据操纵语言)用来查询或者变更表中的记录。DML包括以下几种指令。
a. SELECT:查询表中的数据
b. INSERT:向表中插入新数据
c. UPDATE:更新表中的数据
d. DELETE:删除表中的数据 - DCL(Data Control Language,数据控制语言)用来确认或者取消对数据库中的数据进行的变更。除此之外,还可以对RDBMS的用户是否有权限操作数据库中的对象(数据库中的表等)进行设定。DCL包含以下几种指令。
a. COMMIT:确认对数据库中的数据进行的变更
b. ROLLBACK:取消对数据库中的数据进行的变更
c. GRANT:赋予用户操作权限
d. REVOKE:取消用户的操作权限
(2)SQL的基本书写规则
4. SQL语句要以分号(;)结尾
5. SQL语句不区分大小写(数据除外):最好按照以下要求书写SQL语句
关键字大写,表名的首字母大写,其余小写
6. 单词需要用半角空格或者换行来分隔
1.4 表的创建
(1)数据库的创建(CREATE DATABASE语句)
语法:CREATE DATABASE <数据库名称>;
eg:创建数据库名字为a的数据库
CREATE DATABASE a;
(2)表的创建(CREATE TABLE语句)
语法:CREATE TABLE <表名> (
<列名1> <数据类型> <该列所需约束>,
<列名2> <数据类型> <该列所需约束>,
…… …… ……
<该表的约束1>, <该表的约束2>, ……);
eg:创建Product表,要求有字节长度为4列名商品序号(product_id),长度为100的可变长字节列名商品名称(product_name),字节长度为32的可变长字节列名商品种类(product_type)的三个列名要求都有非空约束,主键为商品序号和商品名称。
CREATE TABLE Product(
product_id CHAR(4) NOT NULL,
product_name VARCHAR(100) NOT NULL,
product_type VARCHAR(32) NOT NULL,
PRIMARY KEY(product_id, product_name);
(3)命名规则:只能使用半角英文字母、数字、下划线(_)作为数据库、表和列的名称。
Attention:在同一个数据库中不能创建两个相同名称的表,在同一个表中也不能创建两个名称相同的列
(4)数据类型的指定:四种基本数据类型
- INTEGER型:整数型
- CHAR型:定长字符串型
- VARCHAR型:可变长字符串型
- DATE型:日期型
(4)约束的设置:略(后面章节有详细内容)
(5)键:在指定特定数据时使用的列的组合。主键:可以特定一行数据的列。
1.5表的删除和更新
(1)表的删除(DROP TABLE)【后面会介绍另外一个删除语法为Delete,并且介绍两者的区别】
语法:DROP TABLE <表名>;
(2)表定义的更新(ALTER TABLE语句)
添加列语法:ALTER TABLE <表名> ADD <列名>;
删除列语法:ALTER TABLE <表名> DROP <列名>;
第一章练习:
1.1 编写一条CREATE TABLE语句,用来创建一个包含表1-A中所列各项的表Addressbook(地址簿),并为regist_no(注册编号)列设置主键约束。
列的含义 | 列的名称 | 数据类型 | 约束 |
---|---|---|---|
注册编号 | regist__no | 整数型 | 不能为NULL、作为主键 |
姓名 | name | 可变长字符串类型(长度为128) | 不能为NULL |
住址 | address | 可变长字符串类型(长度为256) | 不能为NULL |
电话号码 | tel_no | 定长字符串类型(长度为10) | |
邮箱地址 | mail_address | 定长字符串类型(长度为20) |
CREATE TABLE Addressbook(
regist_no Integer NOT NULL,
name VARCHAR(128) NOT NULL,
address VARCHAR(256) NOT NULL,
tel_no CHAR(10),
mail_address CHAR(20),
PRIMARY KEY (regist_no));
1.2 假设在创建练习1.1中的Addressbook表时忘记添加如下一列postal_code(邮政编码)了,请把此列添加到Addressbook表中。
列名:postal_code
数据类型:定长字符串类型(长度为8)
约束:不能为NULL
ALTER TABLE Addressbook ADD postal_code CHAR(8) NOT NULL;
1.3 编写语句来删除Addressbook表。
DROP TABLE Addressbook;
1.4 编写语句来恢复删除掉的Addressbook表。(一般来说删除表是无法恢复的,如在事务控制条件下则可以。)
TRANSCATION;
DROP TABLE Addressbook;
ROLLBACK;