mysql查询表别名_MySQL-复杂查询及条件-起别名-多表查询-
04
基本查询语句及⽅法
测试数据创建
如果在windows系统中,插⼊中⽂字符,select的结果为空⽩,可以将所有字符编码统⼀设置成gbk(或者参照我安装配置MySQL的博客,将所有字符编码设置为 utf8)
创建数据库与表
create database db1;
use db1;
create table emp(
id int not null unique auto_increment,
# 表内没有字段是primary key,innodb的机制,⼀个表没有primaryk key时会⾃动将 not null + unique的键⾃动升级为 primary key 主键
name varchar(20) not null,
sex enum('male','female') not null default 'male', # ⼤部分是男的
age int(3) unsigned not null default 28, # 这个3 只限制了显⽰宽度,并不影响存储
hire_date date not null,
post varchar(50),
post_comment varchar(100),
salary double(15,2),
office int, # ⼀个部门⼀间办公室,⼀个门牌号
临清狮子猫depart_id int # 暂不建⽴外键关系
);
mysql语句多表查询
插⼊表记录数据
# 三个部门:教学,销售,运营
# 以下是教学部
insert into emp(name,sex,age,hire_date,post,salary,office,depart_id) values
('jason','male',18,'20170301','张江第⼀帅形象代⾔',7300.33,401,1),
('egon','male',78,'20150302','teacher',1000000.31,401,1),
('kevin','male',81,'20130305','teacher',8300,401,1),
('tank','male',73,'20140701','teacher',3500,401,1),
('owen','male',28,'20121101','teacher',2100,401,1),
('jerry','female',18,'20110211','teacher',9000,401,1),
('nick','male',18,'19000301','teacher',30000,401,1),
('sean','male',48,'20101111','teacher',10000,401,1),
# 以下是销售部门
('歪歪','female',48,'20150311','sale',3000.13,402,2),
('丫丫','female',38,'20101101','sale',2000.35,402,2),
('丁丁','female',18,'20110312','sale',1000.37,402,2),
('星星','female',18,'20160513','sale',3000.29,402,2),
('格格','female',28,'20170127','sale',4000.33,402,2),
# 以下是运营部门
('张野','male',28,'20160311','operation',10000.13,403,3),
('程咬⾦','male',18,'19970312','operation',20000,403,3),
('程咬银','female',18,'20130311','operation',19000,403,3),
('程咬铜','male',18,'20150411','operation',18000,403,3),
aspen自学('程咬铁','female',18,'20140512','operation',17000,403,3);
数据展⽰
常见结果排版
select * from emp;
另⼀种结果排版 \G
当表字段特别多的时候,结果的排版可能会出现混乱的现象,你可以在语句最后加 \G 来改变排版,⽅便查看
⽐较差的展⽰结果,这种情况就⾮常适合⽤ \G 来看数据
简单查询语句的书写与执⾏顺序
查询语句书写
查询出 emp 表中id 在 3~6 的员⼯详细信息
思路:从emp 表中,查 id ⼤于3 且 ⼩于 6 的数据
语句
select * from emp where id > 3 and id < 6;
这⾥仅为了演⽰书写顺序,不考虑其他写法
执⾏顺序
最先执⾏的是 from,来确定到底是哪张表
然后执⾏ where,根据条件筛选数据
最后执⾏ select,来拿筛选出来的数据中的(某些,select 后⾯跟的字段名)字段科普-- 起别名
关键字 as
可以给表起别名
可以给查询出来的虚拟表(查询结果)起别名
可以给字段起别名java消息推送的方式有哪几种
可以给函数的结果取别名(max、min 等)
写法
要起别名的对象 as 别名 或者 直接 要起别名的对象 别名
不过尽量还是⽤as ,不⽤as 可能语义不明确
给函数结果起别名
... max(hire_date) as max_date ...
给表起别名
select ... from emp as t1 ....
给查询出来的虚拟表取别名
... (select * from emp) as t2 ...ajax实例教学视频
给字段起别名
select name as '姓名', post '部门' from emp;
可以对字段做四则运算(加减乘数)
查⼀下 jason 的年薪
select name as '姓名', salary * 12 as '年薪' from emp where name = 'jason';
concat 格式化拼接字段
可以按指定格式拼接字段
select concat('oldboy_', name, '_', id), sex, post, salary from emp;
concat_ws ⽤指定字符拼接字段
select concat_ws(':', name, sex, age) from emp;
定制化查询结果
复杂查询实现⼩窍门:
写sql语句的时候,千万不要急着⼀⼝⽓写完(切忌⼼浮⽓躁)
花梦助手源码下载
前期按照歩鄹⼀步步写,将前⼀步操作产⽣的结果都当成是⼀张新的表,然后基于该表再进⾏其他操作,写⼀步查询看⼀下结果然后基于当前结果再往后写
我们查询数据⼀般都需要做⼀些过滤,单纯靠 select * from 表名; 就⽆法达到要求,此时我们可以通过
常见的数据定制化关键字(⾮多表查询)
where 条件过滤数据
⼀般配合⼀堆聚合函数使⽤

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。