MySQL数据库查询语句入门

准备工作:

  • 创建数库

    create database python_test charset=utf8;

  • 使用数据库

    use python_test;

  • 查看当前正在用的数据库

    select database();

  • 创建学生数据表

    create table students(
    id int unsigned primary key auto_increment not null,
    name varchar(20) default "",
    age tinyint unsigned default 0,
    height decimal(5,2),
    gender enum("男","女","保密") default "保密",
    cls_id int unsigned default 0,
    is_delete bit default 0
    );

  • 创建班级数据表

    create table classes(
    id int unsigned primary key auto_increment not null,
    name varchar(30) not null
    );

  • 单数据插入
    insert into students values(0,"小月月",18,160.00,2,2,0);

  • 向students表中插入数据

    insert into students values
    (0,"彭于晏",29,185.00,1,1,0),
    (0,"刘德华",59,175.00,1,1,0),
    (0,"黄蓉",38,160.00,2,1,0);

  • 查询所有字段

    select * from students;
    select * from classes;
    select id,name from classes;

  • 查询指定字段

    select name,age from students;

  • 其别名

    select name as 姓名,age as 年龄 from students;

    select s.name s.age from students as s;

  • 取消重复

    select distinct gender from students;

  • 条件查询

--比较运算符
-- > <  >= <= = !=
--查询大于18岁信息
select * from students where age >= 18;

--逻辑运算符
-- and  or not 
-- 查看18到28岁之间的所有学生的信息
select * from students where age>18 and age<28;

--年龄小于或等于18 并且是女性
select * from students where age<=18 and gender="女";
  • 模糊查询

-- like  
-- % 替换1个或者多个
-- _ 替换1个
-- 查询姓名中以“小”字开头的名字
select * from students where name like "小%"

-- 查询有2个字的名字
select name from students where name like "__"
--查询至少有2个字的名字
select name from students where name like "__%"

-- rlike 正则
-- 查询以 周开始的姓名
select name from students where name rlike "^周.*";
__ 查询以周开头 以伦结尾
select name from students where name rlike "^周.*伦$";
  • 范围查询

-- in (1,3,8)表示在一个非连续的范围内
-- not in (1,3,8)
-- 查询年龄为18,34 的姓名
select name,age from students where age in (18,34);

-- between ... and ... 表示在一个连续的范围
-- not between ... and ...
-- 查看年龄在1834之间的姓名,年龄
select name,age from students where age between 18 and 34;

-- 判断
    -- 判空 is null
    -- 判非空 is not null
    -- 查询身高为空的信息
    select * from students where height is null;
  • 排序
-- order by 字段
-- asc 从小到大,升序
-- desc 从大到小,降序 
-- 默认升序

--查询年龄子啊18到34岁之间的男性,按照年龄从小到大
-- select * from 表名 where 条件 order by 字段 asc/           desc,字段 asc/desc;
select * from students where (age between 18 and 34) and gender="男" order by age asc;
select * from students where (age between 18 and 34) and gender="男" order by age asc , height asc;
  • 聚合函数
-- 总数 count
-- 查询男性有多少人,女性有多少人
select count(*) as 男性人数 from students where gender=1;
select count(*) as 女性人数 from students where gender=2;

-- 最大值 max
-- 最小值 min
-- 查询最大的年龄
select max(age) from students;

-- 查询女性最高升高
select max(height) from students where gender=2;

-- 求和 sum
-- avg 平均值
-- 计算所有人的年龄总和
select sum(age) from students;
-- 计算平均年龄 avg   sun(age)/count(*)
select avg(age) from students;

-- round(123.23 ,1) 保留1位小数
-- 计算所有人的平均年龄,保留2位小数
select round(avg(age),2) from students;
-- 计算男性的平均身高,保留2位小数
select round(avg(height,2)) from students where gender=1;
  • 分组
-- group by
-- 按照性别分组,查询所有性别
select gender from students group by gender;

-- group_concat()
-- 计算每种性别中的人数
select gender,count(*) from students group by gender;
select gender,group_concat(name,age) from students group by gender;

-- 计算男性人数   
select gender,count(*) from students where gender=1 group by gender;

-- having 
-- 查询平均年龄超过30岁的性别,以及姓名 having avg(age)>30
select gender,group_concat(name),avg(age) from students group by gender having avg(age)>30;

-- 查询每种性别当中的人数大于2的信息
select gender,group_concat(name) from students group by gender having count(*)>2;
  • 分页
-- limit start,count   start 开始的位置,不写默认从0开始, count 个数
-- 限制查询出来的数据的个数
select * from students limit 5;
-- 查询id6-10
select * from students limit 5,5

-- 显示第N页,每页显示5个  limit (第N页-1)*5,5 不能这样写
  • 多表查询
-- 链接查询
-- 内连接 ...inner join ... on ...
-- 查询 有能够对应班级的学生以及班级信息
select * from students inner join classes on students.cls_id = classes.id;
-- 按照要求显示姓名、班级
select students.*,classes.name from students inner join classes on students.cls_id = classes.id;

-- 给数据表起名
select s.*,c.name from students as s inner join classes as c on s.cls_id = c.id;

-- 左链接  left join ..on...
-- 查询每位学生对应的班级
select *  from students as s left join classes as c on s.cls_id = c.id;

-- 查询没有对应班级信息的学生 where/having
select *  from students as s left join classes as c on s.cls_id = c.id having c.name is null;
select *  from students as s left join classes as c on s.cls_id = c.id where c.name is null;
  • 自关联

    • 子查询 比自关联慢

    • 查询最高的男生信息
      select * from students where height=(select max(height) from students);

  • 9
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于MySQL数据库入门,以下是一些基本步骤: 1. 下载和安装MySQL:访问MySQL官方网站(https://www.mysql.com/),根据您的操作系统选择适当的MySQL版本,并按照官方提供的安装指南进行安装。 2. 学习基本概念:MySQL是一个关系型数据库管理系统,因此了解关系型数据库的基本概念非常重要。学习如何创建数据库、表格以及表格中的字段和数据类型。 3. 学习SQL语言:SQL(Structured Query Language)是用于与MySQL数据库进行交互的语言。学习SQL语言的基本语法和常用命令,如SELECT、INSERT、UPDATE和DELETE等。 4. 使用MySQL客户端:MySQL提供了多种客户端工具,例如MySQL命令行客户端、phpMyAdmin等。选择一个适合您的工具,并学习如何连接到MySQL服务器并执行SQL语句。 5. 实践和练习:通过实际编写SQL查询和操作数据库,来加深对MySQL的理解和熟练度。练习使用不同类型的查询、条件语句、连接和聚合函数等。 6. 学习数据库设计:了解数据库设计原则和范式规范,学习如何规划数据库结构,以及如何创建关系和约束来确保数据的完整性。 7. 阅读MySQL文档和教程:MySQL官方网站提供了详细的文档和教程,包括MySQL的各种特性、配置和性能优化等方面的信息。阅读文档和教程可以帮助您更深入地了解MySQL。 8. 探索社区和资源:加入MySQL开发者社区和论坛,与其他开发者分享经验和解决问题。还可以参考一些优秀的MySQL书籍、在线教程和视频课程来进一步学习和提升技能。 通过以上步骤,您可以逐渐掌握MySQL数据库的基本知识和技能,并在实践中不断提升自己的能力。祝您学习顺利!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值