本文共 13110 字,大约阅读时间需要 43 分钟。
MySQL (Structured Query Language) 是最流行的 关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS 应用软件之一。
数据库(DataBase: DB):数据库是是按照数据结构来组织、存储和管理数据的仓库(存数据的仓库)。
数据库管理系统(Database Management System:DBMS):是专门用于 管理数据库的软件。
数据库管理系统能够为数据库提供数据的定义、建立、维护、查询和统计等操作功能,并完成对数据完整性、安全性进行控制的功能。
我们一般说的数据库,就是指的 DBMS
关系型数据库(Relational Database Management System):建立在 关系模型 基础上的数据库
关系模型:指 二维表格模型,因此一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。
关系数据库管理系统(Relational Database Management System)的特点:
概念:关系型数据库标准语言。
特点:简单,灵活,功能强大。
它的语句能确保被DML语句影响的表的所有行及时得以更新。TPL语句包括 BEGIN TRANSACTION,COMMIT和ROLLBACK。
它的语句通过 GRANT 或 REVOKE 获得许可,确定单个用户和用户组对数据库对象的访问。某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。
其语句包括动词 CREATE 和 DROP。在数据库中创建新表或删除表(CREAT TABLE 或 DROP TABLE);为表加入索引等。DDL包括许多与人数据库目录中获得数据有关的保留字。它也是动作查询的一部分。
它的语句,像 DECLARE CURSOR,FETCH INTO 和 UPDATE WHERE CURRENT 用于对一个或多个表单独行的操作。
在数据库中,SQL语句大小写不敏感,SELECT/select/SeLeCt
SQL 语句可单行或多行书写
在 SQL 语句中,关键字不能跨多行或缩写
为了提高可读性,一般 关键字大写,其他小写
空格和缩进使程序易读
MySQL 为关系型数据库(Relational Database Management System), 这种所谓的"关系型"可以理解为"表格"的概念, 一个关系型数据库由一个或数个表格组成, 如图所示的一个表格:
MySQL 是一种关系型数据库,关系数据库最重要的概念就是表 。表具有固定的列数和任意的行数,在数学上称为“关系”。二维表 是同类实体的各种属性的集合,每个实体对应于表中的一行,在关系中称为 元组,相当于通常的一条记录。
关系型数据库存在 数据模型、性能、拓展伸缩性 的缺点,从而出现了:
常见的 NoSQL 数据库分为四大类:
数据库系统 | 所属公司 |
---|---|
Oracle | Oracle |
DB2 | IBM |
SQL Server | MS |
MySQL | (开源免费)AB-->SUN-->Oracle |
Oracle
运行稳定,可移植性高,功能齐全,性能超群!适用于大型企业领域。
DB2
速度快、可靠性好,适于海量数据,恢复性极强。适用于大中型企业领域。
SQL Server
全面,效率高,界面友好,操作容易,但是不跨平台。适用于于中小型企业领域。
MySQL
开源,体积小,速度快。适用于于中小型企业领域。
MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
打开数据库连接之前:一定要保证MySQL服务已经开启了.
net start
命令名字:开启一个服务,如:net start MySQL
net stop
命令名字:关闭一个服务器,如:net stop MySQL
// 格式: mysql -u账户 -p密码 -h数据库服务器安装的主机 -P数据库端口mysql -uroot -padmin -h127.0.0.1 -P3306// 若连接的数据库服务器在本机上,并且端口是3306,则可以简写: mysql -uroot -padmin
Last login: Thu Mar 21 23:01:45 on ttys000diaobaodeMacBook-Air:~ arvin$ mysql -uroot -p # 连接数据库Enter password: Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 139Server version: 8.0.15 MySQL Community Server - GPLCopyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>
MySQL 中的数据用各种 不同的技术 存储在文件(或者内存)中。其中的每一种技术都使用 不同的存储机制、索引技巧、锁定水平并且最终提供不同的功能。通过选择不同的技术,能够获得额外的速度或者功能,从而改善你的应用的整体功能。
MyISAM:
拥有较高的插入,查询速度,但 不支持事务,不支持外键。InnoDB:
支持事务,支持外键,支持行级锁定,性能较低。InnoDB 存储引擎提供了具有 提交、回滚和崩溃恢复 的事务安全。但对比MyISAM,处理效率差,且会占用更多的磁盘空间以保留数据和索引。
mysql> show engines;+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+| Engine | Support | Comment | Transactions | XA | Savepoints |+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+| ARCHIVE | YES | Archive storage engine | NO | NO | NO || BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO || MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO || FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL || MyISAM | YES | MyISAM storage engine | NO | NO | NO || PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO || InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES || MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO || CSV | YES | CSV storage engine | NO | NO | NO |+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+9 rows in set (0.00 sec)
mysql> show engines;+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+| Engine | Support | Comment | Transactions | XA | Savepoints |+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+| ARCHIVE | YES | Archive storage engine | NO | NO | NO || BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO || MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO || FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL || MyISAM | YES | MyISAM storage engine | NO | NO | NO || PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO || InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES || MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO || CSV | YES | CSV storage engine | NO | NO | NO |+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+9 rows in set (0.00 sec)mysql> show create table productdir;+------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| Table | Create Table |+------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| productdir | CREATE TABLE `productdir` ( `id` bigint(11) NOT NULL AUTO_INCREMENT, `dirName` varchar(30) DEFAULT NULL, `parent_id` bigint(11) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 |+------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+1 row in set (0.00 sec)mysql> alter table productdir engine=innodb;Query OK, 11 rows affected (0.04 sec)Records: 11 Duplicates: 0 Warnings: 0mysql> show create table productdir;+------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| Table | Create Table |+------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| productdir | CREATE TABLE `productdir` ( `id` bigint(11) NOT NULL AUTO_INCREMENT, `dirName` varchar(30) DEFAULT NULL, `parent_id` bigint(11) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 |+------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+1 row in set (0.00 sec)
Data Query Language 数据查询语言:主要由 select 关键字完成,查询语句是 SQL 语句中最复杂、功能最丰富的语句。操作之后会返回一个查询的结果集。
Data Manipulation Language 数据操作语言:主要由 insert、update 和 delete 三个关键字完成。操作之后会返回一个受影响的行数(成功操作几条数据)。
Data Definition Language 数据定义语言:主要由 create、alter、drop 和 truncate 四个关键字完成。
Data Control Language 数据控制语言:主要 grant 和 revoke 两个关键字完成。
主要由 commit、rollback 和 savepoint 三个关键字完成。
存储、管理和使用数据的不同 结构形式。如:表、视图、存储过程、函数、触发器、事件等。
存储数据库对象的容器。一般分两类:
mysql> show databases -> ;+--------------------+| Database |+--------------------+| information_schema | # 存储数据库对象信息,如:用户表信息,列信息,权限,字符,分区等| mysql | # 存储数据库用户权限信息| myTest | # 自定义数据库| performance_schema | # 存储数据库服务器性能参数信息| sys | # 系统数据库| vocabulary_001 | # 自定义数据库+--------------------+6 rows in set (0.01 sec)mysql>
MySQL 列类型 | Java 数据类型 |
---|---|
INT / INTEGER | int / Integer |
BIGINT | long / Long |
MySQL 以一个可选的显示宽度指示器的形式对 SQL 标准进行扩展,这样当从数据库检索一个值时,可以把这个值加长到指定的长度。需要注意的是,使用一个宽度指示器不会影响字段的大小和它可以存储的值的范围。
例如,指定一个字段的类型为 INT(6),就可以保证所包含 数字个数少于 6 个 的数值从数据库中检索出来时,能够自动地用 0 来占位,如果个数大于等于 6 个,则就不用进行占位。
再如,age int(2),并不是代表age最多存储99,而是查询 age 的值的时候,使用两个0来占位,如果只有一个数字,则在前面用一个 0 来占位,就算存10000 也可以存,因为虽然 10000 的数字个数是 5 个,但 10000 的值并没有超出 int 的范围。
小数类型,可存放实型和整型,精度(p) 和 范围(s)
FLOAT(s,p)
、 DOUBLE(s,p)
:单精度和双精度数据类型,都不够精确,例如,money double(5,2) :整数和小数一共占5位,其中小数占2位。
定点数据类型: DECIMAL
高精度类型,金额货币优先选择。
MySQL 列类型 | Java 数据类型 |
---|---|
FLOAT | float / Float |
DOUBLE | double / Double |
DECIMAL | BigDecimal |
char(size) 定长字符
0 - 255字节,size 指 N 个字符个数,若插入字符个数超过设定长度,会被截取并警告。
varchar(size) 变长字符
0 - 255字节,从 MySQL5 开始支持 65535 个字节,若插入字符数超过设定长度,会被截取并警告。
TEXT
一般存储大量的字符串,比如 文章的纯文本,可以选用TEXT系列类型。
注意 : 在MySQL中,字符使用 '单引号' 引起来相当于 Java中字符串 ( String, StringBuilder/StringBuffer )
日期和时间类型为 DATETIME、DATE、TIMESTAMP、TIME 和 YEAR。
注意 : 在MySQL中,日期时间值使用单引号引起来。 相当于 Java中 Date,Calender。
BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB : 存放图形、声音和影像,二进制对象,0-4GB。
但是,在开发中,我们一般存储二进制文件保存路径的路径存储在数据库中
BIT:我们一般存储0或1,相当于是 Java 中的 boolean/Boolean 类型的值。
转载地址:http://gghwi.baihongyu.com/