⭐️前面的话⭐️
本篇文章介绍MySQL(数据库)基本的操作和数据类型,如显示服务端的数据库,创建数据库,认识MySQL基本的数据类型。
博客主页:未见花闻的博客主页
欢迎关注点赞收藏⭐️留言
本文由未见花闻原创,CSDN首发!
首发时间:2022年3月13日
✉️坚持和努力一定能换来诗与远方!
参考书籍:《MySQL必知必会》,《高性能MySQL》
参考在线编程网站:牛客网力扣
博主的码云gitee,平常博主写的程序代码都在里面。
博主的github,平常博主写的程序代码都在里面。
作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!
MySQL是一种数据库,而数据库是一个以某种有组织的方式存储的数据集合。理解数据库的一种最简单的办法是将其想象为一个文件柜。此文件柜是一个存放数据的物理位置,不管数据是什么以及如何组织的。
MySQL包括客户端和服务端,为了便于理解,以淘宝举例,淘宝这个手机App就是一个客户端,你在这个客户端上购物,需要将数据从客户端上传到服务端,然后服务端会做一个应答。而我们所用的MySQL编程页面(或者命令行)就相当于一个客户端,我们使用一些代码对数据库进行操作,需要从服务端获取。
对于MySQL客户端的密码,学习期间,个人觉得可以设置简单一点,如“123456”,毕竟学习数据库时,你的数据库也没有什么值钱的东西。
MySQL是一个客户端-服务器结构的软件,其中:
此外MySQL代码不区分大小写,也就是说大写小写都一样。
语法:
create database 数据库名;
其中数据库名可以随便取名,如果是sql里面的关键字,需要使用''
标注。
create database user;
Query OK, 1 row affected (0.00 sec)
这样就成功创建了一个名为user的数据库。
语法:
show databases;
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test_123 |
| user |
+--------------------+
6 rows in set (0.00 sec)
语法:
use 数据库名;
mysql> use user;
Database changed
为什么需要对数据库进行选中操作呢?因为对数据库进行增删查改等具体操作之前需要指定一个数据库才能继续操作。
语法:
drop database 数据库名;
首先,这个操作非常危险要慎用,因为删除数据库后大概率不能恢复,所谓“从删库到跑路”,日子是越来越刑了。
mysql> drop database user;
Query OK, 0 rows affected (0.01 sec)
--发现user库没了
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test_123 |
+--------------------+
5 rows in set (0.00 sec)
如果你是解压安装的,那么我相信你已经配置好了数据库默认编码格式,但是如果不是解压安装,而是通过MySQL Installer安装的,则需要找到配置文件进行修改,因为这样安装是MySQL默认的编码格式,即gbk和latin1,这种格式是不能使用中文字符的。
可以通过show variables like "%char%";
查询当前MySQL默认编码格式。
mysql> show variables like "%char%";
+--------------------------+---------------------------------------------------------+
| Variable_name | Value |
+--------------------------+---------------------------------------------------------+
| character_set_client | gbk |
| character_set_connection | gbk |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | gbk |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.7\share\charsets\ |
+--------------------------+---------------------------------------------------------+
8 rows in set, 1 warning (0.01 sec)
首先通过任务管理器找到MySQL服务器,然后右键选择属性,会发现一个含有my.ini
的配置文件路径。
我的路径是C:\ProgramData\MySQL\MySQL Server 5.7\my.ini
,
找到该配置文件,进行如下编辑:
打卡my.ini
文件,找到下面图片所示位置,
找到配置文件中上面两个图片所示字段,加上utf8
并去掉前面的#
符号,如果没看见,那你就在[mysql]
后[mysqld]
前加上default-character-set= utf8
,[mysqld]
后加上character-set-server=utf8
。
重启数据库,就可以了。
mysql> show variables like "%char%";
+--------------------------+---------------------------------------------------------+
| Variable_name | Value |
+--------------------------+---------------------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.7\share\charsets\ |
+--------------------------+---------------------------------------------------------+
8 rows in set, 1 warning (0.00 sec)
当然我们上面修改的格式是默认的格式,用的时候也是可以临时性
地修改编码格式,只不过退出数据库后,编码格式又是默认的了。
修改数据库编码格式:
alter database <数据库名> character set <编码格式>;
修改数据表格编码格式:
alter table <表名> character set <编码格式>;
修改字段编码格式
alter table <表名> change <字段名> <字段名> <类型> character set <编码格式>;
eg:
alter table user change username username varchar(20) character set utf8 not null;
创建数据库时指定数据库的字符集:
create database <数据库名> character set utf8;
刚刚上面介绍了数据库的创建,查看与删除,那么数据库中的数据到底是一个什么样的概念,其实数据库里面存放有很多类似Excel
的表格。
MySQL中可以有很多数据库,数据库可以有很多数据表,数据表由行与列组成,类似Excel表格。
每个数据表里面有很多行,每一行也被称为“记录”,也有很多列,每一列也被称为“字段”。
同一个MySQL数据表中要求,每一行的列都是一致的,每一个表都有表头,对于数据表需要先定义表头才能添加数据,即建表时,首先定义有哪一些列,然后按照列来对表以行为单位插入数据。
首先在数据库中定义一个数据表的方式为:
先选中数据库,在通过创建表的语句在此数据库中创建数据表,在创建数据表之前我们需要先认识MySQL里面的数据类型。
MySQL数据库中的基本数据类型包括数值类,字符串类,日期时间类,二进制类等。
数据类型 | 内存大小(字节) | 备注 | 对应java数据类型 | 对应c数据类型 |
---|---|---|---|---|
BIT(M) | M指定位数,默认为1 | 单个二进制位值,或者为0或者为1,主要用于开/关标志 | boolean | true/false |
TINYINT | 1 | 1字节整数值,支持0~255的整数 | byte | char |
SMALLINT | 2 | 2字节整数值,支持−32768~32767的整数 | short | short |
INT(或INTEGER) | 4 | 4字节整数值,支持−2147483648~2147483647的数 | Integer | int |
BIGINT | 8 | 整数值,支持-9223372036854775808~9223372036854775807(如果是UNSIGNED,为0~18446744073709551615)的数 | Long | long |
FLOAT(M, D)(或NUMBER) | 4 | 单精度浮点值,M指定长度,D指定小数位数。会发生精度丢失 | Float | float |
DOUBLE(M,D) | 8 | 双精度浮点值 | Double | double |
DECIMAL(M,D)(或NUMERIC) | M/D+2 | 定点或精度可变的浮点值,M指定长度,D表示小数点位数。 | BigDecimal | — |
数值类型可以指定为无符号(unsigned),表示不取负数。
货币数据类型
多数 DBMS 支持一种用来存储货币值的特殊数值数据类型。一般记为MONEY 或 CURRENCY,这些数据类型基本上是有特定取值范围的 DECIMAL数据类型,更适合存储货币值。
数据类型 | 内存大小(字节) | 备注 | 对应java数据类型 | 对应c数据类型 |
---|---|---|---|---|
VARCHAR (SIZE)(也称为LONG、MEMO或TEXT) | 0-65,535字节 | 可变长度字符串 | String | char* |
MEDIUMTEXT | 0-16 777 215字节 | 中等长度文本数据 | Sttring | char* |
BLOB | 0-65,535字节 | 二进制形式的长文本数据 | byte[] | — |
不管使用何种形式的字符串数据类型,字符串值都必须括在引号内。
当数值不是数值时
你可能会认为电话号码和邮政编码应该存储在数值字段中(数值字段只存储数值数据),但是这样做并不可取。如果在数值字段中存储邮政编码 01234,则保存的将是数值 1234,实际上丢失了一位数字。需要遵守的基本规则是:如果数值是计算(求和、平均等)中使用的数值,则应该存储在数值数据类型列中;如果作为字符串(可能只包含数字)使用,则应该保存在字符串数据类型列中。
数据类型 | 内存大小(字节) | 备注 | 对应java数据类型 |
---|---|---|---|
DATETIME | 8 | 范围从1000到9999年,不会进行时区的检索及转换。 | java.util.Date、java.sql.Timestamp |
TIMESTAMP | 4 | 范围从1970到2038年,自动检索当前时区并进行转换 | java.util.Date、java.sql.Timestamp |
DATE | — | 日期值 | — |
SMALLDATETIME | — | 日期时间值,精确到分(无秒或毫秒) | — |
TIME | — | 时间值 | — |
数据类型 | 备注 |
---|---|
BINARY | 定长二进制数据(最大长度从255 B到8000 B,有赖于具体的实现) |
LONG RAW | 变长二进制数据,最长2 GB |
RAW(某些实现为BINARY) | 定长二进制数据,最多255 B |
VARBINARY | 变长二进制数据(最大长度一般在255 B到8000 B间变化,依赖于具体的实现) |
注意,sql中定义变量时,变量名在前,类型在后。
MySQL的数据类型基本上就是这些,了解数据类型后我们就可以开始建表了!关于如何建表以及对表增删查改,我们下回见!