SQL查询语句分类,分类查询

作者:计算机知识

SQL查询语句有多种,下边计算下。首先先建3张表用于前面包车型大巴实验

SQL查询语句分类,SQL语句分类

SQL查询语句有多样,下边总括下。首先先建三张表用于后边的实行

-- 学生表,记录学生信息
    CREATE TABLE student(
    sno VARCHAR(10),
    sname VARCHAR(10),
    ssex ENUM('男','女'),
    sage INT,
    sdept VARCHAR(10),
    PRIMARY KEY(sno)
);

 ----------- ------- ------ ------ ------- 
| sno       | sname | ssex | sage | sdept |
 ----------- ------- ------ ------ ------- 
| 201215121 | 李勇  | 男   |   20 | CS    |
| 201215122 | 刘晨  | 女   |   19 | CS    |
| 201215123 | 王敏  | 女   |   18 | MA    |
| 201215125 | 张立  | 男   |   19 | IS    |
 ----------- ------- ------ ------ ------- 

-- 课程表,记录课程信息,cpno是指当前记录的先行课程的cno
CREATE TABLE course(
    cno INT AUTO_INCREMENT,
    cname VARCHAR(10),
    cpno INT,
    ccredit INT NOT NULL,
    PRIMARY KEY(cno),
    FOREIGN KEY(cpno) REFERENCES course(cno)
);

 ----------- ------- ------ ------ ------- 
| sno       | sname | ssex | sage | sdept |
 ----------- ------- ------ ------ ------- 
| 201215121 | 李勇  | 男   |   20 | CS    |
| 201215122 | 刘晨  | 女   |   19 | CS    |
| 201215123 | 王敏  | 女   |   18 | MA    |
| 201215125 | 张立  | 男   |   19 | IS    |
 ----------- ------- ------ ------ ------- 

-- 选课记录表,记录选课信息
CREATE TABLE sc (
    sno VARCHAR(10),
    cno INT,
    grade INT
);

 ----------- ------ ------- 
| sno       | cno  | grade |
 ----------- ------ ------- 
| 201215121 |    1 |    92 |
| 201215121 |    2 |    85 |
| 201215121 |    3 |    88 |
| 201215122 |    1 |    90 |
| 201215122 |    2 |    80 |
 ----------- ------ ------- 

1.GROUP BY 语句

GROUP BY 语句用于结合合计函数,遵照1个或四个列对结果集进行分组。

-- 学生表,记录学生信息
    CREATE TABLE student(
    sno VARCHAR(10),
    sname VARCHAR(10),
    ssex ENUM('男','女'),
    sage INT,
    sdept VARCHAR(10),
    PRIMARY KEY(sno)
);

 ----------- ------- ------ ------ ------- 
| sno       | sname | ssex | sage | sdept |
 ----------- ------- ------ ------ ------- 
| 201215121 | 李勇  | 男   |   20 | CS    |
| 201215122 | 刘晨  | 女   |   19 | CS    |
| 201215123 | 王敏  | 女   |   18 | MA    |
| 201215125 | 张立  | 男   |   19 | IS    |
 ----------- ------- ------ ------ ------- 

-- 课程表,记录课程信息,cpno是指当前记录的先行课程的cno
CREATE TABLE course(
    cno INT AUTO_INCREMENT,
    cname VARCHAR(10),
    cpno INT,
    ccredit INT NOT NULL,
    PRIMARY KEY(cno),
    FOREIGN KEY(cpno) REFERENCES course(cno)
);

 ----------- ------- ------ ------ ------- 
| sno       | sname | ssex | sage | sdept |
 ----------- ------- ------ ------ ------- 
| 201215121 | 李勇  | 男   |   20 | CS    |
| 201215122 | 刘晨  | 女   |   19 | CS    |
| 201215123 | 王敏  | 女   |   18 | MA    |
| 201215125 | 张立  | 男   |   19 | IS    |
 ----------- ------- ------ ------ ------- 

-- 选课记录表,记录选课信息
CREATE TABLE sc (
    sno VARCHAR(10),
    cno INT,
    grade INT
);

 ----------- ------ ------- 
| sno       | cno  | grade |
 ----------- ------ ------- 
| 201215121 |    1 |    92 |
| 201215121 |    2 |    85 |
| 201215121 |    3 |    88 |
| 201215122 |    1 |    90 |
| 201215122 |    2 |    80 |
 ----------- ------ ------- 

一.单表查询

亚洲必赢娱乐场,仅提到一张表的查询语句称为单表查询语句,举个栗子。

SELECT SQL查询语句分类,分类查询。 FROM student;*

SELECT FROM student WHERE sage>=20;

这么些讲话仅涉及了一张表,所以是单表查询语句。

SQL GROUP BY 语法

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name

SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer

1.单表查询

仅提到一张表的查询语句称为单表查询语句,举个栗子。

SELECT FROM student;*

SELECT FROM student WHERE sage>=20;

那一个言辞仅涉及了一张表,所以是单表查询语句。

二.多表查询

与单标查询相应,涉及七个表的查询为多表查询,在那之中又分为连接查询、嵌套查询、 派生表查询、集结查询。

2.HAVING 子句

在 SQL 中追加 HAVING 子句原因是,WHERE 关键字不能与会谈函数一同使用。

二.多表查询

与单标查询相应,涉及三个表的询问为多表查询,个中又分为连接查询、嵌套查询、 派生表查询、集合查询。

二.一老是查询

连日来查询是数据库查询中最常用的1种查询语句,指通过接连字段和指定一连条件连日八个表从而进行查询,在那之中又分为小类:等值连接、非等值连接 、自然连接、外接连、内一而再、本身连接。

SQL HAVING 语法

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value

SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer
HAVING SUM(OrderPrice)<2000

2.壹老是查询

连接查询是数据库查询中最常用的壹种查询语句,是指通过连日字段总是条件老是八个表从而举办查询,连接查询又分为小类:等值连接、非等值连接 、自然连接、外接连、内连接、本身连接。

等值连接与非等值连接

当连接条件是万分号(=)时的连续称之为等值连接,相反,当连接条件不是万分号正是非等值连接。

-- 查询每个学生的选修课情况,连接条件是等于,连接字段是sno
SELECT * FROM student,sc WHERE student.sno = sc.sno;

 ----------- ------- ------ ------ ------- ----------- ------ ------- 
| sno       | sname | ssex | sage | sdept | sno       | cno  | grade |
 ----------- ------- ------ ------ ------- ----------- ------ ------- 
| 201215121 | 李勇  | 男   |   20 | CS    | 201215121 |    1 |    92 |
| 201215121 | 李勇  | 男   |   20 | CS    | 201215121 |    2 |    85 |
| 201215121 | 李勇  | 男   |   20 | CS    | 201215121 |    3 |    88 |
| 201215122 | 刘晨  | 女   |   19 | CS    | 201215122 |    1 |    90 |
| 201215122 | 刘晨  | 女   |   19 | CS    | 201215122 |    2 |    80 |
 ----------- ------- ------ ------ ------- ----------- ------ ------- 

该连接操作的长河是,首先拿出student表中的第3条记下,然后遵照连年条件和连接字段,与 sc表中的全部记录实行相配,合适接连接起来造成结果表中的3个元组。然后再拿student表的 第一条记下与sc表进行相称,第叁条记录...,如此反复直到取完。那壹相配算法称为嵌套循环连接算法

3.不同的 SQL JOIN

left join == left outer join,都是取并集
一.我们一般涉及查询的时候,习惯使用left join,其实这种艺术是不可取的,
因为大家其实取交集就能够,应该利用inner join
专注,无需接纳left或者right inner join,因为是并集,左右两边未有权重。都是同级。
2.万一四个也许多个表都有谈得来的标准,我们应该将规范写入查询条件中,越标准越好

在我们继续讲解实例之前,我们先列出您可以使用的不同的 SQL JOIN 类型:
INNER JOIN:如果表中有至少一个匹配,则返回行
LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行
FULL JOIN:只要其中一个表中存在匹配,则返回行

本文由bwin必赢发布,转载请注明来源

关键词: 数据库 bwin线上娱乐