基本查询语句及方法
测试数据创建
如果在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 # 暂不建立外键关系
);
插入表记录数据
# 三个部门:教学,销售,运营
# 以下是教学部
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),
('程咬铁','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
可以给表起别名
可以给查询出来的虚拟表(查询结果)起别名
可以给字段起别名
可以给函数的结果取别名(max、min 等)
写法
要起别名的对象 as 别名 或者 直接 要起别名的对象 别名
不过尽量还是用as ,不用as 可能语义不明确
给函数结果起别名
... max(hire_date) as max_date ...
给表起别名
select ... from emp as t1 ....
<