MYSQL【持续更新中】
文章目录
跳转链接(学习路线)及前言(更新中)
java
↓
mysql
↓
jdbc
↓
javaweb
↓
html
css
javascript
javascriptDOM操作
vue
react
基础部分、供复习和平日查询使用,快速复习!!!
内容有误,可以评论区指出,随时改正
此处入门过sql的可以忽略不看
注释
-- 这是单行注释
# 这也是单行注释
/*
这是多行注释
注释*/
mysql不区分大小写
另外的关于数据库的作用和定义自己百度或者找视频
语法分类
DDL:
定义数据库、表、字段
DML:
增删改,数据操作
DQL:
查询数据
DCL:
创建用户,管理用户权限
定义数据库、表、字段DDL
数据库操作
查询数据库
show databases; #查询所有数据库
select database(); # 查询当前数据库
创建数据库
create database [if not exists] 数据库名 [default charset 字符集] [collate 排序规则];
#此处的 if not exists 加上则代表 “ 如果没有该数据库则创建,如果有该数据库则不操作 ”
#此处的 default charset 加上则代表设置数据库默认的字符集格式,可以设置为utf8mb4(该字符集支持四字节字符,默认的utf8只支持三字节字符)
删除数据库
drop database [if exists] 数据库名;
#此处的 if not exists 加上则代表 “ 如果没有该数据库则删除,如果有该数据库则不操作 ”
使用某个数据库
use 数据库名;
表操作
查询当前数据库所有表
show tables;
查询指定表结构
desc 表名;
查询指定表的建表语句
show create table 表名;
创建表
create table 表名(
字段名称 字段类型 [comment 注释],
字段名称1 字段1类型 [comment 字段1注释],
字段名称2 字段2类型 [comment 字段2注释],
...
字段名称n 字段n类型 [comment 注释n]
)[comment 表注释内容];
注意最后一个字段结束没有逗号
数据类型(了解)
- 数值类型
类型 | 大小 | 有符号范围 | 无符号范围(在类型关键字后加unsigned) | 描述 |
---|---|---|---|---|
tinyint | 1byte | (-128,127) | (0,255) | 小整数值 |
smallint | 2bytes | (-32768,32767) | (0,65535) | 大整数值 |
mediumint | 3bytes | (-8388608,8388607) | (0,16777215) | 大整数值 |
int或integer | 4bytes | (-2147483648,2147483647) | (0,4294967295) | 大整数值 |
bigint | 8bytes | (-263,263-1) | (0,2^64-1) | 极大整数值 |
float | 4bytes | (-3.402823466 E+38, 3.402823466351 E+38) | 0 和(1.175494351 E-38,3.402823466 E+38) | 单精度浮点数值 |
double | 8bytes | (-1.7976931348623157 E+308,1.7976931348623157 E+308) | 0 和(2.2250738585072014 E-308,1.7976931348623157 E+308) | 双精度浮点数值 |
decimal | 依赖于M(精度)和D(标度)的值 | 依赖于M(精度)和D(标度)的值 | 小数值(精确定点数) |
2.字符串类型
类型 | 大小 | 描述 |
---|---|---|
char | 0-255bytes | 定长字符串 |
varchar | 0-65535bytes | 变长字符串 |
tinyblob | 0-255bytes | 不超过255个字符的二进制数据 |
tinytext | 0-255bytes | 短文本字符串 |
blob | 0-65535bytes | 二进制形式的长文本数据 |
text | 0-65535bytes | 长文本数据 |
mediumblob | 0-16777215bytes | 二进制形式的中等长度文本数据 |
mediumtext | 0-16777215bytes | 中等长度文本数据 |
longblob | 0-429967295bytes | 二进制形式的极大文本数据 |
longtext | 0-429967295bytes | 极大文本数据 |
char定长字符,如果定义十个字符,即使存储一个字符,也会占用十个字符的空间,未占用的空间使用空格补位
varchar变长字符,一个字符则占用一个字符的空间,无论定义多长,根据内容计算占用空间
所以char性能会优于varchar
3.日期时间类型
类型 | 大小 | 范围 | 格式 | 描述 |
---|---|---|---|---|
date | 3 | 1000-01-01 至 9999-12-31 | YYYY-MM-DD | 日期值 |
time | 3 | -838:59:59 至 838:59:59 | HH:MM:SS | 时间值或持续时间 |
year | 1 | 1901至2155 | YYYY | 年份值 |
datetime | 8 | 1000-01-01 00:00:00 至 9999-12-31 23::59:59 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
timestamp | 4 | 1970-01-01 00:00:01 至 2038-01-19 03:14:07 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值,时间戳 |
修改表
添加字段
alter table 表名 add 字段名 类型(长度) [comment 注释] [约束];
修改字段
# 修改数据类型
alter table 表名 modify 字段名 新数据类型(长度);
# 修改字段名和字段类型
alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释] [约束];
删除字段
alter table 表名 drop 字段名;
修改表名
alter table 表名 rename to 新表名;
删除表
# 删除表 注意该操作会删除表的数据
drop table [if exists] 表名;
# 删除指定表,并重新创建该表 注意该操作也会删除表的数据
truncate table 表名;
图形化工具(了解)
sqlyog
navicat
idea自带的datagrip
增删改数据操作DML
增
# 给指定字段添加数据
insert into 表名 (字段名1,字段名2,...) values (值1,值2,...);
# 给全部字段添加数据
insert into 表名 values(值1,值2,...);
# 批量添加
insert into 表名 (字段名1,字段名2,...) values (值1,值2,...),(值1,值2,...),(值1,值2,...)...;
insert into 表名 values (值1,值2,...),(值1,值2,...),(值1,值2,...)...;
注意:插入数据时,指定的字段顺序是对应的,字符串和日期类型数据应该包在引号中,插入的数据大小,也应该在字
段类型的范围内。
改
update 表名 set 字段名1 = 值1 ,字段名2