Data Query Language 数据查询语言
查询数据库数据 , 如SELECT语句
简单的单表查询或多表的复杂查询和嵌套查询
是数据库语言中最核心,最重要的语句
使用频率最高的语句
SELECT语法
SELECT * FROM 表名 WHERE 条件
AS --可以为表、数据列或通过计算的到的结果取别名
SELECT 表名 AS 新名称
DISTINCT -- 去重
SELECT DISTINCT 数据列 FROM 表名
where --筛选满足条件的结果
模糊查询
注意点:
数值型数据之间才能进行算术运算
相同数据类型才能进行比较
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`
SELECT ABS(-8); --绝对值 SELECT CEILING(9.4); --向上取整 SELECT FLOOR(9.4); --向下取整 SELECT RAND(); --返回一个0-1之间的随机数 SELECT SIGN(0); --符号函数: 负数返回-1,正数返回1,0返回0
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('狂神说坚持就能成功'); --取反
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()); --秒
函数名称 | 描述 |
---|---|
SUM() | 返回数字字段或表达式列作统计,返回一列的总和。 |
AVG() | 通常为数值字段或表达列作统计,返回一列的平均值 |
MAX() | 可以为数值字段,字符字段或表达式列作统计,返回最大的值。 |
MIN() | 可以为数值字段,字符字段或表达式列作统计,返回最小的值。 |