一、数据库
数据库:是存储和管理数据的仓库,数据按照一定格式进行存储,用户可以对数据库中的数据进行增删改查等操作
作用:是用来存储和管理数据,持久化存储和快速读取数据
特点
- 持久化存储
- 读写速度极高
- 保证数据的有效性
数据库分类
- 关系型数据库:是指采用关系模型来组织数据的数据库,简单来说,关系模型指的是二维表格模型,如Excel文件中的表格,强调使用表格方式存储数据
- 核心元素:数据行、数据列、数据表、数据库(数据表的集合),如Excel文件就相当于一个数据库,其中的sheet就好比一个数据表
- 常见关系型数据库:Oracle、Microsoft SQLServer、MySQL、SQLite
- 非关系型数据库:又称NoSQL(Not only SQL),即不仅是SQL,普遍定义其为非关联型的,强调key-value形式存储数据
- 常见非关系数据库:MongoDB、Redis
二、关系型数据库管理系统
关系型数据库管理系统(RDBMS:Relational Database Management System) :是一个为管理关系型数据库而设计的软件系统
RDBMS分类
- 关系型数据库服务端软件:负责管理不同的数据库,每个数据库里有一系列数据文件,其用来存储数据,数据库即是一系列数据文件的集合
- 关系型数据库客户端软件:负责和关系型数据库服务端软件进行通信,向服务端传输数据或从服务端获取数据
- 说明
- 用户通过操作关系型数据库客户端软件来实现数据库的相关操作
- 关系型数据库客户端借助网络使用SQL语言和和数据库服务端进行数据通信
- 数据库服务端管理着不同的数据库,每个数据库有一系列数据文件,数据保存于数据文件中,每个数据库可看作是一个文件夹
三、SQL
结构化查询语言(SQL:Structured Query Language):是一种用来操作RDBMS的数据库的语言,即通过SQL可以操作Oracle、SQL Server、MySQL、SQLite等关系型数据库
SQL作用:实现数据库客户端和数据库服务端的通信,是通信的桥梁
- SQL语言
- 数据查询语言(DQL):用于对数据进行查询,如select
- 数据操作语言(DML):用于对数据进行增加、修改、删除,如insert、update、delete
- 事务处理语言(TPL):用于对事务进行处理,如begin transaction、commit、rollback
- 数据控制语言(DCL):用于进行授权与权限回收,如grant、revoke
- 数据定义语言(DDL):用于进行数据库、表的管理等,如create、drop
- 说明
- 重点是进行增删改查,需熟练掌握DQL、DML和DDL
- SQL语言不区分大小写
四、MySQL数据库
MySQL:是一个关系型数据库管理系统,是最好的RDBMS应用软件,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品,MySQL 是最流行的关系型数据库管理系统中的一个
- MySQL特点
- MySQL是开源的,无需支付额外费用
- 支持大型的数据库,可以处理拥有上千万条记录的大型数据库
- 使用标准的SQL数据语言形式
- 可以安装在不同的操作系统,并提供多种编程语言的操作接口,包括C、C++、Python、Java、Ruby等
4.1 安装(ubuntu)
- ubuntu中安装命令:sudo apt-get install mysql-server/mysql-client
- ubuntu中均已安装
- 显示安装包信息命令:apt-cache show mysql-server/mysql-client
- MySQL数据库服务端软件
- 查看MySQL服务状态:sudo service mysql status
- 启动MySQL服务:sudo service mysql start
- 停止MySQL服务:sudo service mysql stop
- 重启MySQL服务:sudo service mysql restart
- 查看MySQL服务效果命令:ps -aux | grep mysql
- ps:查看当前系统中进程
- -a:表示所有用户
- -u:显示用户名
- -x:显示所有的执行程序
- MySQL数据库客户端软件
- 使用帮助:mysql --help
- 连接MySQL服务端命令:mysql -uroot -p
- -u:表示服务端用户名
- -p:服务端密码
- quit 或 exit 或 ctr + d 表示退出
4.2 windows安装MySQL
- 下载安装压缩包(zip),下载网址:https://www.mysql.com/
- 解压安装文件到自定义文件夹
- 将bin路径添加至环境变量(前后均加英文分号‘;’)
- 创建my.ini配置文件(此文件内容可百度,或参照附于本文档后面给出的内容)
- 以管理员身份运行cmd程序,并将当前路径切换至MySQL安装路径下(bin所在目录)
- mysqld --install(MySQL安装)
- 将解压目录下的data目录删除,防止后面初始化失败
- mysqld --initialize --console(MySQL初始化,[]内的命令可选,此处可能生成root用户的初始密码,可复制保存)
- net start mysql(MySQL服务启动)
- mysql -u root -p(root用户登录)
- 输入root的初始密码(步骤8中复制保存的)
- ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';(修改密码)
---------------------------------------my.ini文件配置-------------------------------------
[mysql]
# 设置mysql客户端默认字符集
default-character-set = UTF8
[mysqld]
# 设置默认端口
port = 3306
# 设置mysql的安装目录
basedir = /*此处填写自定义的安装路径(‘\’分隔)*/
# 设置mysql数据库的数据的存放目录
datadir = /*此处填写自定义的数据存储路径(‘\’分隔)*/
# 允许最大连接数
max_connections = 200
# 服务端使用的默认字符集
character-set-server = UTF8MB4
# 创建新表时将使用的默认存储引擎
default-storage-engine = INNODB
---------------------------------------my.ini文件示例-----------------------------------
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=D:\mysql安装
# 设置mysql数据库的数据的存放目录
datadir=D:\mysql安装\data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8MB4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
#mysql_native_password
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8
图形化客户端软件Navicat:是一套快速、可靠并价格适宜的数据库管理工具,让你可以以安全并且简单的方式对数据库进行操作,可以用来对本机或远程的 MySQL、SQL Server、SQLite、Oracle 等数据库进行管理及开发。 专门为简化数据库的操作而设计,符合数据库管理员、开发人员及中小企业的需求
Navicat下载:https://www.navicat.com.cn/download/navicat-for-mysql
如下:
五、数据类型及约束
5.1 数据类型
数据类型:指在创建表时为表中字段指定数据类型,只有数据符合类型要求才能存储起来
数据类型使用原则:够用就行,尽量使用取值范围小的,可以节省存储空间
常用数据类型
- 整数:int,bit
- 小数:decimal,表示浮点数,如decimal(5,2),表示共存五位,小数占两位
- 字符串:char,varchar,text
- char表示固定长度字符串,不足用空格补全
- varchar表示可变字符串
- text 表示存储大文本,当字符大于 4000 时推荐使用
- 日期时间:date,time,datetime
- 枚举类型:enum
5.2 数据约束
数据约束:指数据在数据类型限定基础上额外增加的要求
常用约束
- primary key:主键,物理上存储顺序,MySQL建议所有表的主键字段都为id,类型为int unsigned
- not null:非空,即字段不能为空
- unique:唯一,即字段不能重复
- default:默认,不填写字段对应的值会使用默认值,若填写则以填写为准
- foreign key:外键,对关系字段进行约束,当为关系字段填写值时, 会到关联的表中查询此值是否存在, 若存在则填写成功, 否则填写失败并抛出异常
5.3 常用数据类型表
整数类型 | |||
类型 | 字节大小 | 有符号范围(Signed) | 无符号范围(Unsigned) |
TINYINT | 1 | -128 ~ 127 | 0 ~ 255 |
SMALLINT | 2 | -32768 ~ 32767 | 0 ~ 65535 |
MEDIUMINT | 3 | -8388608 ~ 8388607 | 0 ~ 16777215 |
INT/INTEGER | 4 | -2147483648 ~ 2147483647 | 0 ~ 4294967295 |
BIGINT | 8 | -9223372036854775808 ~ 9223372036854775807 | 0 ~ 18446744073709551615 |
字符串 | ||
类型 | 说明 | 使用场景 |
CHAR | 固定长度,小型数据 | 身份证号、手机号、电话、密码 |
VARCHAR | 可变长度,小型数据 | 姓名、地址、品牌、型号 |
TEXT | 可变长度,字符个数大于 4000 | 存储小型文章或者新闻 |
LONGTEXT | 可变长度, 极大型文本数据 | 存储极大型文本数据 |
时间类型 | ||
类型 | 字节大小 | 示例 |
DATE | 4 | '2022-10-26' |
TIME | 3 | '20:20:20' |
DATETIME | 8 | '2022-10-26 20:20:20' |
YEAR | 1 | '2022' |
TIMESTAMP | 4 | '1970-01-01 00:00:01' UTC ~ '2038-01-01 00:00:01' UTC |
数据类型和约束保证了表中数据的准确性和完整性
学习导航:http://xqnav.top/