数据库是一类软件,它是用来管理数据的软件,往往是把数据存储在硬盘上(持久化存储)。用户可以很方便地实现增删查改功能。
数据库软件的典型代表:MySQL,Oracle,SQL Server
MySQL 是一个客户端 — 服务器软件,在控制台上输入任何一个命令,本质上都是通过网络的方式,和服务器进行了交互。
客户端:主动发起请求的一方
服务器:被动接受请求的一方
请求:客户端给服务器发送的数据
响应:服务器给客户端返回的数据
MySQL 服务器中有放着很多数据库,一个数据库中又可以放着很多数据表,这就像套娃一样。而数据表的结构,非常类似于 Excel 表格。
图解分析:
首先,MySQL、Oracle,SQL Server 都是关系型数据库,它们都是由行和列构成的。
一行的数据就叫做 " 记录 ";一列的数据就叫做 " 字段 " 。
我们可以联想到 Excel 表格,
每一行的内容是不同属性的,每一列的内容是相同属性的。
SQL 语句就是对数据库进行操作的一种语言。
语法注意事项:
① 在 SQL 中,不区分字母大小写,但建议使用小写,这主要是为了屏蔽不同系统 (Windows, Linux)所带来的差异化。
② SQL 中的字符串是用单引号包起来的,而不是双引号。
③ 如果我们创建的字段名与数据库中的关键字重名了,就需要为字段名用 ` 号括起来。(英文模式下,键盘上 Esc 正下方的键)
此处所提到的数据库,指的是一些逻辑上的数据集合,一个 MySQL 服务器上可以同时管理多组这样的数据集合。
show databases;
数据库的名字不能是 关键字
数据库的名字不能是 已存在的数据库名
create database 数据库名;
use 数据库名;
drop database 数据库名;
把数据库删除掉,这个操作十分危险,因为一旦执行成功后,此时数据大概率就恢复不回来了。以后在公司中,千万不要使用 drop database !!!
进行表操作之前,一定要先使用 use 选中当前表所在的数据库,因为针对于某张表操作,实际上这张表是在某个数据库中。
create table 表名(列名 类型, 列名 类型......);
show tables;
查看某个表里面有几列,每一列都是什么类型,每一列都是什么名字,每一列其他的补充信息。desc 针对的是数据库中存储的表,而不能针对 select 所查询的临时表。
desc 的意思为:describe (描述)
desc 表名;
drop table 表名;
删除表也是一个非常危险的操作,因为一旦执行成功后,此时数据大概率就恢复不回来了 !!!
方式一:
--
相当于 Java 中的 //
方式二:
commit
复制:选中语句 + Enter
粘贴:Ctrl + v
中断当前的输入,并另起一行重新输入:Ctrl + c
重复使用上一个命令:上下方向键
数据类型 | 举例 |
---|---|
整数类型 | TINYINT、SMALLINT、 MEDIUMINT、 INT(或INTEGER)、 BIGINT |
浮点数类型 | FLOAT、DOUBLE |
定点数类型 | DECIMAL |
位类型 | BIT |
时间类型 | YEAR、TIME、 DATE、 TIMESTAMP、DATETIME |
文本字符串类型 | CHAR、VARCHAR、 TINYTEXT、 TEXT、 MEDIUMTEXT、 LONGTEXT |
枚举类型 | ENUM |
集合类型 | SET |
二进制字符串类 | BINARY、VARBINARY、 TINYBLOB、 BLOB、 MEDIUMBLOB、 LONGBLOB |
JSON类型 | JSON对象、JSON数组 |
空间数据类型 | 单值类型:GEOMETRY、POINT、LINESTRING、POLYGON: 集合类型:MULTIPOINT、 MULTILINE ST RING、MULTIPOLYGON、GEOMETRYCOLLECTION |
① 整数类型:(最长用 INT)
整数类型 | 字节 | 有符号数取值范围 | 无符号数取值范围 |
---|---|---|---|
TINYINT | 1 | -128 ~ 127 | 0 ~ 255 |
SMALLINT | 2 | -32768 ~ 32767 | 0 ~ 65535 |
MEDIUMINT | 3 | -8388608 ~ 8388607 | 0 ~ 16777215 |
INT、INTEGER | 4 | … | … |
BIGINT | 8 | … | … |
② 浮点数类型:
浮点数类型 | 字节 | 精度 |
---|---|---|
FLOAT | 4 | 单精度 |
DOUBLE | 8 | 双精度 |
MySQL 的浮点数支持如下语法:
FLOAT(M,D) 或 DOUBLE(M,D)
在这里,M 称为精度 ,D 称为标度 。( M 表示整数位+小数位,D 表示小数位 )
③ 定点数类型:
DECIMAL(M,D) // M 称为精度 ,D 称为标度,它可以精确数值
定点数可以精确数值,常用于精度要求较高的场合,如果在代码中用到了 " 钱 " 的计算场合,或者测距等变量,可以使用 DECIMAL.
④ 时间类型:(最长用 DATETIME)
类型 | 名称 | 字节 | 日期格式 |
---|---|---|---|
YEAR | 年 | 1 | YYYY |
TIME | 时间 | 3 | HH: MM: SS |
DATE | 日期 | 3 | YYYY - MM - DD |
TIMESTAMP | 日期时间 | 4 | YYYY - MM - DD HH: MM: SS |
DATETIME | 日期时间 | 8 | YYYY - MM - DD HH: MM: SS |
⑤ 文本字符串类型:
常用 varchar 指定 size,若文本数据过大,可以考虑 TEXT 之上.
文本字符串类型 | 字节大小 |
---|---|
CHAR(SIZE) | 0 ~ 255 |
VARCHAR(SIZE) | 0 ~ 65535 |
TINYTEXT | 0 ~ 255 |
TEXT | 0 ~ 65535 |
MEDIUMTEXT | 0 ~ 16777215 |
LONGTEXT | 0 ~ 4294967295 |
MySQL关键字 | 含义 |
---|---|
NULL | 数据列可包含 NULL 值 |
NOT NULL | 数据列不允许包含 NULL 值 |
DEFAULT | 默认值 |
PRIMARY KEY | 主键 |
AUTO_ INCREMENT | 自动递增,适用于整数类型 |
UNSIGNED | 无符号 |
CHARACTER SET name | 指定一个字符集 |
int:整型,4字节
double:浮点型,8字节
varchar(SIZE):字符串类型,0 - 65,535字节,字符串的最大长度
LONGTEXT:用于长文本字符串
datetime:日期类型,8字节
在上述的 varchar(SIZE) 中的 SIZE,在学习中,可以随意写,而在工作中,就不能乱写了,一般情况下,像这种字符串的长度,都会有明确规定,(最长多少 / 最短多少),一般由产品经理规定。
在 test2 表中创建一张 student 表。
SQL 语句可以先在 IDEA 编辑器编写之后,再复制到数据库中,这样做便于我们修改和观察。
-- 如果存在数据库则不创建
create database if not exists test2;
-- 选择 test2 数据库
use test2;
-- 如果存在 student 表,就理解删除
drop table if exists student;
-- 重新创建一张 student 表,并同时创建三个字段
create table student(
id int primary key auto_increment,
name varchar(20),
total_score int
);
-- 插入数据
insert into student values(null, '李明', '285');
insert into student values(null, '莉莉', '290');
insert into student values(null, '小红', '280');