˙Ⱉ˙学习笔记——mysql查询(1)
mysql查询
查询语句,还是要记得多看多记多背多练!!
--数据的准备
--创建一个数据库
Create database python_test charset=uft8
如果是python-04要带‘’,英文字母下划线不用
--使用一个数据库
use python_test;
--显示使用的当前数据是哪个?
select database();
--创建一个数据表(记录 字段)
crate table students(
id int unsigned primary key auto_increment not null,
name varchar(20) default ‘ ‘,
height decimal(5,2),
gender enum(‘男’,’女’,’中性’,’保密’) default “保密”,
cls_id int unsigned default ‘0’,
is_delete bit defaule 0
);
一个比特两种表示,0和1,两个比特四种00,01,10,11
--classes表
Create table classes(
id int unsigned auto_increment primary key not null,
name varchar(30) not null
);
-- 向students表中插入数据
insert into students values
(0,'小明',18,180.00,2,1,0),
(0,'小月月',18,180.00,2,2,1),
(0,'彭于晏',29,185.00,1,1,0);
-- 向classes表中插入数据
insert into classes values (0, "python_01期"), (0, "python_02期");
--查询
--查询所有字段
--select * from表名
select *from students;
select *from classes;
--查询指定字段
--select 列1,列2,…from表名;
select name,age from students;
select id, name from classes;
--使用as给字段起别名
--select 字段 as名字… from表名;
select name as 姓名,age as年龄from students;
--select 表名,字段 …from表名;
select students.name, students.age from students;
--可以通过as给表起别名
--select别名,字段…from 表名as别名;
select s.name, s.age from students as s;
select students.name, students.age from students as s; (失败)
--消除重复行
--distinct字段
select distinct gender from students;
--条件查询
--比较运算符
--select …from 表名where …
-->
--查询大于18岁的信息
select * from students where age>18;
select id,name,gender from students where age>18;
--<
--查询小于18岁的信息
select * from students where age<18;
-->=
--<=
--查询小于或者等于18岁的信息
--=
--查询年龄为18岁的所有学生的名字
select * from students where age=18;
--!=或者<>(后者不通用
--逻辑运算符
--and
--18到28之间的所有学生信息
select * from students where age>18 and age <28;
--失败select *from students where age>18 and <28
--18岁以上的女性
select * from students where age>18 and gender=“女”;
select * from students where age>18 and gender=2
--or
--18岁以上或者身高高过180(包含)以上
select * from students where age>18 or height>=180;
--not
--不在 18岁以上的女性 这个范围内的信息
--select * from students where not age>18 and gender=2; ×not只否定age
select * from students where not (age>18 and gender=2);
--年龄不是小于或者等于18 并且是女性
select * from students where not age<=18 and gender=2;
--模糊查询
--like (用的少,效率低)
--% 替换1个或者多个
--_ 替换1个
--查询姓名中 以“小”开始的名字
select name from students where name like “小%”;
--查询姓名中 以“小”开始的名字
select name from students where name like “%小%”;
--查询有2个字的名字
select name from students where name like “__”;
--查询有3个字的名字
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)表示在一个非连续的范围内
--查询 年龄为18,34的姓名
select name, age from students where age=18 or age =34;
select name, age from students where age in (12,18,34);
--not in 不非连续的范围之内
--年龄不是12, 18,34岁之间的信息
Select name, age from students where age not in (12,18,34);
--between …and …表示在一个连续的范围内
--查询 年龄在18到34之间的信息
select name, age from students where age between and 34;
--not between…and …表示不在一个连续的范围内
--查询 年龄不在18到34之间的信息
select * from students where age not between 18 and 34;
select * from students where not age between 18 and 34;
--失败select * from students where age not (between 18 and 34);
--空判断
--判空is null
--查询身高为空的信息
select * from students where height is null/NULL/Null;
--判非空is not null
select * from students where height is not null;
a=None 表示没有指向,python里用is null表示
a=“” 表示a指向一个字符串,字符串为空
上面两者不一样
--排序
--order by字段 (默认从小到大)
--asc从小到大排列,即升序
--desc从大到小排序,即降序
--查询年龄在18到34岁之间的男性,按照年龄从小到大排序
select *from students where(age between 18 and 34) and gender =1 order by age;
select *from students where(age between 18 and 34) and gender =1 order by age asc;
--查询年龄在18到34岁之间的女性,身高从高到矮排序
select *from students where (age between 18 and 34) and gender =2 order by height desc;
--order by 多个字段
--查询年龄在18到34岁之间的女性,身高从高到矮排序,如果身高相同的情况下按照年龄从小到大排序
select *from students where (age between 18 and 34) and gender =2 order by height desc, age asc;
--查询年龄在18到34岁之间的女性,身高从高到矮排序,如果身高小童的情况下按照年龄从大到小排序
--如果年龄也相同那么按照id从大到小排序
select *from students where (age between 18 and 34) and gender =2 order by height desc, age asc, id desc;
--按照年龄从小到大,身高从高到矮的排序
select * from students order by age asc, height desc;