1. 操作数据库的方式:
本节要点:
- 命令行客户端 SQL语句
- 图形化客户端
注:
- 此处的数据库是指一个逻辑上的数据集合
- 一个MySQL服务器可以在硬盘上组织保存很多数据,MySQL服务器通过“表”来组织。
额外知识:一个MySQL服务器上会有很多表,将有关联的表放到一起就构成了一个数据集合,称为数据库。
一个MySQL服务器会有很多个数据库
2. 数据库的操作
前言:
- SQL语句中定义各种名字时不能与SQL的关键字相同
- SQL语句不区分大小写
2.1 创建数据库
语法:create database(if not exists)名字;
创建时可以指定一下字符集,create database 数据库名 charset utf8;
要点:
- 加 ”if not exists“
一定要加“if not exists”的原因:
1. 数据库创建时要求不能重复,同名会报错。
2. 实际工作中是把一系列SQL语句写到一个文件中,而不会像初学时这样一条条执行。在批量执行时,如果一条SQL语句报错,后边的语句无法执行,所以创建时加”if not exists“。就好比删除文件夹时,总有文件显示在运行无法删除,导致删除操作无法进行,是不是很烦呢?SQL也是如此
- 创建数据库的同时,指定字符集
1.字符集是什么? 答:类似于ASCII码表
注:计算机中一个汉字占的字节不一定是2,它由字符集决定2.常见的字符集:
- gbk gbk下汉字占2个字节
- unicode * 给单个字符进行编码,无法给字符串进行编码
- utf8(变长编码) utf8下占3个字节
- utf8mb4(完全体的utf8)
unicode只能对单个字符进行编码,无法给字符串进行编码,所以基于unicode衍生出了可以对字符串进行编码的版本——>utf8,Java中char类型内部编码是unicode,String类型则是utf8
MySQL中的utf8是一个残本,没有emoji表情,而utf8mb4有
2.2 查看数据库
语法:show databases; (列出MySQL服务器上有哪些数据库)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| java108 |
| mysql |
| performance_schema |
| sys |
| test |
+--------------------+
2.3 选中数据库
语法:use 数据库名;
mysql> use java108
Database changed
为什么要选中数据库? 数据库中最核心的操作就是针对表的增删改查,而表是属于数据库的,想对表操作。就必须指定是哪个数据库
2.4 删除数据库
语法:drop database 数据库名;
此操作慎重!!删除数据库也会一并删除库中的表和表中的数据,严重的要吃牢饭!!
3.表的操作
针对表操作,必须先选中数据库!!!
前言:
一个表包含很多行,行中包含很多列,每一行称为一条记录,每一列称为一个字段,每个列都有一个具体的类型
3.1 MySQL中的数据类型:
所有数据类型:
1.数值相关:
- bit
- tinyint
- smallint
- int
- bigint
- float(m,n) ()用来描述精度,m指小数长度,n指小数点后边有几位
- double(m,n) 如,double(3,2)——>3.33
- decimal(m,n) 精度更高的浮点数,但占用内存大,运行速度慢 注:float和double都是IEE 745标准下的浮点数,精度会有所丢失,如 0.1 + 0.2 != 0.3
2.字符相关:
- varchar(size) size表示该类型最多存几个字符(不是字节!!)一个汉字占一个字符,但不一定占一个字节
- text
- mediumtext
- blob 二进制数据 注:
- size虽然会指明空间大小,但不会分配这么大空间,而是先分配较小空间,不够再扩展
- 这些存的字符都是能在码表上找到的,码表上找不到的就是二进制的数据,如,音乐,视频
3.时间相关
- datetime 8字节
- timestamp 4字节
重点掌握:
- int
- long
- double
- decimal(m,n)
- varchar(size)
- datetime
注:对表进行操作之前要先选中数据库(use 数据库名)
3.2 创建表
create table 表名;
3.3 查看该数据库中所有的表
show tables;
3.4 查看指定表的结构
desc 表名;
3.5 删除表
drop table 表名;(此操作慎重!!删除表会连表中的数据一起删除,不可恢复)