MySQL-基础篇 ( 相关了解 + SQL-DDL )
目录认知了解
-
数据库,DataBase 简称 DB,是有组织的存储数据的仓库
-
数据库管理系统,DBMS,是操纵和管理数据库的大型软件
-
SQL,全名 Structured Query Language,操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准
-
主流的关系型数据库管理系统
- Oracle
- MySQL
- SQL Server
- PostgreSQL
MySQL 数据库
-
数据库的下载过程见另一文章:
-
MySQL 数据库的启动
-
手动打开任务管理器 ( 可 ctrl + alt + 数字键的"." ),找到服务中的 MySQL 即可右键启动
-
windows + R,输入
services.msc
直接打开服务 -
管理员身份进入命令行输入
net start mysql
启动,输入net stop mysql
停止- 其中
mysql
与上述方法中的服务里显示的一致
- 其中
-
-
关系型数据库 ( RDBMS )
- 建立在关系模型基础上,由多张相互连接的二维表组成的数据库
- 使用表存储数据,格式统一便于维护
- 使用 SQL 语言操作,标准统一使用方便
- 一个 DBMS 可建多个库,一个库可建多个表
SQL
通用语法
- SQL 语句可以单行或多行书写,以分号结尾
- SQL 语句可以使用空格 / 缩进来增强语句的可读性
- MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写
- 注解
- 单行注释:-- 注解内容或者 # 注解内容
- 多行注释:/* 注释内容 */
分类
分类 | 全称 | 说明 |
---|---|---|
DDL | Data Definition Language | 数据定义语言,用来定义数据库对象 ( 库、表、字段 ) |
DML | Data Manipulation Language | 数据操作语言,用来对数据库表中的数据进行增删改 |
DQL | Data Query Language | 数据查询语言,用来查询数据库中表的记录 |
DCL | Data Control Language | 数据控制语言,用来创建数据库用户、控制数据库的访问权限 |
- 打开命令行输入
mysql -uroot -p
,然后输入密码,成功后显示mysql>
就表示可以对 MySQL 进行操作了
数据类型
-
数据类型
- 主要分为三类:数值类型、字符串类型、日期时间类型
数值类型
类型 | 大小 | 相当于 java 里的 | 描述 |
---|---|---|---|
TINTINT | 1 byte | byte | 小整数值 |
SMALLINT | 2 byte | short | 大整数值 |
MEDIUMINT | 3 byte | 无 | 大整数值 |
INT / INTEGER | 4 byte | int | 大整数值 |
BIGINT | 8 byte | long | 极大整数值 |
FLOAT | 4 byte | float | 单精度浮点数值 |
DOUBLE | 8 byte | double | 双精度浮点数值 |
DECIMAL | 依赖于精度M与标度D | 小数值 ( 精确定点数 ) |
-
decimal 使用时需要指定:如 123.45,则 M 为 5,D 为 2
-
上述类型后面加上 UNSIGNED 表示无符号位,如:age TINYINT UNSIGNED,就表示 age 字段的范围为 ( 0, 255 )
-
double ( 全部整体长度, 小数点后位数 ):score double(4, 1),
字符串类型
类型 | 大小 | 描述 |
---|---|---|
CHAR | 0 ~ 255 bytes | 定长字符串 |
VARCHAR | 0 ~ 65535 bytes | 变长字符串 |
TEXT | 0 ~ 65535 bytes | 长文本数据 |
... | ... | ... |
- char(10) / varchar(10):括号内指定参数,表示当前字符串能存储的最大长度是 10,超出就会报错
- char(2):存储 2 个字符,还是占用 10 个字符的空间,未用到的就用空格补位
- varchar(3):存储 3 个字符,就占用 3 个字符的空间
- 但是 char 性能更高,因为 varchar 使用时会根据内容计算所占用的空间
- 如在要求游戏用户名长度时,长短不一,最好用 varchar,而在要求性别时就用 char
日期时间类型
类型 | 格式 | 描述 |
---|---|---|
DATE | YYYY-MM-DD | 日期值 |
TIME | HH:MM:SS | 时间值或持续时间 |
YEAR | YYYY | 年份值 |
DATETIME | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
TIMESTAMP | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
- TIMESTAMP:时间戳,范围为 1970-01-01 00:00:01 至 2038-01-19 03:14:07
DDL
数据定义语言,用来定义数据库对象
数据库操作
查询
- 查询所有数据库
SHOW DATABASES;
- 查询当前数据库
SELECT DATABASE();
- 若不知道此时是哪个数据库时使用此语句查询
创建
CREATE DATABASE[IF NOT EXISTS]数据库名[DEFAULT CHARSET 字符集][COLLATE 排序规则];
- 方括号内的都是可选语句
- 上述语句中插入 IF NOT EXISTS:只有数据库名不存在时才创建
删除
DROP DATABASE[IF EXISTS]数据库名;
- 上述语句插入 IF EXISTS:不存在就不删,不加此语句的话,若库名不存在就会报错
使用
-
USE 数据库名;
-
示例
表操作
查询
-
查询当前数据库所有表
SHOW TABLES;
-
查询表结构
DESC 表名;
-
查询指定表的建表语句
SHOW CREATE TABLE 表名;
创建
-
创建
-
CREATE TABLE 表名(
字段1 字段1类型[COMMENT 字段1注释],
......
字段n 字段n类型[COMMENT 字段n注释]
)[COMMENT 表注释];
-
注意最后一个字段没有逗号分隔
-
-
示例
修改删除
- 添加字段
ALTER TABLE 表名 ADD 字段名 类型(长度)[COMMENT 注释][约束];
- 修改字段数据类型
ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);
- 修改字段名和字段数据类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度)[COMMENT 注释][约束];
- 删除字段
ALTER TABLE 表名 DROP 字段名;
- 修改表名
ALTER TABLE 表名 RENAME TO 新表名;
- 删除表
DROP TABLE[IF EXISTS] 表名;
- 删除指定表,并重新创建该表
TRUNCATE TABLE 表名;
- 相当于表名不变所有数据清空
数据库图形化界面工具
-
可以用 IDEA 自带数据库 ( 似 DataGrip 使用 )
-
输入用户名和密码就可以测试使用
-
点击连接后面的选择 All 就可以显示所有的库
-
右键连接选择 Schema 为新建库
-
输入库名即可完成创建,注意:红线画出的 schema 与 database 同义,作用相同
-
右键库,创建表
-
点击加号或者直接右键都可以选择 Column 创建字段
-
完成表格创建,下方为创建表的生成语言
-
可以右键对表进行修改
-
也可以选择右键表选择不通过图形化页面工具,而是自行编写 SQL 语句
-
显示在 test 库下,可以输入语句,点击运行,显示结果