本文主要是阅读《SQL 基础教程》这本书总结而来,有需求的话可以阅读原著。
1. 数据库是什么
数据库管理系统,简称为
DBMS
(Database Management System),是用来存储数据的管理系统。
1.1 DBMS 的重要性
- 无法多人共享数据
- 无法提供操作大量数据所需的格式
- 实现读取自动化需要编程技术能力
- 无法应对突发事故
1.2 DBMS 的种类
- 层次性数据库
- 最古老的数据库之一,因为突出的缺点,所以很少使用了
- 关系型数据库
- 采用行列二维表结构来管理数据库,类似
Excel
的结构,使用专用的SQL
语言对数据进行控制。
- 采用行列二维表结构来管理数据库,类似
- 关系数据库管理系统的常见种类
Oracle
==> 甲骨文SQL Servce
==> 微软DB2
==> IBMPostgreSQL
==> 开源MySQL
==> 开源
- 面向对象的数据库
XML
数据库
- 键值存储系统
DB2
Redis
MongoDB
2. SQL 概要
2.1 基础要点
- 关系型数据库采用
C/S
架构 - SQL 数据库返回的数据必须是二维表的形式
- 关系数据库必须以
行
为单位进行数据读取 - 在一个单元格中只能输入一个数据
2.2 SQL 语句及其种类
DDL
(数据定义语言)create
==> 创建数据库或者表等对象drop
==> 删除数据库或者表等对象alter
==> 修改数据库或者表等对象的结构
DML
(数据操作语言)select
==> 查询表中数据insert
==> 向表中插入数据update
==> 更新表中数据delete
==> 删除表中数据
DCL
(数据控制语言)commit
==> 决定对数据库中的数据进行变更rollback
==> 取消对数据库中的数据进行变更grant
==> 赋予用户操作权限revoke
==> 取消用户的操作权限
2.3 SQL 的基本书写规则
- SQL 语句要以**
;
**结尾 - 关键字不区分大小写,但是表中数据区分大小写
- 关键字大写
- 表名的首字母大写
- 列明等小写
- 常数的书写方式是固定的
- 遇到字符串、日期等类型需要用到
''
- 单词间需要使用空格分割
- 命名规则
- 数据库和表的名称可以使用英文、数据以及下划线
- 名称必须以英文作为开头
- 名称不能重复
2.4 数据类型
integer
- 数字型,但是不能存放小数
char
- 定长字符串类型,指定最大长度,不足使用空格填充
varchar
- 可变长度字符串类型,指定最大长度,但是不足不填充
data
- 存储日期,年/月/日
2.5 数据库的基本操作
- 数据库创建
CREATE DATABASE <数据库名称>;
- 表的创建
CREATE TABLE <表名> {
<列表1> <数据类型> <该列所需约束>,
<列表2> <数据类型> <该列所需约束>,
...
...
...
<该表的约束1>,
<该表的约束2>,
....
};
- 删除数据库
DROP DATABASE <数据库名称>;
- 表的删除
DROP TABLE <表名>;
- 表中列添加
ALTER TABLE <表名> ADD COLUME <列的定义>, <列的定义>,...;
- 表中列删除
ALTER TABLE <表名> DROP COLUME <列的定义>, <列的定义>,...;
- 表数据插入
INSORT INTO <表名> {
<对于字段1> <对于字段2> <对于字段3>,
<对于字段4> <对于字段5> <对于字段6>,
...
...
...
};
3. 实战演示
- 创建数据库
mysql> create database shop;
Query OK, 1 row affected (0.00 sec)
- 显示数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| shop |
| test |
+--------------------+
4 rows in set (0.00 sec)
- 切换数据库
mysql> use shop;
Database changed
- 约束设置
# not null和primary key为约束设置
mysql> create table Shohin (
shohin_id char(4) not null,
shohin_mei varchar(100) not null,
shohin_bunrui varchar(32) not null,
hanbai_tanka integer,
shiire_ranka integer,
torokubi date,
primary key (shohin_id));
Query OK, 0 rows affected (0.00 sec)
- 插入数据
mysql> insert into Shopin valuse ('0001', 'T恤', '衣服', 1000, 500, '2016-05-20');
Query OK, 1 row affected (0.00 sec)
- 查询数据
mysql> select * from Shohin;
+-----------+------------+---------------+--------------+--------------+------------+
| shohin_id | shohin_mei | shohin_bunrui | hanbai_tanka | shiire_ranka | torokubi |
+-----------+------------+---------------+--------------+--------------+------------+
| 0001 | TT | yifu | 1000 | 500 | 2016-05-20 |
| 0002 | Ta | hhh | 10 | 10 | 2016-05-20 |
+-----------+------------+---------------+--------------+--------------+------------+
2 rows in set (0.00 sec)