什么是数据库

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。
每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。
我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。

所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。

数据库

  • 数据库「按照数据结构来组织、存储和管理数据的仓库」是一个长期存储在计算机内的、有组织的、可共享的,同一管理大量数据的集合
  • 数据对于公司来说是宝贵的财富,程序员的工作就是对数据进行管理,包括运算、流转、存储、展示等,数据库最重要的功能就是「存储数据」,长期保存数据

MySQL

  • MySQL 是一个关系型数据库管理系统,瑞典公司研发的,被Oracle收购。
  • MySQL 使用了一种语言「SQL语言」
  • MySQL 分为社区版和商业版,体积小,速度快,成本低,开源。

基本术语

  • 数据库: 数据库是一些关联表的集合。
  • 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
  • : 一列(数据元素) 包含了相同类型的数据, 例如邮政编码的数据。
  • :一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
  • 冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
  • 主键主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
  • 外键:外键用于关联两个表。
  • 复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
  • 索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
  • 参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。
  • 表头(header): 每一列的名称;
  • (col): 具有相同数据类型的数据的集合;
  • (row): 每一行用来描述某条记录的具体信息;
  • (value): 行的具体信息, 每个值必须与该列的数据类型相同;
  • (key): 键的值在当前列中具有唯一性

MySQL数据库

MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
  • MySQL 是开源的,目前隶属于 Oracle 旗下产品。
  • 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 系统。

基本操作

MySQL是一个数据库管理系统,管理多个数据库

  • 登录mysql:sql -h 127.0.0.1 -p3306 -uroot -p
  • 创建一个数据库:creat database 数据库名;create schema 数据库名;
  • 查看所有的数据库:show database;
  • 使用数据库:use 数据库名;

用来存储数据的对象,是有结构数据的集合

  • :一行即为一条数据,数据库一共有多少条数据,实际上就是有几行数据
  • :一列即为一个字段,数据库一共有多少个字段,实际上就是有几列数据

SQL语言

SQL是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存储数据以及查询,更新和管理关系型数据库系统。

SQL分类

  • DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别。
  • DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库,表,字段(列)。功能:创建、删除、修改库和表结构
  • DML(Data Manipulation Language):数据操作语言,用来定义数据的增删改记录。
  • DQL(Data Query Language):数据库查询语言,用来查询记录。
  • TCL(Transition Control Language):事务控制语言,用来管理事务。

DCL(数据库控制语言)

创建用户

创建一个用户,该用户只能在指定的ip地址上登录mysql
create user 用户名@ip地址 identified by '密码';

创建一个用户,该用户可以在任意ip地址上登录mysql
create user 'moon'@'%' identified by 'root';

修改密码「5.7版本需要使用password对密码进行加密」
set password for moon@'%' = password('新密码');
8.0版本以后 set password for moon@'%' = '新密码';

权限种类

给指定用户在指定数据库上赋予指定权限,权限有很多种

  • create:可以创建数据库
  • select:查询数据
  • delete:删除数据
  • update:修改数据
  • insert:插入数据

给用户授权

语法:grant '权限1,权限2...权限n' on 数据库名.表名 to 用户名@IP地址

撤销授权

语法:revoke '权限1,权限2...权限n' on 数据库名.表名 to 用户名@IP地址

查看指定用户的权限

语法:show grants for 用户名@IP地址

删除用户

语法:drop user 用户名@IP地址

注意:这里使用的是 ` ,而不是单引号 '

DDL(数据定义语言)

DDL主要是用在定义或改变表的结构

创建表

create table 表名(
    字段名1(列名)类型(长度)约束条件;
    字段名2(列名)类型(长度)约束条件;
    字段名3(列名)类型(长度)约束条件;
)
在关心型数据中,我们需要这项表名和列名,同时设定

数据类型

整型
MySQl数据类型含义
tinyint1字节,范围(-128~127)
smallint2字节,范围(-3w多~3w多)
mediumint3字节
int4字节,范围(-21亿~21亿)
bigint8字节,非常大
在整型中,我们默认使用的是「有符号」的,我们可以使用 unsigned 关键字,可以定义成无符号类型,tinyint unsigned的取值范围 0~255

人生最好有一种正当的娱乐,即使没有财富,也能拥有快乐。 ——丘吉尔
最后修改:2023 年 01 月 09 日
如果觉得我的文章对你有用,请随意赞赏