进入数据库
数据库操作
表操作
表的增删改查‘
1、查
查询表的所有数据
select * from 表名;
查询指定的列
select 列名1,列名2 from 表名;
增
全列插入
insert into 表名 values(id int primary key auto_increment )
指定列插入
插入的数据和列名对应
insert into 表名(列名1,列名2) values ( )
指定列一行一行插入
insert into 表名( 列名) values ( ..........)
改
修改表里的数据
update 表名 set 列名=新的值 where id = **;
删
delete from 表名 where id = ** ;
起别名
select 列名 as 新列名, 列名1 as 新列名1 from 表名
去重 单列
select distinct 列名 from 表名
数据条件查询
where
1、比较语句
> = < >= <= !=
2、逻辑运算符
and or not
3、模糊查询
like
% 匹配任意多个字符
_ 匹配任意一个字符
4、范围查询
in 表示在一个不连续的范围内
between ......and ... 表示在一个连续的范围内
null
is null 判断是空
is not null 判断不是空
优先级:
由高到低的顺序
小括号>not>比较运算符>逻辑运算符
在逻辑运算符里 and > or
如果想要先执行or 就得加括号
排序
order by
asc 升序
desc 降序
分组
group by 在查询结果后面进行分组
select gender from students group by gender;
1、group by + group_concat(字段名) 可以查出该字段的信息
select gender,group_concat(name) from students group by gender;
2、group by + 聚合函数 avg() sum() count(*)
select gender,count(*) from students group by gender;
3、group by + having
having 条件表达式 用来分组查询后再根据条件进行查询
having和where的用法是一样的 只不过having只能在group by 后使用
mysql> select gender,count(*) from students group by gender having count(*)>2;
4、group by + with rollup
作用就是在最后一行 记录当前列里所有记录的总和
聚合函数
1、count(*) 获取总行数
select count(*) from students;
2、max 查询最大值
3、min 查询最大值
4、sum 求和
5、avg 求平均值
5、round(avg(列名),2) 求平均值保留两位小数
一个汉字占多少长度与编码有关:
UTF-8:一个汉字=3个字节
GBK:一个汉字=2个字节
分页
1、limit start(开始,从第几行开始查) ,count(从开始行下一行,往后查几行数据)
select * from 表名 limit start,count;
select * from 表名 limit 9,5;
外键
定义,连接两个表
1,先建主表 插入数据
2,再建子表
连接查询
1、内连接 就是两张表的交集
select * from 表1 inner join 表2 on 表1.列名=表2.列名
2、左连接
select * from 表1 left join 表2 on 表1.列名=表2.列名
3、右连接
select * from 表1 right join 表2 on 表1.列名=表2.列名
自关联
一个表自己查询自己
inner join on
子查询
定义:一个select语句里面嵌入另一个select语句
主查询和子查询的关系
1、子查询是嵌入在主查询里
2、子查询是辅助主查询 充当条件或者数据源的
3、子查询是一个完整的select语句,可以被单独拿出来使用
子查询分类
1、标量子查询 返回的是数据(一行一列)
2、列级子查询 返回的是一列(一列多行)
3、行级子查询 返回的是一行(一行多列)