查看环境变量
show variables; # 查看环境变量
show variables where variable_name like '%log%'; # 查看日志相关的环境变量 general_log 默认为OFF
set global general_log:= 'ON'; # 开启日志记录
创建数据库
# 普通创建
create database 数据库名称;
# 待编码方式的创建
create database 数据库名称 default charset utf8 collate utf8_general_ci;
查看数据库
show databases;
删除数据库
drop database 数据库名称;
选中数据库
use 数据库名称;
创建表
create table 表名(
c1 int,
c2 char(4),
c3 varchar(4),
c4 decimal(5,2),
c5 date,
c6 time,
c7 datetime,
c8 enum('a', 'b')
);
删除表
drop table 表名;
drop table if exists 表名; # 判定表是否存在,存在再删除
查看表结构
desc 表名;
显示所有表
show tables;
约束
set default_storage_engine=innodb; # 设置可关联 外键用
create table t2(
c1 int primary key, # 当主键
c2 varchar(4)
);
create table t1(
c1 int not null, # 非空
c2 int unique, # 唯一,不能重复
c3 int primary key auto_increment, # 主键 唯一id primary key(c1,c2) 联合主键 auto_increment 自增
c4 int default 10, # 默认值
c5 int, # 外键
end int,
foreign key(c5) references t2(c1) # 设置c5为t2的外键
);
表内容的修改
create table t1(
c1 int primary key,
c2 varchar(4) not null,
c3 date
);
alter table t1 rename t11; # 更改表名
alter table t11 add c4 enum('1', '2') not null; # 表中新增一列
alter table t11 drop c4; # 表中删除某一列
alter table t11 change c3 c33 int not null; # 修改表中的某列,将c3更名为c33且为int类型
alter table t11 modify c33 int not null; # 修改表中某列对应的数据类型&约束
表中数据的增删改
create table t1(
c1 int primary key,
c2 varchar(4),
c3 date
);
insert into t1 values(c1值, c2值, c3值); # 全量添加
insert into t1(c1) values(c1值); # 选择对应属性添加
insert into t1 values(c1值, c2值, c3值), (c1值, c2值, c3值); # 批量添加
delete from t1; # 清空t1表中的数据 自增id保留
truncate table t1; # 清空t1表中的数据 = drop table + create table 不能回滚 自增id清零
delete from t1 where c1 = 1; # 按条件删除
update t1 set c1 = 2; # 更新表t1中c1的值
update t1 set c1 = 2, c2 = '566'; # 更新表t1中c1,c2的值
update t1 set c2 = '233' where c1 = 2; # 按条件更新数据
表中数据查询
select 值; # 简单查询 显示单个值
select * from 表名; # 显示表中所有字段的值
select 字段名1,字段名2,字段名3... from 表名; # 显示表中对应字段的值
select distinct 字段名1,字段名2,字段名3... from 表名; # 去重查询
select 字段名1,字段名2,字段名3... from 表名 where 条件; # 条件查询
select 字段名1 from 表名 where x in (100,101,102); # x在100,101,102中进行判定是否存在
select 字段名1 from 表名 where x not in (100,101,102); # x在100,101,102中进行判定是否不存在
select 字段名1 from 表名 where x like ('上海%'); # x在‘上海...’中进行判定是否存在, _ 表示单个字符,% 表示0个或多个字符,仅用于字符/日期查询
select 字段名1 from 表名 where x is null; # 空值查询
select 字段名1 from 表名 where x between 10 and 20; # x在10和20之间查询
select 字段名1 from 表名 where 条件1 and 条件2; # 条件1和条件2同时满足
select 字段名1 from 表名 where 条件1 or 条件2; # 条件1和条件2任一满足
排序
create table t1(
c1 int primary key,
c2 varchar(4) not null,
c3 int
);
select * from t1 order by c1 asc; # 按c1排序 默认升序 asc可省略
select * from t1 order by c1,c4; # 可按多个排序
select * from t1 order by c1 desc; # 降序
别名
create table t1(
c1 int primary key,
c2 varchar(4) not null,
c3 date
);
select c1 as 别名 from t1; # 将c1以另一个名称展示 as可以省略
聚合函数
create table t1(
c1 int primary key,
c2 varchar(4) not null,
c3 date
);
select count(*) from t1; # 统计t1表中内容条数
select count(c3) from t1; # 统计t1表中c3内容的条avg数,不统计null
select avg(c1) from t1; # 统计t1表中c1的平均值
select sum(c1) from t1; # 统计t1表中c1的和
select max(c1) from t1; # 统计t1表中c1的最大值
select min(c1) from t1; # 统计t1表中c1的最小值
分组
select * from t1 group by c1; # 按c1分组显示
select c1 count(*) from t1 group by c1; # 按c1分组并显示对应组的数量
select c1 count(*), max(c2), min(c2) from t1 group by c1; # 按c1分组并显示对应组的数量,并显示c2的最大最小值
select c1 count(*), max(c2), min(c2) from t1 group by c1 having c1 = 1; # 按c1分组并显示对应组的数量,并显示c2的最大最小值, 然后进行过滤,只显示c1为1的值 having只能使用group by 后的参数
分页查询
select * from t1 limit a,b; # 取出t1表中的内容 从第a项开始,取b个值,a可以省略,默认从0开始
多表查询
select lno from lesson where lname = 'QTP';
select lno, score from score where lno = 4;
# 用()将语句替代值
select lno, score from score where lno = (select lno from lesson where lname = 'QTP');
select * from 表名 where 字段名 in (查询子句); # 多个子句用()包含
select * from 表名 where 字段名 > all(查询子句); # 比最大的大
select * from 表名 where 字段名 < all(查询子句); # 比最大的小
select * from 表名 where 字段名 > any(查询子句); # 比最小的大
select * from 表名 where 字段名 < any(查询子句); # 比最大的小
关联查询
#联合
select * from t1,t2; # 将t1,t2中的数据联合展示 会有无效数据
select * from t1,t2 where t1.id = t2.id; # 通过id进行关联,移除无效数据
select * from t1 inner join t2 inner join t3 on t1.id = t2.id and t2.cid = t3.cid; # 另一种写法 关联t1,t2,t3,关联条件写在on后
select * from t1 left join t2 on t1.id = t2.id; # 左关联, 左表全展示,右表匹配显示,未匹配项用NULL展示
select * from t1 right join t2 on t1.id = t2.id; # 右关联, 右表全展示,左表匹配显示,未匹配项用NULL展示
select * from t1 left join t2 on t1.id = t2.id union select * from t1 right join t2 on t1.id = t2.id; # 全外关联,左右表都全显示,未匹配项用NULL展示
时间戳转换
select unix_timestamp("2022-08-08"), from_unixtime("1659888999") from student;
unix_timestamp(时间类型值)
转为时间戳类型值
from_unixtime(时间戳类型值)
转为时间类型值
网友评论