MySQL是一个客户端-服务器结构的程序。
MySQL服务器是真正的本体,负责保存和管理数据,数据都是存在硬盘上的。
数据库的操作
1.命令行客户端
2.图形化客户端
后续均使用命令行客户端
打开命令行客户端,输入密码闪退:找到错误信息
把快捷方式拖到cmd中执行,就可以看到报错信息。
操作数据库的命令,也称为“SQL”语句。
数据库的操作,此处的“数据库”指的是一个逻辑上的数据集合。一个mysql服务器上,可以在硬盘上存储组织很多数据(通过表来组织),就可以把有关联的一些表放到一起,构成一个数据集合,此时就成为数据库。一个mysql服务器上可以有多个这样的数据库。
1.创建数据库
create database 数据库名;
create database spj;
“create”“database”是sql中有特定含义的单词,叫做关键字。数据库名,表名,列名都不能和关键字重复。关键字大小写不敏感。
数据库创建要求不能重复,在创建时,加上一个修饰。此时就不会因为数据库同名而报错。发现数据库存在,是不会继续创建数据库的。“if not exists”可避免sql报错。再批量执行的情况下,如果一条sql报错了,后面的将无法继续执行。
create database if not exists spj;
创建数据库时,可手动指定字符集。mysql默认字符集是拉丁文,不支持中文。如果需要保存中文,必须在创建数据库时,手动指定编码方式为支持中文的编码(GBK,UTF8)。不同的字符集,不同的编码方式下,一个汉字占几个字节是不同的。主要使用utf8作为编码方式(变长编码),不仅支持中文,还支持任何一种语言。使用utf8编码,一个汉字通常3个字节。
character set 字符集名字/charset 字符集名字;
create database spj charset utf8;
mysql中的utf8不是完全体的utf8,少了一些emoji,utf8mb4则是完全体。
2.查看数据库
列出当前mysql服务器上有哪些数据库
show databases;
3.选中数据库
use 数据库名;
4.删除数据库
drop database 数据库名;
drop database spj;
删除的不仅是database,也删除了database中的所有表和表里的数据。
常用数据类型
1.数值类型
数据类型 | 大小 | 说明 | 对应java类型 |
bit[(M)] | M指定位数,默认为1 | 二进制数,M为1-64,存储数值范围为0-2^M-1 | boolean |
tinyint | 1字节 | byte | |
smallint | 2字节 | short | |
int | 4字节 | integer | |
bigint | 8字节 | long | |
float(M.D) | 4字节 | 单精度,M指定长度,D指定小数位数。会发生精度丢失. | float |
double(M,D) | 8字节 | double | |
decimal(M,D) | M/D最大值+2 | 单精度,M指定长度,D指定小数位数。精确数值。 | bigdecimal |
numeric(M,D) | M/D最大值+2 | 和DECIMAL一样 | bigdecimal |
使用decimal表示小数,精确度更高,但运算速度会变慢,占用空间也更多。
2.字符串类型
数据类型 | 大小(字节) | 说明 | 对应java |
varchar(size) | 0-65,535 | 可变长度字符串 | string |
text | 0-65,535 | 长文本数据 | string |
mediumtext | 0-16,777,215 | 中等长度文本数据 | string |
blob | 0-65,535 | 二进制形式的长文本 | byte[] |
65,535=64K
一个汉字,算是一个字符。但是可能是对应多个字节。
varchar(size):size表示该类型里最多存储几个字符(不是字节)。varchar(10),不是说,当前立即分配10个字符的存储空间,会先一个比较小的空间,如果不够,自动扩展,最大空间不超过10。
blob:存储二进制数据
文本数据:存储的都是字符,都可以在对应的码表上查到
二进制数据:在吗表上查不到,如音乐,图片,视频.......
3.日期类型
数据类型 | 大小 | 说明 |
datetime | 8字节 | 范围从1000-9999年,不会区分失去的检索及转换。 |
timestamp | 4字节 | 1970-2038年,自动检索当前时区并进行转换 |
TIMESTAMP:时间戳,以1970-1-1 0:0:0作为基准,计算当前时刻与基准时刻的秒数/毫秒数/微秒数之差。
重要:int long double decimal varchar datetime