目录
数据库是什么
数据库:存储数据的仓库
为什么使用数据库
之前用excel来进行管理数据,有诸多问题:
- 电子表格只能处理有限的数据列和数据行,对于数百万玩、数千万等巨大的数据列很难有效地处理
- 电子表格无法提供安全、方便地权限管理和控制手段
- 电子表格很难实现多个数据之间地关联
- 电子表格很难实现并发控制、增量维护等管理方式
这些问题,数据库都能解决,数据库是一种有效地管理大量的、安全的、并发的、关联的、一致的数据管理工具。
数据库的分类
关系型数据库
关系数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。
关系模型由关系数据结构、关系操作集合、关系完整性约束三部分组成。
也就是说对于每一列的数据类型会有约束。
典型的关系型数据库:
- MySQL、 MariaDB
- Oracle 甲骨文公司,收费昂贵
- SQL Server 微软出品
- SQLite 小型的文件数据库
非关系型数据库
- MemCache
- mongoDB
- Redis
非关系型数据库以key-value的形式存储数据
区别
关系型数据库,把数据存在硬盘中
非关系型数据库, 把数据存在内存中
mysql的架构
类似于socket的客户端和服务端
流程:
- mysql服务端先启动,监听在一个特定的端口,默认是3306
- mysql客户端连接服务端
- mysql客户端就可以发出相关的操作命令,去操作服务端储存的数据
MySQL的安装(Windows)
-
官网下载之后5.7版本的
-
解压到指定目录 如
C:mysql-5.7.28-winx64
-
添加环境变量 ,在系统环境变量Path添加
C:mysql-5.7.28-winx64in
-
初始化
mysqld --initialize-insecure
# 创建data目录,用来存储数据库 -
启动MySQL服务
- 可以在cmd(win10需要管理员权限)中运行
mysqld --install
安装服务 - 或者在win10服务中启动MySQL
- 可以在cmd(win10需要管理员权限)中运行
-
启动MySQL客户端并连接MySQL服务
mysql -u root -p
-
修改mysql密码
mysqladmin -uroot -p '原密码' password '要修改的密码'
常用的参数:
-u user 用户名
-p password 密码
-h host主机名或ip mysql -h 192.168.1.1 -uroot -p
-P 端口 默认是3306 mysql -h 192.168.1.1 -P 3306 -uroot -p
忘记密码:
先关闭mysqld服务 net stop mysql
在cmd中执行: mysqld --skip-grant-tables
再开一个cmd执行: mysql -uroot -p 此时不需要输入密码
执行sql语句: update mysql.user set authentication_string=password('') where user='root';
重启mysql服务
数据库服务器、数据管理系统、数据库、表、记录的关系
- 数据库服务器:运行数据库管理软件
- 数据库管理软件:管理数据库,如MySQL
- 数据库:用来组织表,相当于win系统中文件夹的概念
- 表:即文件,用来存放多条记录
初始MySQL
操作数据库
增:
create database 数据库名称 charset utf8; # 字符集默认时latin1
数据库命名规范:
- 可以由字母、数字、下划线、@、#、$
- 区分大小写
- 具有唯一性
- 不能使用关键字如 select create
- 不能单独使用数字
- 最长128位
删:
drop database 数据库名称;
改:
数据库删除了再添加
线上环境下,不能直接删除数据,再删除之前需要进行备份
查:
show database; # 查看数据库
use 数据库名称
操作数据表
创建表:(表是二维的,要有字段)
mysql> create table setcreed(
-> id int,
-> name varchar(20)
-> );
查看表:
mysql> show tables;
删除表:
mysql> drop table setcreed;
查看数据表结构:
mysql> desc setcreed;
或者
mysql> show create table setcreed;
数据相关
数据类型
- 常用数据类型如下:
- 整数:int, bit
- 小数:decimal
- 字符串:varchar, char
- 日期时间:date, time, datetime
- 枚举类型(enum)
- 特别说明的类型如下:
- decimal表示浮点数,如decimal(5, 2)表示共存5位数、小数占2位
- char表示固定长度的字符串,如char(3),如果填充'ab'时会补一个空格为'ab '
- varchar表示可变长度的字符串,如varchar(3),填充'ab'时就会储存ab
- 字符串text表示储存大文本,当字符大于4000时推荐使用
- 对于图片、音频、视频等文件,不存储在数据库里,而是上传到服务器中,然后在表中存储这个文件的url
单表中数据的增、删、改、查
- insert 插入数据
mysql> insert into setcreed(id,name) values(2, 'neo'),(3, 'cwz');
insert 另一种方式插入数据:
mysql> insert into setcreed set id=4, name='soso';
- 查看表中数据
select 查询方法:
mysql> select * from setcreed;
# * 表示查看所有内容
查询后面可以跟条件:
mysql> select * from setcreed where id<3;
- update更新数据
mysql> update setcreed set name='qwe' where id=3;
- delete 删除数据
mysql> delete from setcreed where id=4;