五、select设置别名(alias -----as)
在 mysql 查询时,当表的名字比较长或者表内某些字段比较长时,为了方便书写或者多次使用相同的表,可以给字段列或表设置别名,方便操作,增强可读性。
列的别名 select 字段 as 字段别名 表名 表的别名 select 别名.字段 from 表名 as 别名 as 可以省略
使用场景:
1、对复杂的表进行查询的时候,别名可以缩短查询语句的长度 2、多表相连查询的时候(通俗易懂、减短sql语句)
5.1查询表的记录数量,以别名显示
select count(*) as number from school;
5.2利用as,将查询的数据导入到另外一个表内
创建Another表,将school表的查询记录全部插入Another表
create table Another as select * from school;
此处as起到的作用: 创建了一个新表, 并定义表结构,插入表数据(与school表相同) 但是”约束“没有被完全”复制“过来 #但是如果原表设置了主键, 那么附表的:default字段会默认设置一个0
相似:
克隆、复制表结构
也可以加入where 语句判断
在为表设置别名时,要保证别名不能与数据库中的其他表的名称冲突。
列的别名是在结果中有显示的,而表的别名在结果中没有显示,只在执行查询时使用
select address as 地区 from Another; 利用as ,将Another表中的address设置别名地区,进去查询
六、select通配符查询
通配符主要用于替换字符串中的部分字符,通过部分字符的匹配将相关结果查询出来。
通常通配符都是跟like一起使用,并协同where子句共同来完成查询任务。
常用的通配符有两个,分别是:
#语法: select 字段名 from 表名 where 字段 like 模式 %:百分号表示零个、一个或多个字符 _:下划线表示单个字符
6.1查询以什么开头或以什么结尾
查询以什么结尾的’%l’ 查询以什么开头的’l%’ select id,name from school where name like 'l%';
查询字段中包含某个字段’%i%’ select id,name from school where name like '%i%';
6.2查找某个字段开头长度固定
使用“_”匹配字段中的一个字符 select id,name from school where name like 'l__';
6.3使用“%”与“_”组合使用查询
使用“%”与“_”组合使用查询 select id,name from school where name like 'l_%';
七、select子查询
子查询也被称作内查询或者嵌套查询,是指在一个查询语句里面还嵌套着另一个查询语句。子查询语句是先于主查询进行下一步的查询过滤。
在子查询中可以与主语句查询相同的表,也可以是不同的表
7.1select相同表查询
语法格式
select 字段1,字段2 from 表名1 where 字段 in (select 字段 from 表名 where 条件);
相同表查询
select name,score from school where id in (select id from school where score > 80);
7.2select多表查询
select name,score from school where id in (select id from school2 where age > 25);
NOT 取反,将子查询的结果,进行取反操作
select name,age from school2 where id not in (select id from school where score < 90);
7.3select结合insert进行操作
子查询还可以用在insert语句中,子查询的结果集可以通过insert语句插入到其它表中
insert into Another2 select * from school where id in (select id from school);
7.4select结合update进行操作
update语句也可以使用子查询,update内的子查询,在set更新内容时,可以是单独的一列,也可以是多列。
update school set score=77 where id in (select id from school2 where id <4);
7.5select结合delete进行操作
delete from school where id in (select id from school2 where score <60);
7.6select结合exists进行操作
exists这个关键字在子查询时,主要用于判断子查询的结果集是否为空,如果不为空,则返回true,反之则返回false
注:在使用exists时,当子查询有结果时,不关心子查询的内容,执行主查询操作;当子查询没有结果时,则不执行主查询操作。
select count(*) from school where exists(select id from school where score=100); select count(*) from school where exists(select id from school where score=90);
7.7select结合as别名进行操作
将结果集作为一张表进行查询的时候,需要用到别名 将结果集作为一张表进行查询 将结果集做为一张表进行查询的时候,我们也需要用到别名
从class表中的id和name字段的内容做为"内容" 输出id的部分
select * from 表名 此为标准格式,而以上的查询语句,“表名"的位置其实是一个结果集,mysql并不能直接识别,而此时给与结果集设置一个别名,以”select a.id from a“的方式查询将此结果集是为一张"表”,就可以正常查询数据了,如下:
select count(*) from (select id from school where score >80) a;