分页查询
现实总是有很多数据,多数情况都需要用分页显示数据。(很多数据显示在一个页面不太现实。)
--关键字LIMIT
--索引总是从0开始的,页面大小为一页显示多少条数据
select 列名 from 表名 limit 索引,页面大小;
栗子:按照user_id降序排列,每页显示3条数据。
SQL语句:
select * from t_order order by user_id desc limit 0,3;
select * from t_order order by user_id desc limit 3,3;
select * from t_order order by user_id desc limit 6,3;
程序运行结果:
公式为:(n-1)*pagesize,pagesize n:页数。pagesize:一页多少条数据。
多表查询
基于两张表或两张以上的表进行查询。(实际应用中单表查询可能不满足需求)
--就是from后声明多张表,多表查询where逻辑语句不能少于表的个数-1,否则会出现笛卡尔积。
select 列名 from 表1,表2,...;
准备数据
-- 创建年份表
create table t_year(
the_year SMALLINT not null comment '订单创建年份',
year_name varchar(20) not null
);
-- 插入数据
insert into t_year(the_year,year_name) values
('2017','鸡年'),
('2018','狗年'),
('2019','猪年');
笛卡尔积展示:表1的所有行*表2的所有行。(9*3)
多表查询where后逻辑语句不能少于表的个数-1,否则会出现笛卡尔积。
即如果5张表一起多表查询需要4个逻辑语句
栗子:查询user_name的the_year并正确显示the_year对应的year_name。
注意:t_order表中不包含year_name,所以此时需要多表查询。
SQL语句:
select user_name, t_order.the_year, year_name from t_order, t_year
where t_order.the_year = t_year.the_year;
程序运行结果:
因为t_order表与t_year表中均有the_year列,需显示注明。
访问某表中具体列需要使用:表名.列名
自连接
基于多表查询。不同的是自己和自己连接,一张表当作两张表用。
表要起别名否则表名相同会报错。
准备数据
-- 创建Person
create table Person(
id int,
name varchar(20),
sex char,
age int,
teacher int
);
-- 插入数据
insert into Person values
('1001','张三','M','11','2001'),
('1002','五六','M','12','2002'),
('1003','王正','W','11','2001'),
('2001','刘sir','M','33',null),
('2002','吴sir','W','36',null);
栗子:正确查询同学和他的老师。
SQL语句:
select stu.name as '学生名', tea.name as '老师名'
from person as stu,person as tea
where stu.teacher = tea.id;
程序运行结果:
子查询
待编辑
标签:Java,name,--,SQL,查询,year,DQL,order,select From: https://www.cnblogs.com/Ocraft/p/17825976.html