目录
目录
一.数据库的操作
1.显示当前数据库
2.创建数据库
3.使用数据库
4.删除数据库
二.常用数据类型
1.数值类型
2.字符串类型
3.日期类型
三.表的操作
1.查看表结构
2.创建表
四.表的增删查改
1.插入数据
2.指定列查询
3.去重
4.排序
5.条件查询
6.分页查询
7.修改update
8.删除
创建一个名为java44的数据库,如果系统没有 java44 的数据库,则创建一个使用utf8mb4字符集的java44数据库,如果有则不创建
(if not exists 表示先删除再创建,如果此时没有这个库就创建,有的话也不会报错)此时创建成功
use 数据库名;
drop databases [if exists] 数据库名;
此时名为java44的数据库被删除
数据类型 | 大小 | 说明 | 对应的java类型 |
BIT[(M)] | M指定位数,默认为1 | 二进制数,M范围从1-64,存储范围0-2^M-1 |
bit |
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 | 双精度,M为指定长度,D为小数位,精确数值 | BigDecimal |
1字节(byte)= 8bit
对于整型类型的范围:
1. 有符号范围:-2^(类型字节数*8-1)到2^(类型字节数*8-1)-1,如int是4字节,就
是-2^31到2^31-1
2. 无符号范围:0到2^(类型字节数*8)-1,如int就是2^32-1
数据类型 | 大小 | 说明 | 对应的java类型 |
VARCHAR(SIZE) | 0-65535字节 | 可变字符串长度 | String |
TEXT | 0-65535字节 | 长文本数据 | String |
MEDIUMTEXT | 0-16 777 215字节 | 中等长度文本数据 | String |
BLOB | 0-65535字节 | 二进制形式的长文本数据 | byte[] |
数据类型 | 大小 | 说明 | 对应的java类型 |
DATETIME | 8字节 | 不会进行时区的检索及转换 | jav.util.Date java.sql.Timestamp |
TIMESTAMP | 4字节 | 自动检索当前时区并且转换 | java.util.Date、 java.sql.Timestamp |
需要操作数据库的表时,需要先使用该数据库
use 数据库名;
desc 表名;
create table 表名(
field1 datatype,
field2 datatype,
field3 datatype
);
注:这里是与java相反的,先写字段名称在写数据类型,多个字段之间用逗号隔开,最后一个不要加逗号,数据库名,表名,字段名不能是数据库关键字,(如果要是用数据库关键字,例如`desc` bit,给关键字左右两边加上键盘1旁边这个按钮的字符便不会报错)
例如(建议先删除在建表)
查看此表
(可以下载一个visual studio code 在上面编辑好然后复制粘贴,在一行前面加上--空格表时注释 )
1.全列插入:insert into 表名valus(字段1要插入的值,字段2要插入的值)
表示所有的字段都要插入值,且插入的值与表定义时插入的顺序相同
2.指定列插入: insert into 表名(要插入的字段1,要插入的字段2)values(要插入的值1,要插入的值2)(没有插入的字段为null)
3.插入多行数据:执行多条insert语句
查询该表的所有字段和数据:select * from 表名
查询指定列:select 查询列1,查询列2 from 表名
如果字段是数值型,可以使用运算符计算
查询出来的多行数据叫做查询结果集,并不等于原始数据库中的那张二维表,可以认为查询表为虚拟表,但此时amount*2作为字段名并好看,我们可以使用别名(表名也可以使用别名,当表使用了别名,字段名必须写成:表的别名.字段名)
在mysql中不能使用‘+’作为字符串拼接,需要使用contact(str1,str2,str3)
对日期的操作
此时就不能去重
order by 字段名
对多个字段进行排序:order by 字段1[asc(升序)/desc(降序)],字段2[asc/desc]
先按第一个字段顺序排序,如果第一个字段相同,才按第二个字段排序
(1)排序的字段也可以使用别名
(2)null:升序在最前面,降序在最后面
比较运算符:< <= > >=(数值型,日期型)
null不能使用比较运算符,只能用is/is not null;查询生日为空的
如果使用比较运算运算符不会报错,但是会返回空的结果集
范围匹配:between...and...(字段名 between 起始值 and 终止值)数值型或者日期型
in()
查询数学成绩为98或者78或者84
like模糊匹配
%匹配任意多个字符
_匹配一个字符
只能匹配一个字符
匹配学生姓名以孙开头的
匹配学生姓名中间是悟的名字
limit s,n(找下标s-s+n)
limit n = limit 0,n
从2下标开始,往后找三条
如果顺序不同,分页结果就不同
分页符是按照结果及进行分页,如果有条件过滤,是以条件过滤后的结果集再进行分页
update 表名 set 字段 = 要修改的值 where 条件
将id=7下标的名字改为张三(先过滤id=8再修改,不过不加过滤条件整个表的值都会修改)
delete form 表名 where 条件 order by;
删除和修改类似,也是将条件过滤后的结果进行删除(当条件比较复杂的时候,先用select验证一下数据是否为你想要删除的)