DQL基础查询
● DQL(Data Query Language)数据查询语言查询是使用频率最高的一个操作,可以从一个表中查询数据,也可以从多个表中查询数据。
● 基础查询语法: select 查询列表 from 表名;
● 特点:
查询列表可以是:表中的字段、常量、表达式、函数
查询的结果是一个虚拟的表格
查询结果处理:
特定列查询 :select column1,column2 from table
全部列查询 : select * from table
算数运算符 :+ - * /
排除重复行 : select distinct column1,column2 from table
查询函数: select 函数 ; / 例如 version()
字符函数
length() :获取参数值的字节个数
char_length() 获取参数值的字符个数
concat(str1,str2,.....) :拼接字符串
upper()/lower() :将字符串变成大写 / 小写
substring(str,pos,length) :截取字符串 位置从 1 开始
instr(str, 指定字符 ) :返回子串第一次出现的索引,如果找不到返回 0
trim(str) :去掉字符串前后的空格或子串 ,trim( 指定子串 from 字符串 )
lpad(str,length, 填充字符 ) :用指定的字符实现左填充将 str 填充为指定长度
rpad(str,length, 填充字符 ) :用指定的字符实现右填充将 str 填充为指定长度
replace(str,old,new) :替换,替换所有的子串
INSERT INTO basketmember(名字,生日,身高,体重,位置)
VALUES('德怀恩.韦德','1982-1-17',1.93,96,'null'),
('勒布朗.詹姆斯','1984-12-30',2.03,113,'前锋'),
('科比.布莱恩特','1978-8-23',1.92,99,'后卫'),
('德科.诺维斯基','1978-6-19',2.13,111,'null'),
('艾里斯.保罗','1985-5-6',1.82,79,'后卫'),
('托尼.帕克','1982-5-17',1.87,83,'后卫'),
('凯文.加内特','1981-7-14',2.12,113,'null'),
('保罗.皮尔斯','1977-10-13',2.00,106,'前锋'),
('迈克尔.乔丹','1963-2-17',1.98,98,'前锋'),
('德怀特-霍华德','1985-12-18',2.10,120,'中锋'),
('姚明','1980-9-12',2.29,140,'中锋'),
('沙奎尔.奥尼尔','1972-3-6',2.15,147,'中锋')
此例子是我们今天所用的案例!!!
SELECT 编号 ,名字, 位置 FROM basketmember WHERE 编号=2 #在表格中选取固定的列
SELECT*FROM basketmember ORDER BY(体重)#将所选取的列进行排序
SELECT*FROM basketmember LIMIT 0,2#将所选取的列进行选取(初始,截止)行
SELECT DISTINCT 名字,生日 FROM basketmember#去除重复重复数据,重复数据指的是每列值都相同
SELECT 编号,身高+体重 FROM basketmember#将某几列进行加法运算
SELECT LENGTH(名字)FROM basketmember#以字节为长度进行输出
SELECT CHAR_LENGTH(名字)FROM basketmember#以字符串为单位进行输出
SELECT UPPER(名字)FROM basketmember#转大写
SELECT LOWER(名字)FROM basketmember#转小写
SELECT INSTR(名字,‘i’)FROM basketmember#返回指定字符在字符中首次出现的位置
SELECT SUBSTRING(名字,1,2)FROM basketmember#从开始至截止截取字符串内容
SELECT TRIM(名字)FROM basketmember#去掉前后的空格
SELECT TRIM('i’FROM 名字)FROM basketmember#去掉列名前后的字符串
SELECT LPAD(名字,8,‘a’)FROM basketmember#将字符加到前面至满足给定的字符长度
SELECT RPAD(名字,8,‘b’)FROM basketmember#将字符加到后面至给定的字符长度
SELECT REPLACE(名字,‘姚明’,‘刘子文’)FROM basketmember#替换(旧,新)
逻辑处理:
case when 条件 then 结果1 else 结果2 end; 可以有多个when
ifnull(被检测值,默认值)函数检测是否为null,如果为null,则返回指定的值,否则返回
原本的值
if函数: if else的 效果 if(条件,结果1,结果2)
SELECT 名字,生日,
(CASE WHEN 身高>=2.00 THEN'巨人'
WHEN 身高<=1.99 AND 身高>=1.8 THEN'中等' ELSE'不是中等' END
)AS height
FROM basketmember#when语句
SELECT 编号,名字,IFNULL(身高,‘暂未录入’)FROM basketmember#判断是否有null,填充默认值
SELECT 编号,名字,IF(身高>=2.00,‘高个子’,‘低个子’)AS height FROM basketmember#if判断语句
数学函数
round(数值):四舍五入
ceil(数值):向上取整,返回>=该参数的最小整数
floor(数值):向下取整,返回<=该参数的最大整数
truncate(数值,保留小数的位数):截断,小数点后截断到几位
mod(被除数,除数):取余,被除数为正,则为正;被除数为负,则为负
rand():获取随机数,返回0-1之间的小数
日期函数
now():返回当前系统日期+时间
curdate():返回当前系统日期,不包含时间
curtime():返回当前时间,不包含日期可以获取指定的部分,年、月、日、小时、分钟、秒
YEAR(日期列),MONTH(日期列),DAY(日期列) , HOUR(日期列) ,MINUTE(日期列)SECOND(日期列)
str_to_date:将日期格式的字符转换成指定格式的日期
date_format:将日期转换成字符串
datediff(big,small):返回两个日期相差的天数
分组函数
功能:用作统计使用,又称为聚合函数或统计函数或组函数
分类:sum 求和、avg 平均值、max 最大值、min 最小值、count 计数 (非空)
1.sum,avg一般用于处理数值型max,min,count可以处理任何类型
2.以上分组函数都忽略null值
3.count函数的一般使用count(*)用作统计行数
4.和分组函数一同查询的字段要求是group by后的字段
SELECT SUM(体重)FROM basketmember#总和
SELECT AVG(体重)FROM basketmember#平均值
SELECT MAX(体重)FROM basketmember#最大值
SELECT MIN(体重)FROM basketmember#最小值
条件查询
使用WHERE 子句,将不满足条件的行过滤掉,WHERE 子句紧随 FROM 子句。
语法:select <结果> from <表名> where <条件>
比较 =, != 或<>, >, <, >=, <=
逻辑运算
and 与
or 或
not 非
SELECT *FROM basketmember WHERE 身高 BETWEEN 1.80 AND 2.00#在一个 区间内,包含边界值
条件查询
模糊查询
LIKE :是否匹配于一个模式 一般和通配符搭配使用,可以判断字符型数值或数值型.
通配符: % 任意多个字符,包含0个字符 _ 任意单个字符
between and 两者之间,包含临界值;
in 判断某字段的值是否属于in列表中的某一项
IS NULL(为空的)或 IS NOT NULL(不为空的)
SELECT *FROM basketmember WHERE 名字 LIKE(‘姚%’)#关键字匹配任意个字符