数据库的基本概念
数据:
描述事物的符号记录称为数据 (Data)
包括数字, 文字, 图形, 图像, 声音, 档案记录等
以 "记录" 形式按统一的格式进行存储
表:
将不同的记录组织在一起, 就形成了 "表"
是用来存储具体数据的
数据库:
数据库就是表的集合, 是存储数据的仓库
以一定的组织方式存储的相互有关的数据
当今主流数据库介绍
SQL_Server(微软公司)
面向 Windows 操作系统
简单, 易用
Oracle(甲骨文公司产品)
面向所有主流平台
安全, 完善, 操作复杂
DB2(IBM 公司产品)
面向所有主流平台
大型, 安全, 完善
MySQL(甲骨文公司收购)
免费, 开源, 体积小
关系数据库
关系数据库系统是基于关系模型的数据库系统, 它的基本概念来自于关系模型
关系模型建立在关系代数的理论基础上, 数据结构使用简单易懂的二维数据表, 可以用简单 "实体 - 关系"(E-R) 图来直接表示
E-R 图中包含了实体 (数据对象), 关系和属性三个要素
实体:
也称为实例, 对应现实世界中可区别于其他对象的 "事件" 或 "事物", 如银行客户, 银行账户等
属性:
实体所具有的某一特性, 一个实体可以有多个属性. 例如 "银行客户" 实体集中的每个实体均具有姓名, 地址, 电话等属性
联系:
实体集之间的对应关系成为联系, 也称为关系. 例如, 银行客户和银行账户之间存在 "储蓄" 的关系
所有实体及实体之间联系的集合构成一个关系数据库
关系数据库理解
关系数据库的存储结构是二维表格, 反映事物及其联系的数据是以表格形式保存的
在每个二维表中, 每一行称为一条记录, 用来描述一个对象的信息; 每一列称为一个字段, 用来描述对象的一个属性
非关系数据库介绍
非关系数据库也被称作 NoSQL(Not Only SQL), 存储数据不以关系模型为依据, 不需要固定的表格式
非关系型数据库作为关系数据库的一个补充, 在日益快速发展的网站时代, 发挥着高效率与高性能
非关系型数据库的优点:
数据库高并发读写的需求
对海量数据高效率存储与访问
数据库的高扩展性与高可用性的需求
非关系型数据库存储方式
键 - 值方式 (key-value), 以键为依据存储, 删, 改数据
列存储 (Column-oriented), 将相关的数据存储在列族中
文档的方式, 数据库由一系列数据项组成, 每个数据项都有名称与对应的值
图形方式, 实体为顶点, 关系为边, 数据保存为一个图形
非关系数据库产品
Memcached 是一个开源的, 高性能的, 具有分布式内存对象的缓存系统, 以 key-value 方式存储数据
缓存数据以减轻数据库压力并能加快访问速度
加速动态 web 应用
缓存的内容保存在内存中
Redis 也是一个以 key-value 方式存储数据的, 数据也是保存在内存中, 但会定期将数据写入磁盘中
相对于 Mencached 有以下特点:
支持内存缓存
支持持久化
数据类型更多
支持群集, 分布式
支持队列
Redis 应用举例:
数据库前端缓存
session 共享
当需要缓存除了 key/value 之外的更多数据类型时
当缓存的数据需要长久保存时
MySQL 数据库介绍
MySQL 是一款深受欢迎的开源关系型数据库
Oracle 旗下的产品
遵守了 GPL 协议, 可以免费试用与修改
特点:
性能卓越, 服务稳定
开源, 无版权限制, 成本低
多线程, 多用户
基于 C/S(客户端 / 服务器) 架构
安全可靠
数据库的基本操作命令
查看数据库列表信息
- [[email protected] ~]# MySQL -uroot -p ## 进入数据库
- Enter password:
- ...
- MySQL> show databases;
- +--------------------+
- | Database |
- +--------------------+
- | information_schema |
- | MySQL |
- | performance_schema |
- | sys |
- +--------------------+
- 4 rows in set (0.00 sec)
查看数据库中的数据表信息
- MySQL> use MySQL; ## 使用数据库
- Reading table information for completion of table and column names
- You can turn off this feature to get a quicker startup with -A
- Database changed
- MySQL> show tables; ## 查看库中的表
- +---------------------------+
- | Tables_in_mysql |
- +---------------------------+
- | columns_priv |
- | db
显示数据表的结构 (字段)
- MySQL> desc user; ## 显示数据表的结构
- +------------------------+-----------------------------------+------+-----+-----------------------+-------+
- | Field | Type | Null | Key | Default | Extra |
- +------------------------+-----------------------------------+------+-----+-----------------------+-------+
- | Host | char(60) | NO | PRI | | |
- | User | char(10) | NO | PRI |
二分查找
以一个数据为参考, 比它小的放左边, 比它大的放右边
SQL 语句概述
SQL 语言
是 Structured Query Language 的缩写, 即结构化查询语言
是关系型数据库的标准语言
用于维护管理数据库, 如数据查询, 数据更新, 访问控制, 对象管理等功能
SQL 分类
DDL: 数据定义语言
DML: 数据操纵语言
DQL: 数据查询语言
DCL: 数据控制语言
DDL 语句操作
DDL 语句用于创建数据库对象, 如库, 表, 索引等
使用 DDL 语句新建库, 表
- MySQL> create database test; ## 创建数据库
- Query OK, 1 row affected (0.00 sec)
- MySQL> use test; ## 使用数据库
- Database changed
- MySQL> create table info( ## 创建表
- -> ID int(3) not null,
-> 姓名 varchar(5) not null,
-> 住址 varchar(10) not null,
-> 分数 decimal default 0,
- -> primary key (ID));
- MySQL> desc info; ## 查看表结构
- +--------+---------------+------+-----+---------+-------+
- | Field | Type | Null | Key | Default | Extra |
- +--------+---------------+------+-----+---------+-------+
- | ID | int(3) | NO | PRI | NULL | |
| 姓名 | varchar(5) | NO | | NULL | |
| 住址 | varchar(10) | NO | | NULL | |
| 分数 | decimal(10,0) | YES | | 0 | |
- +--------+---------------+------+-----+---------+-------+
- 4 rows in set (0.01 sec)
DML 语句操作
向数据表中插入新的数据记录
- MySQL> insert into info values (1,'周几轮','南京',80); ## 表中插入数据
- Query OK, 1 row affected (0.00 sec)
- MySQL> insert into info values (2,'王峰','南京',0);
- Query OK, 1 row affected (0.00 sec)
- MySQL> insert into info values (3,'娜英','北京',default);
- Query OK, 1 row affected (0.01 sec)
修改, 更新数据库表中的数据记录
MySQL> update info set 住址 ='上海' where ID=1; ## 修改表中数据
- Query OK, 1 row affected (0.01 sec)
- Rows matched: 1 Changed: 1 Warnings: 0
在数据表中删除指定的数据记录
- MySQL> delete from info where ID=2; ## 删除表中指定数据记录
- Query OK, 1 row affected (0.00 sec)
- MySQL> select * from info; ## 查看表内容 (DQL 语句)
- +----+-----------+--------+--------+
| ID | 姓名 | 住址 | 分数 |
+----+-----------+--------+--------+
| 1 | 周几轮 | 上海 | 80 |
| 3 | 娜英 | 北京 | 0 |
- +----+-----------+--------+--------+
- 2 rows in set (0.00 sec)
- MySQL> drop table info; ## 删除表
- Query OK, 0 rows affected (0.00 sec)
- MySQL> show tables; ## 查看表
- Empty set (0.00 sec)
- MySQL> drop database test; ## 删除库
- Query OK, 0 rows affected (0.00 sec)
- MySQL> show databases; ## 查看库
- +--------------------+
- | Database |
- +--------------------+
- | information_schema |
- | MySQL |
- | performance_schema |
- | sys |
- +--------------------+
- 4 rows in set (0.00 sec)
DQL 语句操作
DQL 是数据查询语句, 只有一条: select
用于从数据表中查找符合条件的数据记录
查询时可不指定条件
- MySQL> select * from info; ## 查看表内容
- +----+-----------+--------+--------+
| ID | 姓名 | 住址 | 分数 |
+----+-----------+--------+--------+
| 1 | 周几轮 | 上海 | 80 |
| 3 | 娜英 | 北京 | 0 |
- +----+-----------+--------+--------+
- 2 rows in set (0.00 sec)
查询时指定条件
MySQL> select 住址 from info where 住址 ='北京'; ## 查看指定条件
+--------+
| 住址 |
+--------+
| 北京 |
- +--------+
- 1 row in set (0.00 sec)
DCL 语言操作
- ## 设置用户权限 (用户不存在时, 则新建用户)
- MySQL> grant all privileges on *.* to 'root'@'%' identified by 'abc123';
- Query OK, 0 rows affected, 1 warning (0.00 sec)
- ## 查看用户的权限
- MySQL> show grants for 'root'@'%';
- +-------------------------------------------+
- | Grants for [email protected]% |
- +-------------------------------------------+
- | GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' |
- +-------------------------------------------+
- 1 row in set (0.00 sec)
- ## 撤销用户的权限
- MySQL> revoke all on *.* from 'root'@'%';
- Query OK, 0 rows affected (0.00 sec)
谢谢阅读!
来源: http://www.bubuko.com/infodetail-3299496.html