DQL基础查询

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(‘姚%’)#关键字匹配任意个字符

你可能感兴趣的:(sql)