什么是数据库
数据库(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数据类型 | 含义 |
---|---|
tinyint | 1字节,范围(-128~127) |
smallint | 2字节,范围(-3w多~3w多) |
mediumint | 3字节 |
int | 4字节,范围(-21亿~21亿) |
bigint | 8字节,非常大 |
在整型中,我们默认使用的是「有符号」的,我们可以使用unsigned
关键字,可以定义成无符号类型,tinyint unsigned
的取值范围 0~255
人生最好有一种正当的娱乐,即使没有财富,也能拥有快乐。 ——丘吉尔