MySQL

4、DQL查询数据(重点)

  • Data Query Language 数据查询语言

  • 查询数据库数据 , 如SELECT语句

  • 简单的单表查询或多表的复杂查询和嵌套查询

  • 是数据库语言中最核心,最重要的语句

  • 使用频率最高的语句

SELECT语法

SELECT * FROM 表名 WHERE 条件

AS --可以为表、数据列或通过计算的到的结果取别名

SELECT 表名 AS 新名称

DISTINCT -- 去重

SELECT DISTINCT 数据列 FROM 表名

where --筛选满足条件的结果

模糊查询

  • 注意点:

    1. 数值型数据之间才能进行算术运算

    2. 相同数据类型才能进行比较

JOIN --连接查询(本质即三类)

INNER JOIN 如果表中至少一个匹配,则返回行
LEFT JOIN 右表无匹配值,也能从左表返回所有行
RIGHT JOIN 左表无匹配值,也能从右表返回所有行
SELECT s.studentno,studentname,subjectno,StudentResult
FROM student s
INNER JOIN result r
ON r.studentno = s.studentno
​
-- 右连接(也可实现)
SELECT s.studentno,studentname,subjectno,StudentResult
FROM student s
RIGHT JOIN result r
ON r.studentno = s.studentno
 
-- 等值连接
SELECT s.studentno,studentname,subjectno,StudentResult
FROM student s , result r
WHERE r.studentno = s.studentno
 
-- 左连接 (查询了所有同学,不考试的也会查出来)
SELECT s.studentno,studentname,subjectno,StudentResult
FROM student s
LEFT JOIN result r
ON r.studentno = s.studentno

自连接查询(了解即可)

- 创建一个表
CREATE TABLE `category` (
  `categoryid` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主id',
  `pid` INT(10) NOT NULL COMMENT '父id',
  `categoryName` VARCHAR(50) NOT NULL COMMENT '主名',
  PRIMARY KEY (`categoryid`)
) ENGINE=INNODB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8
 
-- 插入数据
INSERT INTO `category` (`categoryid`, `pid`, `categoryName`)
VALUES('2','1','信息技术'),
('3','1','软件开发'),
('4','3','数据库'),
('5','1','美术设计'),
('6','3','web开发'),
('7','5','ps技术'),
('8','2','办公信息');
​
-- 核心思想:把一张表看成两张一模一样的表,然后将这两张表连接查询(自连接)
SELECT a.categoryName AS '父栏目',b.categoryName AS '子栏目'
FROM category AS a,category AS b
WHERE a.`categoryid`=b.`pid`

5、mysql函数

5.1、数据函数

SELECT ABS(-8);  --绝对值
SELECT CEILING(9.4); --向上取整
SELECT FLOOR(9.4);   --向下取整
SELECT RAND();  --返回一个0-1之间的随机数
SELECT SIGN(0); --符号函数: 负数返回-1,正数返回1,0返回0

5.2、字符串函数

 SELECT CHAR_LENGTH('我爱中国');  --返回字符串包含的字符数
 SELECT CONCAT('我','爱','中国');  --合并字符串
 SELECT INSERT('我爱China',1,2,'我的');  --替换字符串:开始位置,替换长度
 SELECT LOWER('KuangShen'); --小写
 SELECT UPPER('KuangShen'); --大写
 SELECT LEFT('hello,world',5);   --从左边截取
 SELECT RIGHT('hello,world',5); --从右边截取
 SELECT REPLACE('狂神说坚持就能成功','坚持','努力');  --替换字符串
 SELECT SUBSTR('狂神说坚持就能成功',4,6); --截取字符串,开始,长度
 SELECT REVERSE('狂神说坚持就能成功'); --取反

5.3、日期和时间

SELECT CURRENT_DATE();   --获取当前日期
SELECT CURDATE();   --获取当前日期
SELECT NOW();   --获取当前日期和时间
SELECT LOCALTIME();   --获取本地时间
SELECT SYSDATE();   --获取系统时间
 
SELECT YEAR(NOW()); --年
SELECT MONTH(NOW()); --月
SELECT DAY(NOW()); --日
SELECT HOUR(NOW()); --时
SELECT MINUTE(NOW()); --分
SELECT SECOND(NOW()); --秒

5.4、聚合函数

函数名称 描述
SUM() 返回数字字段或表达式列作统计,返回一列的总和。
AVG() 通常为数值字段或表达列作统计,返回一列的平均值
MAX() 可以为数值字段,字符字段或表达式列作统计,返回最大的值。
MIN() 可以为数值字段,字符字段或表达式列作统计,返回最小的值。
上一篇:去重及数据库的表达式


下一篇:MySql