mysql查询 (select)

基本查询

# 基本查询        配符查询以后去了公司不能用。
select * from person 
                        
#  可以用as给字段起别名,as也可以省略。
SELECT id ,name '名字',age as '年龄',sex from person


条件查询

--      条件查询

-- 查询id是1到10之间的数据
SELECT id,name,age ,sex from person where id BETWEEN 1 and 10


-- 查询id大于5和性别是男的数据
SELECT id,name,age ,sex from person where  id>5 and sex='男'   


-- 查询id大于5或者性别是男的数据
SELECT id,name,age ,sex from person where  id>5 or sex='男'    


# %匹配0或多个字符,一般不用左模糊(%放在左边,导致索引失效,降低查询效率)
-- 查询名字最后一个子是韬的人
SELECT id,name,age ,sex from person where name like '%韬'


-- 查询名字是两个字的且最后一个字是璐的人
SELECT id,name,age ,sex from person where name like '_璐'


-- 查询名字中间为子的人
SELECT id,name,age ,sex  from person where name like '%子%'


分页查询


-- 分页查询

# 语法 limit 起始索引,个数
# 分页查询第m页,每页展示n 条数据 limit (m-1)*n, n 
SELECT id,name,age ,sex from person limit 0,5;
SELECT id,name,age ,sex from person limit 5,5;
SELECT id,name,age ,sex from person limit 10,5;
SELECT id,name,age ,sex from person limit 15,5;
SELECT id,name,age ,sex from person limit 20,5;
SELECT id,name,age ,sex from person limit 25,5;

-- 排序

# 排序 order by 字段名 (ASC 升序,DESC降序)  默认为升序
SELECT id,name,age ,sex from person ORDER BY age ASC;


SELECT id,name,age ,sex from person ORDER BY age DESC;


聚合函数

--  聚合函数

--  count()   sum()  avg()   max()  min()
 select count(0) from person  -- 统计


select sum(age) from person  -- 求和


select avg(age) from person  -- 求平均值


select min(age) from person  -- 求最小值


select max(age) from person  -- 求最大值


--      CAST(expr AS type) 四舍五入的意思
SELECT CAST(avg(age) as decimal(10,0)) as avg from person


分组查询
     


--      分组查询

 # 分组查询  group by 字段 
SELECT  sex,count(0),avg(age) from person GROUP BY sex;


# having条件查询  where分组前,having分组后的条件
SELECT  sex,count(0),avg(age) from person where age>8 GROUP BY sex  having avg(age)>20;


子查询


-- 子查询

# 把查询到的结果当作另一个查询的条件
SELECT id, name, age, sex
FROM person 
WHERE birth IN (SELECT dept_id FROM dept WHERE dept_name='生产部');
    


内连接

-- 内连接

# 笛卡尔积 查询出来的结果没有意义
select * from person,dept


    # 显示内连接 inner可以省略
select person.id,`name`,age,sex,dept_name '部门名称' from person INNER JOIN dept on birth=dept_id


# 隐式内连接
select person.id,`name`,age,sex,dept_name '部门名称' from person,dept where birth=dept_id


 外连接

# 左外连接  left [outer] join  查询的是左边表的所有部分和右边表的交集
SELECT
    id,
    name,
    age,
    sex,
    dept_name
FROM
    person
LEFT OUTER JOIN
    dept
ON
birth=dept_id


    
# 右外连接  right [outer] join  查询的是右边表的所有部分和左边表的交集
SELECT
    id,
    name,
    age,
    sex,
    dept_name
FROM
    person
right     OUTER JOIN
    dept
ON
birth=dept_id

-- 左外连接和右外连接的区别:
-- 左外是以左边的表为主表,查询的结果只关注左表,不在乎右边
    
    

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值