当前位置: 首页 > news >正文

牡丹江住房和城乡建设厅网站百度推广代理商赚钱吗

牡丹江住房和城乡建设厅网站,百度推广代理商赚钱吗,3d网页游戏排行榜前十名,广告传媒公司简介内容目录通用语法及分类DQL(数据查询语言)基础查询条件查询聚合查询(聚合函数)分组查询排序查询分页查询内连接查询外连接查询自连接查询联合查询子查询列子查询行子查询表子查询总结通用语法及分类 ● DDL: 数据定义语言&#xff0c…

目录

  • 通用语法及分类
  • DQL(数据查询语言)
    • 基础查询
    • 条件查询
    • 聚合查询(聚合函数)
    • 分组查询
    • 排序查询
    • 分页查询
    • 内连接查询
    • 外连接查询
    • 自连接查询
    • 联合查询
    • 子查询
      • 列子查询
      • 行子查询
      • 表子查询
    • 总结

通用语法及分类

● DDL: 数据定义语言,用来定义数据库对象(数据库、表、字段)
● DML: 数据操作语言,用来对数据库表中的数据进行增删改
● DQL: 数据查询语言,用来查询数据库中表的记录
● DCL: 数据控制语言,用来创建数据库用户、控制数据库的控制权限

DQL(数据查询语言)

语法:

SELECT字段列表
FROM表名字段
WHERE条件列表
GROUP BY分组字段列表
HAVING分组后的条件列表
ORDER BY排序字段列表
LIMIT分页参数

基础查询

查询多个字段
SELECT 字段1, 字段2, 字段3, ... FROM 表名;
SELECT * FROM 表名;

设置别名
SELECT 字段1 [ AS 别名1 ], 字段2 [ AS 别名2 ], 字段3 [ AS 别名3 ], ... FROM 表名;
SELECT 字段1 [ 别名1 ], 字段2 [ 别名2 ], 字段3 [ 别名3 ], ... FROM 表名;

去除重复记录
SELECT DISTINCT 字段列表 FROM 表名;

转义
SELECT * FROM 表名 WHERE name LIKE '/_张三' ESCAPE '/'
/ 之后的_不作为通配符

条件查询

语法:
SELECT 字段列表 FROM 表名 WHERE 条件列表;

条件:
比较运算符 功能

>						大于
>=						大于等于
<						小于
<=						小于等于
=						等于
<>!=				不等于
BETWEEN ... AND ...		在某个范围内(含最小、最大值)
IN(...)in之后的列表中的值,多选一
LIKE 					占位符	模糊匹配(_匹配单个字符,%匹配任意个字符)
IS NULLNULL
逻辑运算符				功能
AND&&				并且(多个条件同时成立)
OR||				或者(多个条件任意一个成立)
NOT!				非,不是

例子:

-- 年龄等于30
select * from employee where age = 30;-- 年龄小于30
select * from employee where age < 30;-- 小于等于
select * from employee where age <= 30;-- 没有身份证
select * from employee where idcard is null or idcard = '';-- 有身份证
select * from employee where idcard;
select * from employee where idcard is not null;-- 不等于
select * from employee where age != 30;-- 年龄在20到30之间
select * from employee where age between 20 and 30;
select * from employee where age >= 20 and age <= 30;-- 下面语句不报错,但查不到任何信息
select * from employee where age between 30 and 20;-- 性别为女且年龄小于30
select * from employee where age < 30 and gender = '女';-- 年龄等于25或30或35
select * from employee where age = 25 or age = 30 or age = 35;
select * from employee where age in (25, 30, 35);-- 姓名为两个字
select * from employee where name like '__';-- 身份证最后为X
select * from employee where idcard like '%X';

聚合查询(聚合函数)

常见聚合函数:

  • 函数 功能
  • count 统计数量
  • max 最大值
  • min 最小值
  • avg 平均值
  • sum 求和

语法:
SELECT 聚合函数(字段列表) FROM 表名;
例:
SELECT count(id) from employee where workaddress = "广东省";

分组查询

语法:
SELECT 字段列表 FROM 表名 [ WHERE 条件 ] GROUP BY 分组字段名 [ HAVING 分组后的过滤条件 ];

where 和 having 的区别:

● 执行时机不同:where是分组之前进行过滤,不满足where条件不参与分组;having是分组后对结果进行过滤。
● 判断条件不同:where不能对聚合函数进行判断,而having可以。

例子:

  • 根据性别分组,统计男性和女性数量(只显示分组数量,不显示哪个是男哪个是女)
    select count(*) from employee group by gender;

  • 根据性别分组,统计男性和女性数量
    select gender, count(*) from employee group by gender;

  • 根据性别分组,统计男性和女性的平均年龄
    select gender, avg(age) from employee group by gender;

  • 年龄小于45,并根据工作地址分组
    select workaddress, count(*) from employee where age < 45 group by workaddress;

  • 年龄小于45,并根据工作地址分组,获取员工数量大于等于3的工作地址
    select workaddress, count(*) address_count from employee where age < 45 group by workaddress having address_count >= 3;

注意事项

● 执行顺序:where > 聚合函数 > having
● 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义

排序查询

语法:
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1, 字段2 排序方式2;

排序方式:

● ASC: 升序(默认)
● DESC: 降序

例子:

  • 根据年龄升序排序
    SELECT * FROM employee ORDER BY age ASC;
    SELECT * FROM employee ORDER BY age;

  • 两字段排序,根据年龄升序排序,入职时间降序排序
    SELECT * FROM employee ORDER BY age ASC, entrydate DESC;

注意事项

如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序

分页查询

语法:
SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数;

例子:

  • 查询第一页数据,展示10条
    SELECT * FROM employee LIMIT 0, 10;

  • 查询第二页
    SELECT * FROM employee LIMIT 10, 10;

注意事项

● 起始索引从0开始,起始索引 = (查询页码 - 1) * 每页显示记录数
● 分页查询是数据库的方言,不同数据库有不同实现,MySQL是LIMIT
● 如果查询的是第一页数据,起始索引可以省略,直接简写 LIMIT 10

合并查询(笛卡尔积,会展示所有组合结果):
select * from employee, dept;

笛卡尔积:两个集合A集合和B集合的所有组合情况(在多表查询时,需要消除无效的笛卡尔积)

消除无效笛卡尔积:
select * from employee, dept where employee.dept = dept.id;

内连接查询

内连接查询的是两张表交集的部分

隐式内连接:
SELECT 字段列表 FROM 表1, 表2 WHERE 条件 ...;

显式内连接:
SELECT 字段列表 FROM 表1 [ INNER ] JOIN 表2 ON 连接条件 ...;

显式性能比隐式高

例子:

-- 查询员工姓名,及关联的部门的名称
-- 隐式
select e.name, d.name from employee as e, dept as d where e.dept = d.id;
-- 显式
select e.name, d.name from employee as e inner join dept as d on e.dept = d.id;

外连接查询

左外连接:

-- 查询左表所有数据,以及两张表交集部分数据
SELECT 字段列表 FROM1 LEFT [ OUTER ] JOIN2 ON 条件 ...;
-- 相当于查询表1的所有数据,包含表1和表2交集部分数据

右外连接:

-- 查询右表所有数据,以及两张表交集部分数据
SELECT 字段列表 FROM1 RIGHT [ OUTER ] JOIN2 ON 条件 ...;

例子:

-- 左
select e.*, d.name from employee as e left outer join dept as d on e.dept = d.id;
select d.name, e.* from dept d left outer join emp e on e.dept = d.id;  -- 这条语句与下面的语句效果一样
-- 右
select d.name, e.* from employee as e right outer join dept as d on e.dept = d.id;

左连接可以查询到没有dept的employee,右连接可以查询到没有employee的dept

自连接查询

当前表与自身的连接查询,自连接必须使用表别名

语法:
SELECT 字段列表 FROM 表A 别名A JOIN 表A 别名B ON 条件 ...;

自连接查询,可以是内连接查询,也可以是外连接查询

例子:

-- 查询员工及其所属领导的名字
select a.name, b.name from employee a, employee b where a.manager = b.id;
-- 没有领导的也查询出来
select a.name, b.name from employee a left join employee b on a.manager = b.id;

联合查询

把多次查询的结果合并,形成一个新的查询集 (union, union all)

语法:

SELECT 字段列表 FROM 表A ...
UNION [ALL]
SELECT 字段列表 FROM 表B ...

注意事项

● UNION ALL 会有重复结果,UNION 不会
● 联合查询比使用or效率高,不会使索引失效

子查询

SQL语句中嵌套SELECT语句,称谓嵌套查询,又称子查询。

SELECT * FROM t1 WHERE column1 = ( SELECT column1 FROM t2);

子查询外部的语句可以是 INSERT / UPDATE / DELETE / SELECT 的任何一个

根据子查询结果可以分为:

  • 标量子查询(子查询结果为单个值)
  • 列子查询(子查询结果为一列)
  • 行子查询(子查询结果为一行)
  • 表子查询(子查询结果为多行多列)

根据子查询位置可分为:

  • WHERE 之后
  • FROM 之后
  • SELECT 之后

标量子查询

子查询返回的结果是单个值(数字、字符串、日期等)。
常用操作符:- < > > >= < <=

例子:

-- 查询销售部所有员工
select id from dept where name = '销售部';
-- 根据销售部部门ID,查询员工信息
select * from employee where dept = 4;
-- 合并(子查询)
select * from employee where dept = (select id from dept where name = '销售部');-- 查询xxx入职之后的员工信息
select * from employee where entrydate > (select entrydate from employee where name = 'xxx');

列子查询

返回的结果是一列(可以是多行)。

常用操作符:

操作符	描述
IN	在指定的集合范围内,多选一
NOT IN	不在指定的集合范围内
ANY	子查询返回列表中,有任意一个满足即可
SOMEANY等同,使用SOME的地方都可以使用ANY
ALL	子查询返回列表的所有值都必须满足

例子:

-- 查询销售部和市场部的所有员工信息
select * from employee where dept in (select id from dept where name = '销售部' or name = '市场部');
-- 查询比财务部所有人工资都高的员工信息
select * from employee where salary > all(select salary from employee where dept = (select id from dept where name = '财务部'));
-- 查询比研发部任意一人工资高的员工信息
select * from employee where salary > any (select salary from employee where dept = (select id from dept where name = '研发部'));

行子查询

返回的结果是一行(可以是多列)。
常用操作符:=, <, >, IN, NOT IN

例子:

-- 查询与xxx的薪资及直属领导相同的员工信息
select * from employee where (salary, manager) = (12500, 1);
select * from employee where (salary, manager) = (select salary, manager from employee where name = 'xxx');

表子查询

返回的结果是多行多列
常用操作符:IN

例子:

-- 查询与xxx1,xxx2的职位和薪资相同的员工
select * from employee where (job, salary) in (select job, salary from employee where name = 'xxx1' or name = 'xxx2');-- 查询入职日期是2006-01-01之后的员工,及其部门信息
select e.*, d.* from (select * from employee where entrydate > '2006-01-01') as e left join dept as d on e.dept = d.id;

总结

DQL执行顺序

FROM -> WHERE -> GROUP BY -> SELECT -> ORDER BY -> LIMIT

http://www.zhongyajixie.com/news/46766.html

相关文章:

  • wordpress安卓源码分析搜索引擎优化通常要注意的问题有
  • 做街舞网站的素材网址查询工具
  • wordpress打赏后看全部资源网站优化排名优化
  • 旅游建设网站手机百度账号申请注册
  • 互联网网站建设问卷调查站长seo
  • 在线捐款网站开发百度推广代理公司哪家好
  • 帮人做推广的网站网站怎么收录到百度
  • 营销型网站案例易网拓佛山网站快速排名提升
  • 深圳福田车公庙网站建设营销咨询
  • 做电影下载网站还赚钱吗东莞今天新增加的情况
  • 毕设网站可以用axure做吗湖南seo排名
  • 上海网站建设基础网络营销实施方案
  • 班级博客网站模板seo在线优化
  • 做网站现在用什么语言app拉新推广平台渠道
  • 在国外的网站做推广方案百度网盘客户端下载
  • 如何把自己做的网站发布到网上网站设计制作的服务怎么样
  • 微信网站建设咨询宝塔建站系统
  • 佛山企业网站建设泉州网站建设
  • 西安软件培训seo是指搜索引擎优化
  • 绯闻seo汕头自动seo
  • 东坑镇仿做网站东莞做网站seo
  • 天津网站建设排名怎么去推广自己的平台
  • 石家庄企业网站网页设计深圳全网推广托管
  • 做传奇网站云服务器地域改选哪里友情链接检索
  • 网站建设的目标和需求百度如何搜索关键词
  • 网站开发个性化安徽网站推广优化
  • 安徽合肥网站制作公司北京网站制作设计
  • 网站代运营服务公司二十四个关键词
  • 南宁网站建设官网网站都有哪些
  • 专业北京网站建设室内设计培训哪个机构比较好