Mysql单表查询(胖胖老师)

数据准备
drop table if exists class;
create table class(
    class_no int(2) unsigned zerofill primary key auto_increment comment ‘班级编号‘,
    class_name varchar(30) not null comment ‘班级名称‘
);
insert into class values(1, ‘培优班‘);
insert into class values(2, ‘普通班‘);

drop table if exists student;
create table student(
    stu_no int(2) unsigned zerofill primary key auto_increment comment ‘学员编号‘,
    stu_name varchar(30) not null comment ‘学员姓名‘,
    stu_sex varchar(3) not null comment ‘学员性别‘,
    stu_age tinyint(2) unsigned zerofill comment ‘学员年代‘,
    class_no int(2) unsigned zerofill comment ‘所在班级编号‘,
    foreign key(class_no) references class(class_no)  
);
insert into student values(01, ‘李白‘, ‘男‘, 18, 01);
insert into student values(02, ‘杜甫‘, ‘男‘, 20, 01);
insert into student values(03, ‘张飞‘, ‘男‘, 32, 02);
insert into student values(04, ‘韩信‘, ‘男‘, 26, 02);
insert into student values(05, ‘了龙‘, ‘男‘, 27, 02);
insert into student values(06, ‘大乔‘, ‘女‘, 17, 01);
insert into student values(07, ‘小乔‘, ‘女‘, 16, 01);
insert into student values(08, ‘小乔‘, ‘女‘, 16, 01);
insert into student values(09, ‘关哥‘, ‘男‘, 32, 02);
insert into student values(10, ‘刘备‘, ‘男‘, 36, null);
alter table student drop foreign key `student_ibfk_1`;

1: [ order by ] 排序
    例: select * from student;
    例: select * from student order by stu_age;        --对学生年龄进行排序
    例: select * from student order by stu_age desc;   --desc表示的就是从大到小排序,默认是升序
    例: select * from student order by stu_age asc;    --asc表示从小到排序,默认的就是asc
    例: select * from student order by stu_age asc, stu_no desc;  --如果一个字段不能区分大小时,则可以按照第二个字段来区分

字符集与校对规则
    例: show character set;   --查看mysql数据库所支持的字符集
    例: show collation;
    例: show collation like ‘gbk%‘;

ps: 每个字符集都会提供一个或者多个校对规则, 一般的校对规则命名是: 字符集_地域名_ci|cs|bin;
    ci: 表示不区分大小写;
    cs: 表示区分大小写;
    bin: 表示使用编码比较;   [a-z]:[97-122]    [A-Z]:[65-90]

create table t_1(
        name varchar(20)
    ) character set gbk collate gbk_chinese_ci;
    insert into t_1 values(‘C‘),(‘a‘),(‘B‘);
    select * from t_1 order by name;
    
    create table t_2(
        name varchar(20)
    ) character set gbk collate gbk_bin;
    insert into t_2 values(‘C‘),(‘a‘),(‘B‘);
    select * from t_2 order by name;
*******************************************************************************************************

2: [ limit ]限制获得的记录数
    语法: limit offset, row count。  offset表示索引值(从0开始), row count表示要获取的记录数
    select * from student;
    例: select * from student limit 1, 5;   --从第二条数据开始获取,获取5条数据
    例: select * from student limit 1, 50;  --如果要获取的数据,超过了总共的记录数,这时则会获取所有的
    例: select * from student limit 5;      --如果只有一个参数时同则表示要获取的记录数,从0开始获取
*******************************************************************************************************

3: [ distinct ] 除去重复的记录
    ps: 只有要查询的字段值全部完全相同时,才能算是重复,并不是部分的字段相同
    例: select distinct stu_name from student;
    例: select distinct stu_name, stu_age from student;
    例: select distinct stu_no, stu_name, stu_age from student;   --这里不能去重,因为没有重复的记录

例: select all stu_name, stu_age from student;  --all与distinct相反, all表示获取到所有的记录, 但默认就是all

时间: 2024-10-07 07:10:29

Mysql单表查询(胖胖老师)的相关文章

python开发mysql:单表查询&多表查询

一 单表查询,以下是表内容 1 一 having 过滤 2 1.1 having和where 3 select * from emp where id > 15; 4 解析过程;from > where 找到数据 > 分组(没有默认一个组)> select 打印 where是出结果之前 5 select * from emp having id > 15; 6 解析过程;from > where 找到数据(没有约束条件,就是整个表)) > 分组(没有默认一个组)&

0x06 MySQL 单表查询

一 单表查询语法 SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT 限制条数 二 关键字执行优先级(重点) 重点中的重点:关键字的执行优先级 1)from 2)where 3)group by 4)having 5)select 6)distinct 7)order by 8)limit 1.找到表:from 2.拿着where指定的约束条件,去文件/表中取出一条条记录 3.将取出的一

python之路--MySQl单表查询

一 单表查询语法 #查询数据的本质:mysql会到你本地的硬盘上找到对应的文件,然后打开文件,按照你的查询条件来找出你需要的数据.下面是完整的一个单表查询的语法 select * from,这个select * 指的是要查询所有字段的数据. SELECT distinct 字段1,字段2... FROM 库名.表名 #from后面是说从库的某个表中去找数据,mysql会去找到这个库对应的文件夹下去找到你表名对应的那个数据文件,找不到就直接报错了,找到了就继续后面的操作 WHERE 条件 #从表中

一个MySQL 单表查询SQL,引起一次“故事”

一.描述故事的过程是这个样子的,MySQL 数据库有一张40多G的大表,开发人员执行了一个单表查询,结果我就收到了一个磁盘空间满的告警.一下子就不淡定了,谁在搞事情,脑海里各种可能行想了一遍,想到的最多的就是ibtmp1爆了,第一时间线上看一下,查到了最大的那个文件,结果和想的一样.这里我们要看SQL是怎么写的,表结构是什么样子,然后和官网对比,MySQL在查询的时候有很多可能会使用磁盘临时表,包括表连接.排序.大字段等等. 二.解决方法临时解决方法:1.临时扩一下硬盘2.直接重启 终结解决方案

mysql 单表查询

目录 单表查询 准备数据 简单查询 比较运算符 范围筛选 between 多选 in 模糊查询 like 逻辑运算符:在多个条件直接可以使用逻辑运算符 and or not 身份运算 - 关于null is null /is not null 正则匹配 regexp 分组 group by 聚合 (把很多行的同一个字段进行一些统计,最终的到一个结果) 分组+聚合 HAVING过滤 单表查询 准备数据 只是把查询结果按照自己想要的方式返回,不对数据做修改 #准备表和记录 company.emplo

133 MySQL单表查询

目录 一.单表查询 1.1 语法 1.2 关键字优先级 1.3 注意(重点) 1.4 测试一个单表的distinct去重 二.表记录查询测试 2.1常用函数 2.2 数据准备 2.3 表记录测试 2.3.1 where条件查询 2.3.2 group by 分组查询 2.3.3 having 和 where 2.3.4 排序 order by 2.3.5 limit限制 一.单表查询 1.1 语法 每次查询出来的一些记录,他们都是一张表,只不过这张表是存在内存中的 查询记录如果想要二次利用的话,

mysql单表查询&&多表查询(职员表14+9)

dept(deptno,dname,loc) emp(empno,ename,job,mgr,hiredate,sal,COMM,deptno) salgrade(grade,losal,hisal) stu(sid,sname,age,gander,province,tuition) 单表查询题目 ==================================================== dept(deptno,dname,loc) emp(empno,ename,job,mgr

mysql单表查询语句优化

Mysql语句优化 范例1:优化语句SELECT * FROM `tbl_order_buy_eta` WHERE `id_order`=1843 #通过explain分析语句结果如下 mysql> explain SELECT * FROM `tbl_order_buy_eta` WHERE `id_order`=1843\G *************************** 1. row ***************************            id: 1   se

MySQL 单表查询(Day42)

阅读目录 一,查询语法 二,简单查询 三,where约束 四,having过滤 五,分组查询 group by 六,关键字的执行优先级 七,查询排列 order by 八,使用聚合函数查询 九,where补充 十,限制查询的记录数:limit ================================================================================================================================