1.什么是数据库
1.1数据库概念
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。
每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。
我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。
所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。
常见的关系型数据:mysql oracle(收费) sqlserver(微软,只能用在windows) db2(IBM) derby(jdk自带) 高斯db(华为)
RDBMS 即关系数据库管理系统(Relational Database Management System) 的特点:
-
1.数据以表格的形式出现(二维数组)
-
2.每行为各种记录名称
-
3.每列为记录名称所对应的数据域
-
4.许多的行和列组成一张表单
-
5.若干的表单组成database
非关系型数据库(NOSQL not only sql<struct query language结构化查询语言>)
Redis MongoDB hbase 离数据越近越好。
2.重点
2.1什么是数据库
2.2mysql数据库简介
2.3mysql连接
2.4操作数据库
2.5数据类型
2.1数据库概念
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。
每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。
我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。
所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。
常见的关系型数据:mysql oracle(收费) sqlserver(微软,只能用在windows) db2(IBM) derby(jdk自带) 高斯db(华为)
RDBMS 即关系数据库管理系统(Relational Database Management System) 的特点:
-
1.数据以表格的形式出现(二维数组)
-
2.每行为各种记录名称
-
3.每列为记录名称所对应的数据域
-
4.许多的行和列组成一张表单
-
5.若干的表单组成database
非关系型数据库(NOSQL not only sql<struct query language结构化查询语言>)
Redis MongoDB hbase 数据为王,离数据越近越好。
- 数据库常见术语
-
数据库: 数据库是一些关联表的集合。
-
数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
-
列: 一列(数据元素) 包含了相同类型的数据, 例如邮政编码的数据。
-
**行:**一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
-
冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。异地容灾(灾备中心)
-
主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。自动加索引。
-
**外键:**外键用于关联两个表。(实际开发过程尽量避免使用外键,关联关系,强制)
-
复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
-
**索引:**使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
-
参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。
-
表头(header): 每一列的名称;
-
列(col): 具有相同数据类型的数据的集合;
-
行(row): 每一行用来描述某条记录的具体信息;
-
值(value): 行的具体信息, 每个值必须与该列的数据类型相同;
-
键(key): 键的值在当前列中具有唯一性。
2.2mysql数据库简介
MySQL 是一个关系型(Relational Database Management System),数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
-
MySQL 是开源的,所以你不需要支付额外的费用。
-
MySQL 支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
-
MySQL 使用标准的 SQL 数据语言形式。
-
MySQL 可以运行于多个系统上,并且支持多种语言。这些编程语言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby 和 Tcl 等。
-
MySQL 支持大型数据库,支持 5000 万条记录的数据仓库,32 位系统表文件最大可支持 4GB,64 位系统支持最大的表文件为8TB。
-
MySQL 是可以定制的,采用了 GPL 开源协议,你可以修改源码来开发自己的 MySQL 系统。
操作系统的端口号1-65535之间,1-1000之间是系统保留,mysql的端口号是3306,oracle1521,tomcat8080,http80,sqlserver1433,飞秋2425
netstat -ano 查询所有的网络进程
netstat -ano | findstr 查询含有关键字的行
taskkill /f /pid 2222 杀死pid为2222的进程
-
mysql连接
-
命令行方式连接
2.3操作数据库
- 创建数据库
注意点:创建数据库的时候,必须制定字符编码为utf8mb4
create database qy124 default character set utf8mb4 collate utf8mb4_general_ci ;
- 图形化方式
- 删除数据库
drop database qy124;
- 选择数据库
在命令行使用
默认初次登陆没有选择任何数据库,如果想操作数据库中的表,首先需要使用某个数据库
use database的名字
查询当前使用的数据库的名字,
select database ();
2.4数据类型
- 数值
MySQL支持所有标准SQL数值数据类型。
这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。
关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。
BIT数据类型保存位字段值,并且支持MyISAM、MEMORY、InnoDB和BDB表。
作为SQL标准的扩展,MySQL也支持整数类型TINYINT、MEDIUMINT和BIGINT。下面的表显示了需要的每个整数类型的存储和范围。
类型 | 大小 | 范围(有符号) | 范围(无符号) | 用途 |
---|---|---|---|---|
TINYINT | 1 byte | (-128,127) | (0,255) | 小整数值 |
SMALLINT | 2 bytes | (-32 768,32 767) | (0,65 535) | 大整数值 |
MEDIUMINT | 3 bytes | (-8 388 608,8 388 607) | (0,16 777 215) | 大整数值 |
INT或INTEGER | 4 bytes | (-2 147 483 648,2 147 483 647) | (0,4 294 967 295) | 大整数值 |
BIGINT | 8 bytes | (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) | (0,18 446 744 073 709 551 615) | 极大整数值 |
FLOAT | 4 bytes | (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) | 0,(1.175 494 351 E-38,3.402 823 466 E+38) | 单精度浮点数值 |
DOUBLE | 8 bytes | (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) | 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) | 双精度浮点数值 |
DECIMAL | 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 | 依赖于M和D的值 | 依赖于M和D的值 | 小数值 |
MySQL DECIMAL
数据类型用于在数据库中存储精确的数值。我们经常将DECIMAL
数据类型用于保留准确精确度的列,例如会计系统中的货币数据。
column_name DECIMAL(P,D);
在上面的语法中:
-
P
是表示有效数字数的精度。P
范围为1〜65
。 -
D
是表示小数点后的位数。D
的范围是0
~30
。MySQL要求D
小于或等于(<=
)P
。
sal DECIMAL(6,2);
在此示例中,sal
列最多可以存储6
位数字,小数位数为2
位; 因此,sal
列的范围是从-9999.99
到9999.99
。
- 时间
表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。
每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。
TIMESTAMP类型有专有的自动更新特性,将在后面描述。
类型 | 大小( bytes) | 范围 | 格式 | 用途 |
---|---|---|---|---|
DATE | 3 | 1000-01-01/9999-12-31 | YYYY-MM-DD | 日期值 |
TIME | 3 | ‘-838:59:59’/‘838:59:59’ | HH:MM:SS | 时间值或持续时间 |
YEAR | 1 | 1901/2155 | YYYY | 年份值 |
DATETIME | 8 | 1000-01-01 00:00:00/9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
TIMESTAMP | 4 | 1970-01-01 00:00:00/2038 结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07 | YYYYMMDD HHMMSS | 混合日期和时间值,时间戳 |
查询当前的时间
dual 虚表,不存在的表
- 字符
字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。该节描述了这些类型如何工作以及如何在查询中使用这些类型。
类型 | 大小 | 用途 |
---|---|---|
CHAR | 0-255 bytes | 定长字符串 浪费空间 a_________ |
VARCHAR | 0-65535 bytes | 变长字符串 |
TINYBLOB | 0-255 bytes | 不超过 255 个字符的二进制字符串 |
TINYTEXT | 0-255 bytes | 短文本字符串 |
BLOB | 0-65 535 bytes | 二进制形式的长文本数据 音乐 |
TEXT | 0-65 535 bytes | 长文本数据 文本文章 |
MEDIUMBLOB | 0-16 777 215 bytes | 二进制形式的中等长度文本数据 |
MEDIUMTEXT | 0-16 777 215 bytes | 中等长度文本数据 |
LONGBLOB | 0-4 294 967 295 bytes | 二进制形式的极大文本数据 |
ytes | 二进制形式的长文本数据 音乐 | |
TEXT | 0-65 535 bytes | 长文本数据 文本文章 |
MEDIUMBLOB | 0-16 777 215 bytes | 二进制形式的中等长度文本数据 |
MEDIUMTEXT | 0-16 777 215 bytes | 中等长度文本数据 |
LONGBLOB | 0-4 294 967 295 bytes | 二进制形式的极大文本数据 |
LONGTEXT | 0-4 294 967 295 bytes | 极大文本数据 |