1.查询表的命令是什么?
select 字段名 as 别名 from 表名
where 条件
group by 分组条件
having 分组后再过滤的条件
order by 排序字段列表(默认升序(asc),降序(desc)
limit 起始索引,查询记录数(起始索引=(页码-1)* 每页展示记录数)
2.where条件查询常用方式都有什么?
BETWEEN A AND B 在A-B之间
IN(set) 集合作为条件
列名 LIKE ‘张pattern’ 模糊查询,%代表零个或多个任意字符,_ 代表一个字符
IS NULL 空值
IS NOT NULL; 非空
and(与)
or(或)
not(非)
列名=value
> < >= <= = !=
< 大于
> 小于
3.where和having区别是什么?
where在分组查询之前执行
having在分组查询之后执行
4.常见的分页参数都有什么?
a.int curPage = 2; -- 当前页数
b.int pageSize = 5; -- 每页显示数量
c.int startRow = (curPage - 1) * pageSize; -- 当前页开始的位置(行数)计算
d.int totalSize = select count(*) from products; -- 记录总数量
e.int totalPage = Math.ceil(totalSize * 1.0 / pageSize); -- 总页数
总页数 = (总记录数/每页显示条数)向上取整
5.多表查询的两种内连接是什么样的?
内连接用于获取两张表中满足条件的交集数据,分为
隐式内连接(select 字段列表 from 表1,表2 where 条件)
显式内连接(select 字段列表 from 表1 inner join 表2 on 条件)
6.多表查询的两种外连接是什么样的?
保留一张表的所有数据,同时获取另一张表的匹配数据
左连接相当于左表加交集(select 字段列表 from 表1 left outer join 表2 on 条件)
右连接相当于右表加交集(select 字段列表 from 表1 right outer join 表2 on 条件)
或者
左连接相当于左表加交集(select 字段列表 from 表1 left join 表2 on 条件)
右连接相当于右表加交集(select 字段列表 from 表1 right join 表2 on 条件)
7.多表查询的自连接是什么样的?
就是把一张表连接查询多次
select 字段列表 from 表1 别名 join 表2 别名 on 条件
8.什么是union联合查询
于union查询,就是把多次查询的结果合并起来,形成一个新的查询结果集。
SELECT 字段列表 FROM 表A ... UNION [ ALL ] SELECT 字段列表 FROM 表B ....;
对于联合查询的多张表的列数必须保持一致,字段类型也需要保持一致。
union all 会将全部的数据直接合并在一起,union 会对合并之后的数据去重。
9.什么是子查询
嵌套在另一个查询语句内部的查询
子查询可以返回单个值,单个行,单个列或包含一个或多个行或一个或多个列的表。
SELECT * FROM t1 WHERE column1 = ( SELECT column1 FROM t2 );#第一种嵌套查询
SELECT * FROM ( SELECT * FROM t2 ),t1 WHERE column1 = n ; #第二种作为伪表使用
子查询外部的语句可以是INSERT / UPDATE / DELETE / SELECT 的任何一个。
10.查询如何去除重复值
关键字: distinct(列名)
SELECT DISTINCT(price) FROM product;
11.为表添加数据的命令是什么?
-- 指定字段添加数据
insert into 表名(字段名1, 字段名2) values (值1, 值2);
-- 全部字段添加数据
insert into 表名 values (值1, 值2, ...);
-- 批量添加数据(指定字段)
insert into 表名 (字段名1, 字段名2) values (值1, 值2), (值1, 值2);
-- 批量添加数据(全部字段)
insert into 表名 values (值1, 值2, ...), (值1, 值2, ...);
INSERT INTO users VALUES (NULL, 'john_doe', 'john@example.com', '1990-05-15', TRUE);
INSERT INTO users (username, email, birthdate, is_active)
VALUES ('alice_smith', 'alice@example.com', '1985-08-20', TRUE);
INSERT INTO users (username, email, birthdate, is_active) VALUES
('bob_wilson', 'bob@example.com', '1992-03-10', TRUE),
('carol_jones', 'carol@example.com', '1988-11-25', FALSE),
('david_brown', 'david@example.com', '1995-07-30', TRUE);
12.为表修改数据的命令是什么?
update 表名 set 字段1=value ... where 条件
UPDATE users SET username = 'new_username' WHERE id = 1;
UPDATE users SET username = 'john_updated', email = 'john_new@example.com'
, is_active = FALSE WHERE id = 1;
13.为表删除数据的命令是什么?
delete from 表名 where 条件
-- 删除非活跃用户
DELETE FROM users WHERE is_active = FALSE;
-- 删除特定用户名的用户
DELETE FROM users WHERE username = 'john_doe';
-- 删除邮箱为特定域名的用户
DELETE FROM users WHERE email LIKE '%@spam.com';