您的位置:首页 > 数据库

数据库查询

2017-11-06 17:09 127 查看

查询语言

查询的基本语法

select 字段列表 frmo 表名 where [条件]

查询所有:SELECT * FROM product;

查询部分字段:SELECT pname,price FROM product;

定义字段的别名:SELECT pname AS ‘品牌’ FROM product

去掉重复值:SELECT DISTINCT price FROM product

查询的执行顺序

编写顺序:select…from…

执行顺序是: 先frmo后select

条件查询—基本

select…from…where…

比较运算符:特别注意的是不等于的写法是“!=”或者“<>”

逻辑运算符

and

or

not

范围查询:between…and… 在什么之间

多个值的等性条件:

in([值…])相当于多个or

模糊查询:like

%: 通配符 表示多个字符

_:通配符 表示一个字符

NULL 状态 查询

空:is null;

非空:is not null;

注意的是:空串(”“)和NULL是不一样的。以后空串使用NULL状态表示。

条件查询—排序

select …from …order by…

order by..字段.{[asc]|[desc]}

asc:升序(从小到大)

desc:降序

多列排序:先是对第一个排序列排序,如果第一个排序列的值不同,就不按第二排序列排序,只有当第一排序列相同了才使用第二排序列进行排序。

聚合函数

select 聚合函数 from…where…

count(字段):统计行数

sum(字段):求和,数值类型

max(字段):求最大值;数值类型、字符串、日期

min(字段):求最小值

avg(字段):求平均值

聚合函数的结果是“计算出来的结果”,与任何记录没有关系,可能跟某一个记录的这列的值相同,但不是这个值。

聚合函数查询结果中,只包含聚合函数的结果列,查询的结果和其他的字段(属性列)没有关系。

分组查询

查询每种的….

select …[聚合函数]…from …group by[字段1],[字段2]…

分组的意思是将同一数据内容的【字段】数据进行分组。

分组查询的查询结果中,最多只能出现分组字段、聚合字段其他字段没有意义。

执行过程:先分组在聚合。

对聚合后的结果进行筛选 Having

select …from…where…group by…order by…

执行顺序

from

where

group by

聚合函数

select

order by

格式:

select …from…where…group by…having…order by…

执行顺序

from

where

group by

聚合函数

having 对聚合后的结果进行筛选

select

order by

多表查询

什么是主表:存放信息被其他表所引用;主键字段是被引用的字段

什么是从表:引用其他表的表;外键:引用主键字段

SQL语句建立外键的约束

alter table 从表 add [constraint] [外键名称] foreign key (从表外键字段名) references 主表 (主表的主键);

ALTER TABLE student ADD CONSTRAINT fk_student FOREIGN KEY (kmid) REFERENCES km (id);


从表往主表托。引用表是主表,

- 一对一

- 一对多

- 多对多

内连接查询

隐式内连接:select * from table1 t1,table2 t2 where t1.id=t2.id(两个表的等值条件);

显示内连接:select * frmo t1 INNER JION t2 ON t1.id=t2.id(两个表的等值条件)

外连接查询

左外连接:select * from t1 left join t2 on t1.id=t2.id;

右外连接:select * from t1 right join t2 on t1.id=t2.id;

三表查询

内连接查询

隐式内连接:select * from t1,t2,t3 where t1.id=t2.id(表1好中间表的等值关系) and t2.id=t3.id(中间表和表3的等值关系) and 其他查询条件

显示内连接:select * from 表一 INNER JOIN 中间表 ON 表一和中间表的等值关系 INNER JOIN 表2 ON 中间表和表2 的等值关系 and 其他查询条件

外连接查询

左外连接:select * from 表一 LEFT JOIN 中间表 ON 表一和中间表的等值关系 LEFT JOIN 表2 ON 中间表和表2 的等值关系 and 其他查询条件

右外连接:select * from 表一 RIGHT JOIN 中间表 ON 表一和中间表的等值关系 RIGHT JOIN 表2 ON 中间表和表2 的等值关系 and 其他查询条件

子查询

select * from t1 where fielt(字段)>(select fielt(字段) from 表 where 字段2 =‘条件’);

分页查询

select * from t_grade where gradeName like ‘%计%’ limit 0,10

select * from t_grade limit 0,10

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息