千家信息网

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

发表于:2024-10-21 作者:千家信息网编辑
千家信息网最后更新 2024年10月21日,数据库的基本概念数据:描述事物的符号记录称为数据(Data)包括数字,文字,图形,图像,声音,档案记录等以"记录"形式按统一的格式进行存储表:将不同的记录组织在一起,就形成了"表"是用来存储具体数据的
千家信息网最后更新 2024年10月21日MySQL——数据库介绍(理论篇)

数据库的基本概念

数据:

描述事物的符号记录称为数据(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(客户端/服务器)架构        安全可靠

数据库的基本操作命令

查看数据库列表信息

[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 namesYou can turn off this feature to get a quicker startup with -ADatabase changedmysql> 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 changedmysql> 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)

谢谢阅读!

0