当前位置:网站首页>MySQL增删改查基础
MySQL增删改查基础
2022-08-04 22:58:00 【最后一只三脚兽】
数值类型
数据类型 | 大小 | 说明 | 对应java类型 |
---|---|---|---|
BIT[ (M) ] | M指定位数,默认为1 | 二进制数,M范围从1到64,存储数值范围从0到2^M-1 | 常用Boolean对应BIT,此时 默认是1位,即只能存0和1 |
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 |
DOUBLE之类的浮点数使用的都是IEEE标准,因此计算会有误差,python,c++等都是用的IEEE标准
DECIMAL也是表示小数,但用的是类似字符串的变长存储,误差较小,但是效率降低并且需要更多的存储空间
数值类型可以指定为无符号(unsigned),表示不取负数。
但是不推荐使用!
字符串类型
数据类型 | 大小 | 说明 | 对应java类型 |
---|---|---|---|
VARCHAR (SIZE) | 0-65,535字节 | 可变长度字符串 | String |
TEXT | 0-65,535字节 | 长文本数据 | String |
MEDIUMTEXT | 0-16 777 215字节 | 中等长度文本数据 | String |
BLOB | 0-65,535字节 | 二进制形式的长文本数据 | byte[] |
日期类型
数据类型 | 大 小 | 说明 | 对应java类型 |
---|---|---|---|
DATETIME | 8 字 节 | 范围从1000到9999年,不会进行时区的 检索及转换。 | java.util.Date、 java.sql.Timestamp |
TIMESTAMP | 4 字 节 | 范围从1970到2038年,自动检索当前时 区并进行转换。 | java.util.Date、 java.sql.Timestamp |
创建表
create table 表名(列名 类型.类名 类型...);
-- 注意sql中名字在前,变量名在后,与java不同
在类型后可以加上 comment 'XXX’注释,但该注释只能在列中使用,一般用–+空格注释
show tables;-- 查看当前数据库中有哪些表
desc 表名;-- 查看指定的表结构
drop table 表名;-- 删除表
表内的增删改查
增加数据
insert into 表名 values(值,值...)-- 值必须和表内类型一一对应
insert into 表名 (列名) values(值)-- 指定列插入
insert into 表名 values(值,值...),(值,值...)...-- 插入多组数据,一次插入多条比分开操作效率高
show variables like '%char%';-- 显示使用的字符集
-- 在创建数据库时增加character set utf8即可更改数据库的字符集
彻底更改字符集方法;
- 在 服务 中找到mysql的配置文件
- 找到配置文件后在 [mysql] 下加上default-character-set=utf8
- 在[mysqld]下加上character-set-server=utf8
- 重启服务器注意,服务器需要在 服务 中重启,不能只重启客户端
- 注意,这次操作只会对后面创建的库起作用
查询数据
select * from 表名;-- 查询表中所有数据
select * 是一个比较危险的操作
select 列名,列名... from 表名;-- 查询表中指定列数据
select 表达式 from 表名;-- 查询指定列运算后的结果
-- 注意 查询时SQL会使用最适合的类型来确保结果的有效性,因此不用害怕如DECIMAL有效数字超过的问题
select 表达式 as 别名 from 表名;-- 查询指定列运算后的结果并起别名
select distinct 列名 from 表名;-- 查询指定列去重后输出结果
select 列名 from 表名 order by 列名;-- 查询指定列排序输出
select 列名 from 表名 order by 列名 desc;-- 查询指定列排序降序输出
select 列名 from 表名 order by 列名,列名... desc;-- 多个列进行排序,前面的优先级高
条件查询
条件运算符
运算符 | 说明 |
---|---|
>, >=, <, <= | 大于,大于等于,小于,小于等于 |
= | 等于,NULL 不安全,例如 NULL = NULL 的结果是 NULL |
<=> | 等于,NULL 安全,例如 NULL <=> NULL 的结果是 TRUE(1) |
!=, <> | 不等于 |
BETWEEN a0 AND a1 | 范围匹配,[a0, a1],如果 a0 <= value <= a1,返回 TRUE(1) |
IN (option, …) | 如果是 option 中的任意一个,返回 TRUE(1) |
IS NULL | 是 NULL |
IS NOT NULL | 不是 NULL |
LIKE | 模糊匹配。% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字 符 |
null与其他值进行算数运算结果仍旧为null
逻辑运算符
运算符 | 说明 |
---|---|
AND | 多个条件必须都为 TRUE(1),结果才是 TRUE(1) |
OR | 任意一个条件为 TRUE(1), 结果为 TRUE(1) |
NOT | 条件为 TRUE(1),结果为 FALSE(0) |
注意where先于select执行
分页查询
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n;
-- 从 s 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT s, n;
-- 从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;
修改数据
update 表名 set 列名 = 修改的值,列名 = 修改的值... where 条件;
删除数据
delete from 表名 where 条件;
边栏推荐
猜你喜欢
随机推荐
文献阅读十——Detect Rumors on Twitter by Promoting Information Campaigns with Generative Adversarial Learn
【2020】【Paper Notes】Metasurfaces: Multifunctional and Programmable——
正则表达式绕过
If you can't get your heart, use "distributed lock" to lock your people
基于内容的图像检索系统设计与实现--颜色信息--纹理信息--形状信息--PHASH--SHFT特征点的综合检测项目,包含简易版与完整版的源码及数据!
[QNX Hypervisor 2.2用户手册]10.5 vdev ioapic
Shell expect 实战案例
App测试和Web测试的区别
Service Mesh落地路径
Using ngrok to optimize web pages on raspberry pi (2)
3D建模师为了让甲方爸爸过稿,还可以这么做,就是在赚血汗钱啊
自从新来了个字节20K出来的,就见识到了什么是天花板
PAN3020 Sub-1G无线收发芯片
JVM内存配置参数GC日志
typeScript-promise
DREAMWEAVER8 part of the problem solution
【内存操作函数内功修炼】memcpy + memmove + memcmp + memset(四)
一点点读懂thermal(一)
Pytest学习-Fixture
The Go Programming Language (Introduction)