学习源
- 简单教程
- 菜鸟教程
基本概念
数据库管理系统(DBMS)
MySQL、Oracle、SQLite、Access、MS SQL Server等
其中又分为两大阵营:
- 关系型数据库(有表结构)
- MySQL属于关系型数据库(RDBMS)
- 非关系型数据库(key、value的形式,没有表结构)
由来
# 数据库管理软件的由来:
# 数据想要永久保存,都是保存在文件中的,毋庸置疑,一个文件只能存放在一台机器上,
# 如果我们忽略掉直接基于文件来存取数据带来的效率问题,假设程序的所有组件都是运行在一台机器上,
# 则上述假设存在以下问题:
# 1. 整个程序的所有组件不可能运行在一台机器上
# 因为这台机器一旦宕机则意味着整个软件的崩溃;
# 一台机器的性能总归是有限的
# 对一台机器的性能垂直进行扩展是有极限的,
# 于是我们只能通过水平扩展来增强我们的系统性能,
# 也就是需要我们将整个程序的各个组件分布到多台机器上
# 2. 数据安全问题
# 虽然程序的各个组件分布到了多台机器上,但是他们仍是一个整体,
# 所以组件之间的数据还是要共享的。
# 每台机器上只能操作这台机器上的文件,实现不了数据共享,
# 于是我们想到了将数据与应用程序分离:
# 把文件存放于一台机器,然后将多台机器通过网络去访问这台机器上的文件(用socket实现),
# 既然要共享,那么就会带来竞争,竞争就会带来数据不安全,所以需要加锁处理。
# 3. 并发
# 基于问题2,
# 我们必须写一个socket服务端来管理这台机器(数据库服务器)上的文件,
# 后写一个socket客户端,完成如下功能:
# 1.远程连接(支持并发)
# 2.打开文件
# 3.读写(加锁)
# 4.关闭文件
# 如果我们在编写任何程序之前,都需要事先写好基于网络操作一台主机上文件的程序(socket服务端与客户端程序),那么工作是非常繁琐的
# 于是有人将此类程序写成一个专门的处理软件,这就是mysql等数据库管理软件的由来,但mysql解决的不仅仅是数据共享的问题,还有查询效率,安全性等一系列问题,
# 总之,把程序员从数据管理中解脱出来,专注于自己的程序逻辑的编写。
数据库
就想象成一个文件夹,是
保存
、组织数据表
的一个容器
。
数据表
含有字段的文件才是数据表
,就想象成一个Excel表格,是某种有着特定类型的结构化清单
。
表记录
事物的一系列典型特征
,一条记录是进行操作的最小的单位,不可再分割
。从技术上说,是行
字段
表记录对应的标题
数据
描述事物特征的符号
SQL语句
- SQL 的大小写不敏感
- 长期的 SQL 编程实战表明,SQL 关键字大写是一种良好的编程行为
- SQL 语句以;分号结尾
- 在每条 SQL 语句的结尾使用分号,是 SQL 最佳实战中最重要的一条
最重要也是最常用的的 SQL 命令
SQL命令 | 说明 |
---|---|
SELECT | 从数据库中提取数据 |
UPDATE | 更新数据库中的数据 |
DELETE | 从数据库中删除数据 |
INSERT INTO | 向数据库中插入新数据 |
CREATE DATABASE | 创建新数据库 |
ALTER DATABASE | 修改数据库 |
CREATE TABLE | 创建新表 |
ALTER TABLE | 变更(改变)数据库表 |
DROP TABLE | 删除表 |
CREATE INDEX | 创建索引(搜索键) |
DROP INDEX | 删除索引 |