你的位置:首页 > 软件开发 > 数据库 > 第五章 单表查询,聚合函数查询,连接查询,子查询,合并查询结果,为表和字段取别名

第五章 单表查询,聚合函数查询,连接查询,子查询,合并查询结果,为表和字段取别名

发布时间:2015-10-31 16:00:19
示例数据:CREATE TABLE `t_student` (`id` DOUBLE ,`stuName` VARCHAR (60),`age` DOUBLE ,`sex` VARCHAR (30),`gradeName` VARCHAR (60)); 插入数据:INSER ...

示例数据:

CREATE TABLE `t_student` (`id` DOUBLE ,`stuName` VARCHAR (60),`age` DOUBLE ,`sex` VARCHAR (30),`gradeName` VARCHAR (60)); 
1,SELECT 字段 1,字段 2,字段 3...FROM 表名;

SELECT id,stuName,age,sex,gradeName FROM t_student ;

SELECT stuName,gradeName FROM t_student;
1,SELECT 字段 1,字段 2,字段 3...FROM 表名 WHERE 条件表达式;

SELECT * FROM t_student WHERE id=1;
5.4,带 IN 关键字查询1,SELECT 字段 1,字段 2,字段 3...FROM 表名 WHERE 字段 [NOT] IN (元素 1,元素 2,元素 3);

SELECT * FROM t_student WHERE age IN (21,23);
1,SELECT 字段 1,字段 2,字段 3...FROM 表名 WHERE 字段 [NOT] BETWEEN 取值 1 AND 取值 2;

SELECT * FROM t_student WHERE age BETWEEN 21 AND 24;
5.6,带 LIKE 的模糊查询1,SELECT 字段 1,字段 2,字段 3...FROM 表名 WHERE 字段 [NOT] LIKE ‘字符串’;“%”代表任意字符;5.7,空值查询1,SELECT 字段 1,字段 2,字段 3...FROM 表名 WHERE 字段 IS [NOT] NULL;

SELECT * FROM t_student WHERE sex IS NULL;SELECT * FROM t_student WHERE sex IS NOT NULL;
5.8,带 AND 的多条件查询1,SELECT 字段 1,字段 2...FROM 表名 WHERE 条件表达式 1 AND 条件表达式 2 [...AND 条件表达式 n]

SELECT * FROM t_student WHERE gradeName='一年级' AND age=23
1,SELECT 字段 1,字段 2...FROM 表名 WHERE 条件表达式 1 OR 条件表达式 2 [...OR 条件表达式 n]

SELECT * FROM t_student WHERE gradeName='一年级' OR age=23
5.10,DISTINCT 去重复查询SELECT 字段 1,字段 2...FROM 表名 ORDER BY 属性名 [ASC|DESC]

SELECT DISTINCT gradeName FROM t_student;
5.12,GROUP BY 分组查询GROUP BY 属性名 [HAVING 条件表达式][WITH ROLLUP]1,单独使用(毫无意义);5.13,LIMIT 分页查询SELECT 字段 1,字段 2...FROM 表名 LIMIT 初始位置,记录数;

SELECT * FROM t_student LIMIT 0,5;SELECT * FROM t_student LIMIT 5,5;SELECT * FROM t_student LIMIT 10,5;

创建数据表:

CREATE TABLE `t_grade` (  `id` INT ,  `stuName` VARCHAR (60),  `course` VARCHAR (60),  `score` INT ); 
5.1,COUNT()函数

 

1,COUNT()函数用来统计记录的条数;

SELECT COUNT(*) FROM t_grade;

SELECT stuName,COUNT(*) FROM t_grade GROUP BY stuName;
5.2,SUN()函数

1,SUM()函数是求和函数;

SELECT stuName,SUM(score) FROM t_grade WHERE stuName="张三";

SELECT stuName,SUM(score) FROM t_grade GROUP BY stuName;
5.3,AVG()函数

 

1,AVG()函数是求平均值的函数;

SELECT stuName,AVG(score) FROM t_grade WHERE stuName="张三";
5.4,MAX()函数

1,MAX()函数是求最大值的函数;

SELECT stuName,course,MAX(score) FROM t_grade WHERE stuName="张三";
5.5,MIN()函数

 

1,MIN()函数是求最小值的函数;

SELECT stuName,course,MIN(score) FROM t_grade WHERE stuName="张三";

SELECT stuName,MIN(score) FROM t_grade GROUP BY stuName;

第三节:连接查询

示例数据:

 

/*SQLyog 企业版 - MySQL GUI v8.14 MySQL - 5.1.49-community : Database - db_book**********************************************************************//*!40101 SET NAMES utf8 */;/*!40101 SET SQL_MODE=''*/;/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;CREATE DATABASE /*!32312 IF NOT EXISTS*/`db_book` /*!40100 DEFAULT CHARACTER SET utf8 */;USE `db_book`;/*Table structure for table `t_book` */DROP TABLE IF EXISTS `t_book`;CREATE TABLE `t_book` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `bookName` VARCHAR(20) DEFAULT NULL, `price` DECIMAL(6,2) DEFAULT NULL, `author` VARCHAR(20) DEFAULT NULL, `bookTypeId` INT(11) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=INNODB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;/*Data for the table `t_book` */INSERT INTO `t_book`(`id`,`bookName`,`price`,`author`,`bookTypeId`) VALUES (1,'Java编程思想','100.00','埃史尔',1),(2,'Java从入门到精通','80.00','李钟尉',1),(3,'三剑客','70.00','大仲马',2),(4,'生理学(第二版)','24.00','刘先国',4);/*Table structure for table `t_booktype` */DROP TABLE IF EXISTS `t_booktype`;CREATE TABLE `t_booktype` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `bookTypeName` VARCHAR(20) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=INNODB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;/*Data for the table `t_booktype` */INSERT INTO `t_booktype`(`id`,`bookTypeName`) VALUES (1,'计算机类'),(2,'文学类'),(3,'教育类');/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

SELECT * FROM t_book,t_bookType;
内连接查询是一种最常用的连接查询。内连接查询可以查询两个或者两个以上的表;

SELECT * FROM t_book,t_bookType WHERE t_book.bookTypeId=t_bookType.id;
3.2,外连接查询外连接可以查出某一张表的所有信息;SELECT 属性名列表 FROM 表名 1 LEFT|RIGHT JOIN 表名 2 ON 表名 1.属性名 1=表名 2.属性名 2;

    可以查询出“表名 1”的所有记录,而“表名 2”中,只能查询出匹配的记录;    可以查询出“表名 2”的所有记录,而“表名 1”中,只能查询出匹配的记录;

SELECT * FROM t_book RIGHT JOIN t_bookType ON t_book.bookTypeId=t_bookType.id;SELECT tb.bookName,tb.author,tby.bookTypeName FROM t_book tb RIGHT JOIN t_bookType tby ON tb.bookTypeId=tby.id;

SELECT tb.bookName,tb.author,tby.bookTypeName FROM t_book tb,t_bookType tby WHERE tb.bookTypeId=tby.id AND tb.price>70;
第四节:子查询

增加示例数据:

/*SQLyog 企业版 - MySQL GUI v8.14 MySQL - 5.1.49-community **********************************************************************//*!40101 SET NAMES utf8 */;CREATE TABLE `t_pricelevel` (  `id` INT ,  `priceLevel` INT ,  `price` FLOAT ,  `description` VARCHAR (300)); INSERT INTO `t_pricelevel` (`id`, `priceLevel`, `price`, `description`) VALUES('1','1','80.00','价格贵的书');INSERT INTO `t_pricelevel` (`id`, `priceLevel`, `price`, `description`) VALUES('2','2','60.00','价格适中的书');INSERT INTO `t_pricelevel` (`id`, `priceLevel`, `price`, `description`) VALUES('3','3','40.00','价格便宜的书');
一个查询语句的条件可能落在另一个 SELECT 语句的查询结果中。

SELECT * FROM t_book WHERE booktypeId IN (SELECT id FROM t_booktype);
4.2 带比较运算符的子查询子查询可以使用比较运算符。

SELECT * FROM t_book WHERE price>=(SELECT price FROM t_pricelevel WHERE priceLevel=1);
4.3 带 Exists 关键字的子查询假如子查询查询到记录,则进行外层查询,否则,不执行外层查询;

SELECT * FROM t_book WHERE EXISTS (SELECT * FROM t_booktype);
4.4 带 Any 关键字的子查询ANY 关键字表示满足其中任一条件;

SELECT * FROM t_book WHERE price>= ANY (SELECT price FROM t_pricelevel);
4.5 带 All 关键字的子查询ALL 关键字表示满足所有条件;

SELECT * FROM t_book WHERE price>= ALL (SELECT price FROM t_pricelevel);
第五节:合并查询结果5.1 UNION使用 UNION 关键字是,数据库系统会将所有的查询结果合并到一起,然后去除掉相同的记录;

SELECT id FROM t_book;SELECT id FROM t_booktype;SELECT id FROM t_book UNION SELECT id FROM t_booktype;
5.2 UNION ALL使用 UNION ALL,不会去除掉系统的记录;

SELECT id FROM t_book UNION ALL SELECT id FROM t_booktype;
格式: 表名 表的别名

SELECT * FROM t_book WHERE id=1;SELECT * FROM t_book t WHERE t.id=1;
格式: 属性名 [AS] 别名

SELECT t.bookName FROM t_book t WHERE t.id=1;SELECT t.bookName bName FROM t_book t WHERE t.id=1;SELECT t.bookName AS bName FROM t_book t WHERE t.id=1;

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:第五章 单表查询,聚合函数查询,连接查询,子查询,合并查询结果,为表和字段取别名

关键词:函数

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。