『 MySQL篇 』:库操作、数据类型
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
目录
一、初识数据库
学习 MySQL之前一定要了解数据库数据库管理系统和SQL之间的关系。
-
数据库
为了解决文件保存数据中的安全性和稳定性的问题从而按照数据结构来组织、存储和管理数据的仓库即长期存储在计算机内、有组织的、可共享的大量数据的集合简称DB。
-
数据库管理系统
-
概念
一种操纵和管理数据库的大型软件用于建立、使用和维护数据库。即位于用户和操作系统之间的一层数据管理软件是基础软件是一个大型复杂的软件系统简称DBMS。
-
分类
-
关系型数据库采用了关系模型来组织数据的数据库。 简单来说关系模型指的就是二维表格模型而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。
-
常见的关系型数据库SQL Sever MySQL Oracle。
-
类似于excel 表格的方式来存储的。
-
非关系型数据库存储方式比较灵活功能更少性能更快能够更好的适应分布式开发环境
-
RedisHBase....
-
-
-
SQL语言
操作关系型数据库的编程语言定义了一套操作关系型数据库的统一标准简称SQL。
我们可以通过SQL来操作数据库管理系统然后再通过数据库管理系统来操作数据库和数据库当中的数据。
二、详解MySQL
MySQL逐渐成为了最受欢迎的关系型数据库无论你是前端亦或是Java、Go、Python、C/C++、PHP....等这些语言的程序员对于MySQL是必然要掌握的核心技术之一,下面我们来正式介绍MySQL。
-
MySQL是一个客户端 - 服务器结构的软件安装MySQL时已经将客户端和服务器都安装好了。
-
客户端和服务器可以在一个主机上也可以在不同的主机上两者之间通过网络来通信。
MySQL的客户端和服务器之间的连接关系如下
-
主动发送数据的一方为客户端被动接收方为服务器。
-
客户端给服务器发送数据叫做请求服务器给客户端返回数据叫做响应。
-
一个服务器可以给多个客户端提供服务。
-
-
MySQL默认只允许在服务器本机 使用 root 用户登录要开启 root 用户的远程登录在MySQL服务器
本机执行
mysql -uroot -p
要求输入密码没有设置密码则直接回车.
C:\Users>mysql -uroot -p Enter password: ****** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.7.27-log MySQL Community Server (GPL) Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
如果无法正常显示需要检查MySQL服务器是否正常运行并重新启动MySQL服务器
-
MySQL 存储引擎
MySQL 支持多种存储引擎你可以通过
show engines;
命令来查看 MySQL 支持的所有存储引擎。
从上图我们可以查看出 MySQL 当前默认的存储引擎是 InnoDB。并且所有的存储引擎中只有 InnoDB 是事务性存储引擎也就是说只有 InnoDB 支持事务。
MySQL 5.5.5 之前MyISAM 是 MySQL 的默认存储引擎。5.5.5 版本之后InnoDB 是 MySQL 的默认存储引擎 , 你可以通过
select version();
命令查看你的 MySQL 版本。
mysql> select version(); +------------+ | version() | +------------+ | 5.7.27-log | +------------+ 1 row in set (0.00 sec)
也可以通过
show variables like '%storage_engine%';
命令直接查看 MySQL 当前默认的存储引擎。
mysql> show variables like'%storage_engine'; +----------------------------------+--------+ | Variable_name | Value | +----------------------------------+--------+ | default_storage_engine | InnoDB | | default_tmp_storage_engine | InnoDB | | internal_tmp_disk_storage_engine | InnoDB | +----------------------------------+--------+ 3 rows in set, 1 warning (0.04 sec)
三、简单的库操作
-
设置数据库的编码字符集
MySQL默认的编码字符集是gbk和latin1这两种字符集不支持中文, 需要我们去将这两种字符集修改为utf8或者utf8mb4。
-
修改MySQL 默认 配置文件 my.ini 中的两部分内容。
-
重启MySQL服务器即可
修改之后的效果
-
创建数据库
-
语法
create database 数据库名
-
示例
mysql> create database mytestdb; Query OK, 1 row affected (0.02 sec)
也可写为
create database if not exists mytestdb;
IF NOT EXISTS
是语句的可选子句。IF NOT EXISTS
子句可防止创建数据库服务器中已存在的新数据库的错误。不能在MySQL数据库服务器中具有相同名称的数据库。也可以在创建数据库时指定字符集utf8。
mysql> create database mytestdb charset utf8; Query OK, 1 row affected (0.02 sec)
-
-
显示数据库
SHOW DATABASES
语句显示MySQL数据库服务器中的所有数据库。可以使用SHOW DATABASES
语句来查看您要创建的数据库或者在创建新数据库之前查看数据库服务器上的所有数据库。mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | dorinf | | mysql | | mytestdb | | performance_schema | | stuinfosystem | | sys | +--------------------+ 11 rows in set (0.00 sec)
在此MySQL数据库服务器当中有7个数据库information_schemadorinf mysql performance_schemasys 是我们在安装MySQL时可用的默认数据库其余的是我们新创建的数据库。
-
使用数据库
在使用指定数据库之前必须通过使用
USE
语句告诉MySQL要使用哪个数据库。mysql> use mytestdb; Database changed
从现在开始所有操作(如查询数据创建新表或调用存储过程)都将对当前数据库(即
mytestdb
产生影响。也可以使用
select database();
用来查询当前使用的数据库。mysql> select database(); +------------+ | database() | +------------+ | mytestdb | +------------+ 1 row in set (0.00 sec)
-
删除数据库
删除数据库意味着数据库中的所有数据和关联对象将被永久删除并且无法撤消。 因此实际使用当中要格外注意。
mysql> drop database mytestdb ; Query OK, 0 rows affected (0.00 sec)
四、MySQL数据类型
数据库表包含具有特定数据类型(如数字或字符串)的多个列。 MySQL提供更多的数据类型而不仅仅是数字或字符串在实际使用中经常用到。
-
数值类型
数据类型 内存大小 指定值和范围 对应的Java数据类型 BITM M指定位数默认为1 二进制数M范围从1-64存储数值范围从0 - 2^M - 1 Boolean TINYINT 1 1字节整数值,支持0~255的整数 Byte SMALLINT 2 2字节整数值支持-32768-32767的整数 Short INT 4 4个字节的整数值支持-2147483648 - 2147483648的数 Integer BIGINT 8 整数值支持-9223372036854775808~9223372036854775807的数 Long FLOATMD 4字节 单精度M指定长度D指定小数位数会发生精度丢失 Float DOUBLEMD 8 双精度, M指定长度D指定小数位数。会发生精度丢失 Double DECIMAL(M,D) M/D最大值+2 双精度M指定长度D表示小数点位数精确数值 BigDecimal NUMERICMD M/D最大值+2 和DECIMAL一样 Big Decimal -
MySQL没有内置的 BOOLEAN 或 BOOL 数据类型。所以要表示布尔值MySQL使用最小的整数类型也就是
TINYINT(1)
。 换句话说BOOLEAN
和BOOL
是TINYINT(1)
的同义词。 -
数值类型可以指定为无符号unsigned表示不取负数。
-
-
字符串类型
在MySQL中字符串可以容纳从纯文本到二进制数据(如图像或文件)的任何内容.
数据类型 大小(字节) 说明 对应的Java类型 varchar(size) 0-65535 可变长度字符串 String char(size) 0-255 定长字符串 String text 0-65535 长文本数据 String mediumtext 0-16777215 中等长度文本数据 String blob 0-65535 一个小的BLOB(二进制大对象) byte[] -
变长的元素使用varchar性能更优固定长度的元素使用char 性能更优。
-
-
日期类型
MySQL提供日期和时间的类型以及日期和时间的组合。 此外MySQL还支持时间戳、数据类型用于跟踪表的一行中的更改。
类型 | 大小 | 格式 |
---|---|---|
DATE | 3 | YYYY-MM-DD |
TIME | 3 | hh:mm:ss |
YEAR | 1 | YYYY或YY格式的年值 |
DATETIME | 8 | YYYY-MM-DD hh:mm:ss 格式的日期和时间值 |
TIMESTAMP | 4 | YYYY-MM-DD hh:mm:ss 格式的时间戳记值 |
获取当前的系统时间戳
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2022-12-07 21:00:39 |
+---------------------+
1 row in set (0.01 sec)