我是直接装的安装版,这个比较容易上手,官方下载地址:点我点我点我呀
安装教程:在这里,系统是win10,虽然不好用,但也没办法,好了,不瞎bb了,下面直接开始。
第一部分:基本概念
数据库分关系型数据库和非关系型数据库,最常用的关系数据库就是mysql,其次还有MariaDB,sqlServer,sqLite等,非关系数据有mongoDB,redis,HBASE等等,下面了解一下二者的优缺点:
关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织
优点:
1、易于维护:都是使用表结构,格式一致;
2、使用方便:SQL语言通用,可用于复杂查询;
3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。
缺点:
1、读写性能比较差,尤其是海量数据的高效率读写;
2、固定的表结构,灵活度稍欠;
3、高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。
非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。
优点:
1、格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型
2、速度快:nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘;
3、高扩展性;
4、成本低:nosql数据库部署简单,基本都是开源软件。
缺点:
1、不提供sql支持,学习和使用成本较高;
2、无事务处理;
3、数据结构相对复杂,复杂查询方面稍欠
下面我们详细介绍一下MYSQL
1.什么是数据库?
数据库是按照数据结构来组织,存储和管理数据的仓库
每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据。
我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。
所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理的大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。
RDBMS即关系数据库管理系统(Relational Database Management System)的特点:
- 1.数据以表格的形式出现
- 2.每行为各种记录名称
- 3.每列为记录名称所对应的数据域
- 4.许多的行和列组成一张表单
- 5.若干的表单组成database
2.了解一下RDBMS术语
- 数据库: 数据库是一些关联表的集合。
- 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
- 列: 一列(数据元素) 包含了相同的数据, 例如邮政编码的数据。
- 行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
- 冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
- 主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
- 外键:外键用于关联两个表。
- 复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
- 索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
- 参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。
3.关于mysql
MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
- MySQL 是开源的,所以你不需要支付额外的费用。
- MySQL 支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
- MySQL 使用标准的SQL数据语言形式。
- MySQL 可以运行于多个系统上,并且支持多种语言。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。
- MySQL 对PHP有很好的支持,PHP是目前最流行的Web开发语言。
- MySQL 支持大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持4GB,64位系统支持最大的表文件为8TB。
- MySQL 是可以定制的,采用了GPL协议,你可以修改源码来开发自己的 MySQL 系统。
二.命令
1.创建数据库
进入cmd输入以下命令
mysql -u root -p
默认没有密码直接回车进入,或者打开mysql终端直接回车,当你看到以下画面,说明你已经登陆成功了:
Enter password: **** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 31 Server version: 8.0.13 MySQL Community Server - GPL Copyright (c) 2000, 2018, 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>
你也可以使用一下命令创建root用户的密码:
mysqladmin -u root password "需要设置的密码";
登录成功后,我们来创建第一个数据库,命令如下
create database 数据库名;
切记一定要在sql语句后边家上分号;,表示当前语句结束。
删除数据库用以下命令:
drop database 数据库名;
选择数据库命令:
use 数据库名
查看数据库命令:
show databases;
下面我创建一个叫running的数据库并选择使用它:
接下来,我们来学习创建数据表,在此之前我们先来了解一下数据类型都有哪些,这对数据库的优化非常重要
2.数据类型
这个哥们总结的比较全,我这里就不抄袭了,传送门点我鸭
3.创建数据表
在创建数据表时,我们需要有以下信息:1:表名,2:字段名,3:每个字段的数据类型和长度,我们来看一下语法:
create table 数据表名 (字段名 数据类型(长度));
下面,我们来创建一个数据表:
create table if not exists test (user_id int unsigned auto_increment,name varchar(20) not null,age int,primary key (user_id))engine = innodb default charset=utf8;
这条语句的意思是如果不存在test数据表的时候创建该表,下面来介绍以下几个概念:
1,not null: 如果你不想该字段为空,可以设置该属性not null,如果在数据库插入数据是没有该数据,就会报错
2,unsigined:该属性表示无符号化,只表示大小,只针对整型,设置该属性会将改数值的取值范围增加一倍
3,auto_increment: 自增属性,一般用于主键,数值会自动+1
4,primary key;定义列为主键,可以设置多列
5,engine 设置储存引擎,charset设置字符编码
下面我们来学习如何删除数据表,用以下命令:
drop table 数据表名;
向数据表插入数据:
insert into 数据表名 (字段1,字段2....) values (值1,值2...);
如果值为字符型,必须用单引号或者双引号,如“张三”
如果建表的时候你没有设置字符编码,插入数据如果有汉子查询会有乱码现象,我们可以用以下命令设置编码:
set names utf8;
那么,如果我想插入多条数据怎么办?很简单,只需要将每行数据之间用逗号隔开就行了,格式如下:
insert into 数据表名 (字段1,字段2....) values (值1,值2...), (值1,值2...), (值1,值2...);
在程序中,插入批量数据时,最好使用这种通过一条INSERT语句来一次性插入的方式。这样可以避免程序和数据库建立多次连接,从而增加服务器负荷
下面我们来创建一个名叫test的数据表,分别有user_id,name,age三个字段:
4.数据表查询