MySQL——数据库介绍(理论篇)

数据库的基本概念

数据:

创新互联建站是一家专业提供图们企业网站建设,专注与网站建设、网站设计、html5、小程序制作等业务。10年已为图们众多企业、政府机构等服务。创新互联专业网站建设公司优惠进行中。

描述事物的符号记录称为数据(Data)
包括数字,文字,图形,图像,声音,档案记录等
以"记录"形式按统一的格式进行存储

表:

将不同的记录组织在一起,就形成了"表"
是用来存储具体数据的

数据库:

数据库就是表的集合,是存储数据的仓库
以一定的组织方式存储的相互有关的数据

当今主流数据库介绍

SQL_Server(微软公司)
  面向Windows操作系统
  简单,易用
Oracle(甲骨文公司产品)
  面向所有主流平台
  安全,完善,操作复杂
DB2(IBM公司产品)
  面向所有主流平台
  大型,安全,完善
MySQL(甲骨文公司收购)
  免费,开源,体积小

关系数据库

关系数据库系统是基于关系模型的数据库系统,它的基本概念来自于关系模型
关系模型建立在关系代数的理论基础上,数据结构使用简单易懂的二维数据表,可以用简单“实体-关系”(E-R)图来直接表示
E-R图中包含了实体(数据对象),关系和属性三个要素

MySQL——数据库介绍(理论篇)
实体:

也称为实例,对应现实世界中可区别于其他对象的“事件”或“事物”,如银行客户,银行账户等

属性:

实体所具有的某一特性,一个实体可以有多个属性。例如“银行客户”实体集中的每个实体均具有姓名,地址,电话等属性

联系:

实体集之间的对应关系成为联系,也称为关系。例如,银行客户和银行账户之间存在“储蓄”的关系

所有实体及实体之间联系的集合构成一个关系数据库

关系数据库理解

MySQL——数据库介绍(理论篇)

关系数据库的存储结构是二维表格,反映事物及其联系的数据是以表格形式保存的
在每个二维表中,每一行称为一条记录,用来描述一个对象的信息;每一列称为一个字段,用来描述对象的一个属性

MySQL——数据库介绍(理论篇)

非关系数据库介绍

非关系数据库也被称作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(客户端/服务器)架构
        安全可靠

数据库的基本操作命令

查看数据库列表信息

[root@localhost ~]# 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 | 

二分查找

以一个数据为参考,比它小的放左边,比它大的放右边

MySQL——数据库介绍(理论篇)

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 root@%                         |
+-------------------------------------------+
| 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)

谢谢阅读!


本文题目:MySQL——数据库介绍(理论篇)
文章网址:http://scyanting.com/article/gojpdc.html