一、数据库基本概念

1、数据库管理系统

数据库管理系统是位于用户与操作系统之间的一层数据管理软件。数据库管 理系统操作系统一样是计算机的基础软件,也是一个大型复杂的软件系统。它的主要功能包括一下几个方面:
(1)数据定义功能
(2)数据组织、存储和管理
(3)数据操纵功能
(4)数据库的事务管理和运行管理
(5)数据库的建立和维护功能
(6)其他功能

2、数据库系统

数据库系统是由数据库、数据库管理系统、应用程序和数据库管理员组成的存储、管理、处理和维护数据的系统。

二、常见数据库管理系统排名

目前互联网上常见的数据库管理软件有Oracle、MySQL、MS SQL Server、DB2、PostgreSQL、Access、 Sybase、Informix这几种。以下是2021年DB-Engines Ranking 对各数据库受欢迎程度进行调查后的统计结果:

具体网址:数据库最新排名

三、MySQL介绍

1、概述
(1)MySQL是一个 开放源代码的关系型数据库管理系统 ,由瑞典MySQL AB(创始人Michael Widenius)公 司1995年开发,迅速成为开源数据库的 No.1。
(2)2008被 Sun 收购(10亿美金),2009年Sun被 Oracle 收购。 MariaDB 应运而生。(MySQL 的创
造者担心 MySQL 有闭源的风险,因此创建了 MySQL 的分支项目 MariaDB)
(3)MySQL6.x 版本之后分为 社区版 和 商业版 。 (4)MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而不是将所有数据放在一个大仓库
内,这样就增加了速度并提高了灵活性。
(5)MySQL是开源的,所以你不需要支付额外的费用。
(6)MySQL是可以定制的,采用了 GPL(GNU General Public License) 协议,你可以修改源码来
开发自己的MySQL系统。
(7)MySQL支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
(8)MySQL支持大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持 4GB ,64位系
统支持最大的表文件为 8TB 。
(9) MySQL使用 标准的SQL数据语言 形式。
(10)MySQL可以允许运行于多个系统上,并且支持多种语言。这些编程语言包括C、C++、Python、 Java、Perl、PHP和Ruby等。

2、MySQL发展历程

3、关系型数据库和非关系型数据库
(1)关系型数数据库
i.关系型数据库模型是把复杂的数据结构归结为简单的二元关系 (即二维表格形式)。以 行(row) 和 列(column) 的形式存储数据,以便于用户理解。SQL 就是关系型数据库的查询语言。其中使用最多的关系型数据库 分别是 Oracle、 MySQL 和 SQL Server。

ii.优点:

1、复杂查询可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询;
2、事务支持使得对于安全性能很高的数据访问要求得以实现。

iii.缺点:

1、读写性能比较差,尤其是海量数据的高效率读写;
2、固定的表结构,灵活度稍欠;
3、高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。

(2)非关系型数据库
i.非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。

ii.非关系型数据库分类:

1、键值型数据库
键值型数据库通过 Key-Value 键值的方式来存储数据,其中 Key 和 Value 可以是简单的对象,也可以是复杂的对象。Key 作为唯一的标识符,优点是查找速度快,在这方面明显优于关系型数据库,缺点是无法像关系型数据库一样使用条件过滤(比如 WHERE),如果你不知道去哪里找数据,就要遍历所有的键,
这就会消耗大量的计算。
键值型数据库典型的使用场景是作为 内存缓存 。Redis 是最流行的键值型数据库。

2、文档型数据库 此类数据库可存放并获取文档,可以是XML、JSON等格式。在数据库中文档作为处理信息的基本单位,
一个文档就相当于一条记录。文档数据库所存放的文档,就相当于键值数据库所存放的“值”。MongoDB
是最流行的文档型数据库。此外,还有CouchDB等。

3、搜索引擎数据库 虽然关系型数据库采用了索引提升检索效率,但是针对全文索引效率却较低。搜索引擎数据库是应用在
搜索引擎领域的数据存储形式,由于搜索引擎会爬取大量的数据,并以特定的格式进行存储,这样在检
索的时候才能保证性能最优。核心原理是“倒排索引”。 典型产品:Solr、Elasticsearch、Splunk 等。

4、列式数据库 列式数据库是相对于行式存储的数据库,Oracle、MySQL、SQL Server 等数据库都是采用的行式存储
(Row-based),而列式数据库是将数据按照列存储到数据库中,这样做的好处是可以大量降低系统的
I/O,适合于分布式文件系统,不足在于功能相对有限。典型产品:HBase等。

5、图形数据库 图形数据库顾名思义,就是一种存储图形关系的数据库。它利用了图这种数据结构存储了实体(对象)
之间的关系。关系型数据用于存储明确关系的数据,但对于复杂关系的数据存储却有些力不从心。如社
交网络中人物之间的关系,如果用关系型数据库则非常复杂,用图形数据库将非常简单。典型产品: Neo4J、InfoGrid等。

四、MySQL数据库的安装

具体安装教程:MySQL的安装,配置与使用以及在eclipse中连接数据库

五、在控制台操作MySQL数据库

1、启动MySQL服务

(1)
第一种方法:直接进入cmd,输入 mysql -uroot -p(注意此处的root为用户名,每个人的数据库用户名可能不一样,使用你安装时用户名),再输入密码即可。

第二种方法:右键以管理员身份进入cmd,先输入net start mysql,再输入mysql -uroot -p,最后输入输入密码即可。


(2)常见错误
i.没有启动mysql服务,直接输入mysql

ii.没有以管理员身份进入cmd,直接输入net start mysql

2、操作数据库

(1)查看数据库—show databases;(一定要注意数据库为单词复数和加上英文分号)其中 information_schema、mysql、performance_schema 和sys是MySQL数据库默认自带的数据库。

(2)使用其中一个数据库—use mydjango;
查看该数据库中的所有表----show tables;(注意每个语句的结束分号)

(3)查看数据库编码情况—show variables like “%char%”;(注意语句的结束分号)

注意:mysql 5.x版本的默认字符集是latinl,mysql 8.x版本的默认字符集是uft8mb4。所以当你使用mysql 5.x版本时,插入一条数据包含中文字符就会报Incorrect string value的错误。我们需要修改默认编码,这里提供大佬写的修改默认编码的博客:MySQL修改默认编码

(4)基本sql语句
新建数据库—create database 数据库名;

新建数据库表—create table 表名(列名 数据类型);
(注意一定要选中一个表!)

向表中插入数据—insert into 表名(id,name) values(值1,值2)

简单查询数据库数据—select * from 数据库名;

更新数据库数据—update 表名 set 列名 where 条件;

删除数据库表中数据—delete from 表名 where 条件;

删除数据库中的表—drop table 表名;

删除数据库—drop database 数据库名;

以上操作的完整执行过程如下所示:

Microsoft Windows [版本 10.0.19042.867]
(c) 2020 Microsoft Corporation. 保留所有权利。

C:\Users\panpan>mysql -uroot -p
Enter password: ****
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 17
Server version: 8.0.20 MySQL Community Server - GPL

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| kugou              |
| mydjango           |
| mysql              |
| performance_schema |
| sina               |
| sys                |
| webnewsrsmpython   |
| wp                 |
+--------------------+
9 rows in set (0.00 sec)

mysql> use mydjango;
Database changed
mysql> show tables;
+----------------------------+
| Tables_in_mydjango         |
+----------------------------+
| app_author                 |
| app_book                   |
| auth_group                 |
| auth_group_permissions     |
| auth_permission            |
| auth_user                  |
| auth_user_groups           |
| auth_user_user_permissions |
| django_admin_log           |
| django_content_type        |
| django_migrations          |
| django_session             |
| test_scrapy                |
+----------------------------+
13 rows in set (0.00 sec)

mysql> show variables like "%char%";
+--------------------------+------------------------------------------------------------+
| Variable_name            | Value                                                      |
+--------------------------+------------------------------------------------------------+
| character_set_client     | gbk                                                        |
| character_set_connection | gbk                                                        |
| character_set_database   | utf8mb4                                                    |
| character_set_filesystem | binary                                                     |
| character_set_results    | gbk                                                        |
| character_set_server     | utf8mb4                                                    |
| character_set_system     | utf8                                                       |
| character_sets_dir       | D:\Program Files\mysql\mysql-8.0.20-winx64\share\charsets\ |
+--------------------------+------------------------------------------------------------+
8 rows in set, 1 warning (0.00 sec)

mysql> create database db;
Query OK, 1 row affected (0.01 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| db                 |
| information_schema |
| kugou              |
| mydjango           |
| mysql              |
| performance_schema |
| sina               |
| sys                |
| webnewsrsmpython   |
| wp                 |
+--------------------+
10 rows in set (0.00 sec)

mysql> use db;
Database changed
mysql> create table data(id int,name varchar(20));
Query OK, 0 rows affected (0.06 sec)

mysql> show tables;
+--------------+
| Tables_in_db |
+--------------+
| data         |
+--------------+
1 row in set (0.00 sec)

mysql> insert into data(id,name)values(1,'Jack');
Query OK, 1 row affected (0.01 sec)
mysql> select * from data;
+------+------+
| id   | name |
+------+------+
|    1 | Jack |
+------+------+
1 row in set (0.00 sec)

mysql> select* from data;
+------+------+
| id   | name |
+------+------+
|    1 | Jack |
+------+------+
1 row in set (0.00 sec)

mysql> update data set id=2,name='Tom' where id=1;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select* from data;
+------+------+
| id   | name |
+------+------+
|    2 | Tom  |
+------+------+
1 row in set (0.00 sec)

mysql> delete from data where id=2;
Query OK, 1 row affected (0.01 sec)

mysql> select* from data;
Empty set (0.00 sec)

mysql> drop table data;
Query OK, 0 rows affected (0.02 sec)

mysql> show tables;
Empty set (0.00 sec)

mysql> drop database db;
Query OK, 0 rows affected (0.01 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| kugou              |
| mydjango           |
| mysql              |
| performance_schema |
| sina               |
| sys                |
| webnewsrsmpython   |
| wp                 |
+--------------------+
9 rows in set (0.00 sec)

mysql>

六、MySQL目录结构

注意:若在安装过程中如果输入mysql命令报“不是内部或外部命令”,把mysql安装目录的bin目录配置到环境变量path中。

更多推荐

MySQL数据库概述以及在cmd中操作MySQL