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

商业网站建设的目的杭州百度快照优化排名推广

商业网站建设的目的,杭州百度快照优化排名推广,jquery动画特效网站,有什么网站可以帮人做模具吗目录通用语法及分类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.hkea.cn/news/507998/

相关文章:

  • 做网站 博客百度推广助手客户端
  • 温州市手机网站制作哪家好爱站网长尾词挖掘
  • 党委网站建设要求凡科建站靠谱吗
  • wordpress 安卓客户端福建seo优化
  • 襄阳seo技术长沙seo网站优化
  • 做一的同志小说网站做seo要投入什么
  • 网站的文件结构百度搜索排名怎么收费
  • 全景网站app网络营销工具分析
  • 南京建设工程交易中心网站seo是什么的简称
  • 利用vps做网站关键字排名查询
  • 常熟网站制作找哪家好品牌型网站制作价格
  • 怎么做自己网站推广网络广告
  • 化州网站建设促销方法100种
  • 长沙专业网站设计平台新闻最新消息10条
  • 惠州网站建设制作宣传推广方案
  • 宁波网站推广外包服务长岭网站优化公司
  • 哈尔滨市哪里做淘宝网站seo课程心得体会
  • 做网站建设公司企业一个企业该如何进行网络营销
  • 移动端h5网站开发服务企业seo推广
  • 管理公司网站建设引擎搜索优化
  • 上市公司专利查询网站百度广告投放价格
  • html5电商网页制作网站怎么seo关键词排名优化推广
  • 大同网站建设黄冈网站推广优化找哪家
  • 昌邑网站建设站长之家网站排名
  • 建设企业网站的需求分析免费域名
  • 重庆欧勒精细有限公司网站策划书百度竞价推广开户
  • 怎么做一键添加信任网站ios aso优化工具
  • ps做网站的分辨率多少钱苹果cms永久免费建站程序
  • 网站推广积分常用于网站推广的营销手段是
  • wordpress时间云储存沈阳网站制作优化推广