DDL 操作数据库
查询
show databsass; //查看数据库
创建
create database 数据库名; //创建数据库
create database if not exists 数据库名称 //创建数据库(判断,如果不存在则创建)
删除
drop 数据库名 //删除数据库:
drop database if exists 数据库名 //删除数据库(判断,如果存在则删除)
使用
selest database(); //查看当前数据库:
use 数据库名; //切换数据库
操作数据表
查询表
show tables; //查询数据库下所有表:
desc 表名; //查询表结构
创建表
creat table 表名 (
字段名1 数据类型1,
…
字段名n 数据类型n
);
删除表
drop table 表名; //删除表:
drop table if exists 表名 //删除表时判断表是否存在;
修改表
alter table 表名 rename to 新表名; //修改表名
alter table 表名 add 列名 数据类型; //添加一列
alter table 表名 modify 列名 新数据类型; //修改数据类型
alter table 表名 change 旧列名 新列名 新数据类型; //修改列名和数据类型
alter table 表名 drop 列名; 删除列
数据类型
DML数据的增删改
添加数据
inser tinto 表名(列名1,列名2,…) values(值1,值2,…); 给指定列添加数据
inser tinto 表名 values(值1,值2,…); 给全部列添加数据
修改表数据
update 表名 set 列名1=值1,列名2=值2,… where 条件;
注意:修改语句中如果不加条件,则将所有数据都修改!
删除数据
delete from 表名 where 条件 ;
truncate删除表记录 属于DDL
truncate table 表名;
truncate和delete的区别:
1) delete是将表中的数据一条一条删除
2) truncate是将整个表摧毁,重新创建一个新的表,新的表结构和原来表结构一模一样
DQL数据的查询
对表中数据的查寻
基础查询
select 字段列表 from 表名; //查询选定字段列表
select * from 表明; //查询所有列表
select distinct 字段名,字段名,.. from 表名; //去除重复记录
select 字段名 as 别名, 字段名2 as 别名... from 表名 AS 表别名; as可以省略
条件查询
语法:select * from 表名 whereE 条件列表;
俩个条件同时满足 用and连接
select * from 表名 where age>35 and sex='男';
两个条件其中一个满足 用or连接
select * from 表名 where age>35 or sex='男';
多个条件满足一个 用in
select * from 表名 where id in (1,3,5);
除了(多个条件满足) 用not in
select * from 表名 where id not in(1,2,3);
范围查询
查询成绩english大于等于75,且小于等于90的学生
select * from 表名 where english>=75 and english<=90;
select * from 表名 where english between 75 and 90;
模糊查询
select * from 表名 where name like '马%'; 姓马的名字
select * from 表名 where name like '%马%'; 名字中包含
select * from 表名 where name like '马__'; 姓马并且 三个字
排序查询
select 字段列表 from表名 order by 排序字段名1 [排序方式1],…;
排序方式 ASC升序 默认 DESC 降序
select * from 表名 order by age ;
select * from 表名 order by age , math DESC;
查询成绩english前5的学生
select * from 表名 order by english DESC LIMIT 5
分组查询
select * from 表名 group by 字段名;
聚合函数
select 聚合函数名(列名) from 表;
通常使用:
COUNT(列名) //统计数量
sum(列名) //求和
max(列名) //最大值
min(列名) //最小值
avg(列名) //平均值
注意 null值不参与聚合运算
select * from 表名 WHERE 分组前条件限定 group by 分组字段名 having 分组后条件过滤;
注意
分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义
group by后边的字段值相同才能划分为一组;
where 和 having 区别
执行时机不一样:where 是分组之前进行限定,不满足where条件,则不参与分组,而having是分组之后对结果进行过滤。
可判断的条件不一样:where 不能对聚合函数进行判断,having 可以。
执行顺序:
from 表名 where > group by > 聚合函数 > having
分页查询
select 字段列表 from 表名 limit 起始索引 , 查询条目数;
计算公式
起始索引 = (当前页码-1) * 每页显示的条数
时间的格式
delete from 表名 DATE_FORMAT(时间字段名,'%Y%m%d') = DATE_FORMAT('20220114','%Y%m%d')
时间的格式
数据库类型转换
CHAR String
VARCHAR String
LONGVARCHAR String
NUMERIC java.math.BigDecimal
DECIMAL java.math.BigDecimal
BIT boolean
TINYINT byte
SMALLINT short
INTEGER int
BIGINT long
REAL float
FLOAT double
DOUBLE double
BINARY byte[]
VARBINARY byte[]
LONGVARBINARY byte[]
DATE java.sql.Date
TIME java.sql.Time
TIMESTAMP java.sql.Timestamp
datetime