DQL查询语句之SELECT的基本使用

DQL语言

  DQL( Data Query Language 数据查询语言 )

  • 查询数据库数据 , 如SELECT语句
  • 简单的单表查询或多表的复杂查询和嵌套查询
  • 是数据库语言中最核心,最重要的语句
  • 使用频率最高的语句


SELECT语法

SELECT [ALL | DISTINCT]
{* | table.* | [table.field1[as alias1][,table.field2[as alias2]][,...]]}
FROM table_name [as table_alias]
  [left | right | inner join table_name2]  -- 联合查询
  [WHERE ...]  -- 指定结果需满足的条件
  [GROUP BY ...]  -- 指定结果按照哪几个字段来分组
  [HAVING]  -- 过滤分组的记录必须满足的次要条件
  [ORDER BY ...]  -- 指定查询记录按一个或多个条件排序
  [LIMIT {[offset,]row_count | row_countOFFSET offset}];
   -- 指定查询的记录从哪条至哪条

注意:[ ] 括号代表可选的 , { }括号代表必选得

查询指定字段

        查询表中所有的数据列结果 , 采用 **" \* "** 符号; 但是效率低,不推荐

 

-- 语法  
SELECT 字段 FROM 表

-- 查询所有学生信息
SELECT * FROM student;

-- 查询指定列(学号 , 姓名)
SELECT studentno,studentname FROM student;

AS 子句作为别名

作用:

  • 可给数据列取一个新别名
  • 可给表取一个新别名
  • 可把经计算或总结的结果用另一个新名称来代替

例:

-- 这里是为列取别名(当然as关键词可以省略)
SELECT studentno AS 学号,studentname AS 姓名 FROM student;

-- 使用as也可以为表取别名
SELECT studentno AS 学号,studentname AS 姓名 FROM student AS s;

-- 使用as,为查询结果取一个新名字
-- CONCAT()函数拼接字符串
SELECT CONCAT('姓名:',studentname) AS 新姓名 FROM student;

DISTINCT关键字的使用

        作用:去掉SELECT查询返回的记录结果中重复的记录 ( 返回所有列的值都相同 ) , 只返回一条

例:

-- # 查看哪些同学参加了考试(学号) 去除重复项
SELECT * FROM result; -- 查看考试成绩
SELECT studentno FROM result; -- 查看哪些同学参加了考试
SELECT DISTINCT studentno FROM result; -- 了解:DISTINCT 去除重复项 , (默认是ALL)

使用表达式中的列

        数据库中的表达式 : 一般由文本值 , 列值 , NULL , 函数和操作符等组成

 

    应用场景 :

  • SELECT语句返回结果列中使用
  • SELECT语句中的ORDER BY , HAVING等子句中使用
  • DML语句中的 where 条件语句中使用表达式
-- selcet查询中可以使用表达式
SELECT @@auto_increment_increment; -- 查询自增步长
SELECT VERSION(); -- 查询版本号
SELECT 100*3-1 AS 计算结果; -- 表达式

-- 学员考试成绩集体提分一分查看
SELECT studentno,StudentResult+1 AS '提分后' FROM result;
  • 避免SQL返回结果中包含 ' . ' , ' * ' 和括号等干扰开发语言程序

函数CONCAT(a,b)

-- 函数 Concat(a,b)
SELECT CONCAT('姓名:',userName) AS 新名字 FROM t_admin

 


WHERE条件语句

        作用:用于检索数据表中 符合条件 的记录

        搜索条件可由一个或多个逻辑表达式组成 , 结果一般为真或假

逻辑操作符

操作符名称语法描述
AND 或 &&a AND b 或 a && b逻辑与,同时为真结果才为真
OR 或 ||a OR b 或 a || b逻辑或,只要一个为真,则结果为真
NOT 或 !NOT a 或 !a逻辑非,若操作数为假,则结果为真(真为假,假为真

        

        尽量使用英文字母

-- ======================== where ==========
--查询考试成绩表中的学号和成绩
SELECT `studentno`,`studentresult` FROM `result`
 
-- 查询考试成绩在 95~100分之间
SELECT `studentno`,`studentresult` FROM `result`
WHERE studentresult>=90 AND studentresult<=100
 
-- and &&
SELECT `studentno`,`studentresult` FROM `result`
WHERE chengji>=70 && chengji<90
 
-- 模糊查询(区间)
SELECT `studentno`,`studentresult` FROM `result`
WHERE `studentresult` BETWEEN 90 AND 100
 
-- 除了1号学生之外的同学的成绩
SELECT `studentno`,`studentresult` FROM result
WHERE `studentno`!=1001;
 
-- != not
SELECT `studentno`,`studentresult` FROM result
WHERE NOT `studentno` = 1001

模糊查询操作符详解

        模糊查询:比较运算符

运算符语法描述
IS NULL

a is null

如果操作符为NULL,结果为真
IS NOT NULLa is not null如果操作符不为NULL,结果为真
BETWEENa between b and c若a在b和c之间,则结果为真
LIKEa like bSQL匹配,如果a匹配b,则结果为真
IN

a in (a1,a2,a3...)

假设a在a1,或者a2.....其中的某一个值中,结果为真

例:

-- ======================== 模糊查询 ==========
-- 查询姓小的同学
-- like结合 %(代表0到任意个字符) _(一个字符)
SELECT `uid`,`uname` FROM `user`
WHERE `uname` LIKE '小%'
 
-- 查询姓李的同学后面只有一个字的
SELECT `uid`,`uname` FROM `user`
WHERE `uname` LIKE '李_'
 
-- 查询姓孙的同学后面只有两个字的
SELECT `uid`,`uname` FROM `user`
WHERE `uname` LIKE '孙__'
 
-- 查询名字中间有荣字的同学
SELECT `uid`,`uname` FROM `user`
WHERE `uname` LIKE '%荣%'
 
-- ========== in(具体的一个或多个值)=====
-- 查询 1,2,3号学员
SELECT `uid`,`uname` FROM `user`
WHERE `uid` IN(1,2,3);
 
-- 查询学生邮箱888@qq.com
SELECT `uid`,`uname` FROM `user`
WHERE `uemail` IN('888@qq.com')
 
-- ========== null not null =====
-- 查询邮件为空的同学 null ''
SELECT `uid`,`uname` FROM `user`
WHERE `uemail`='' OR `uemail` IS NULL
 
-- 查询邮件不为空的同学 
SELECT `uid`,`uname` FROM `user`
WHERE `uemail`='' OR `uemail` IS NOT NULL

小结:

        1.like结合 %(代表0到任意个字符) _(一个字符)

        2.查询姓名中含有特殊字符的需要使用转义符号 '\'

        3.不能直接写=NULL , 这是代表错误的。用 is null

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值