设为首页 加入收藏

TOP

【知了堂学习笔记】SQL查询基础语句(单表查询、多表查询)(一)
2017-10-10 08:54:58 】 浏览:10145
Tags:学习 笔记 SQL 查询 基础 语句 单表

SQL查询基础

1、单表查询

从数据库中查找数据 专业的称谓又称为投影

基本查询语句结构

select from

* 所有列不是所有其他东西

查询所有数据

例:SELECT * FROM t_studen

需要执行比较细的操作  加上条件筛选:查询id2号的学生信息

SELECT * FROM t_student WHERE id=2;

筛选的执行步骤  

例:SELECT * FROM t_student WHERE id=2;

SELECT *          (3) 再查询  筛选完后 我最终投影的结果就是筛选后的结果,不是每行都显示出来,显示行的数据是筛选后的数据  所以最后执行 select

FROM t_student    (1) 把整张表加到内存里面  把整张表找到后加到内存里面

WHERE id =2      (2) 筛选  因为一张表里面的数据需要去做一个筛选,不想让每行都显示,这样就没意义了,所以要进行一个条件筛选

只投影某些列

SELECT id,s_name FROM t_student;  只投影结果,而不是改变表数据,很多人会迷惑,其他列会不会不见了

查询出来显示成中文,比如s_name显示成学生姓名

 

 

 AS 加上别名  (列的别名)

SELECT id,s_name AS "学生姓名"  FROM t_student;

表别名,当有几张表的时候,表的名字很长,会给表加上别名

SELECT t_student.s_name FROM t_student  -- 但是在一张表中这样写t_student.s_name 没有任何意义

SELECT a.s_name FROM t_student a  本次查询 a就代表t_student 就可以a.s_name

 

 

1.1筛选掉重复数据 DISTINCT

SELECT DISTINCT s_name FROM t_student;

SELECT DISTINCT s_name,s_classid FROM t_student;   distinct 要重复列(s_name,s_classid)的数据完全一样

 

1.2选择操作:写筛选条件的方法:

 

并且  and 也可以写成&&

SELECT * FROM t_student WHERE id=2 AND s_name='李四' AND s_classid='二班'

SELECT * FROM t_student WHERE id=2 AND s_name='李四' && s_classid='二班'

 

或者 or 也可以写成 ||

SELECT * FROM t_student WHERE s_classid='二班' OR id=1

SELECT * FROM t_student WHERE s_classid='二班' || id=1

 

范围操作BETWEEN……AND……包含

语法:select 列 from 表名 where 列名 between 值  and 值;

SELECT * FROM t_student WHERE age>=18 AND age<=25

SELECT * FROM t_student WHERE age BETWEEN 18 AND 25  -- 等同于上面大于等于 及小于等于

小于等于18和一班,大于等于25和一班

SELECT * FROM t_student WHERE age<=18  OR age>=25 AND s_classid='一班';

这条语句执行出来的结果是小于等于18的所有数据和大于等于25并且是一班的数据

是因为and的优先级高于or的优先级

所以应该这样写:

SELECT * FROM t_student WHERE (age<=18  OR age>=25 ) AND s_classid='一班';

小于等于18和一班,大于等于25和一班   and优先级高于or 所以一般是单独用括号括起来

查询学生年纪为18 或者25 或者28

SELECT * FROM t_student WHERE age=18 OR age=25 OR age=28

 

in 操作  

简化上面的那种情况  where in(1,值2,值3)

SELECT * FROM t_student WHERE age IN(18,25,30)

 

not in 操作

值不是25

SELECT * FROM t_student WHERE age NOT IN(25)

 

返回限定行数 limit

limit 数字=从第一行数据开始 数两行

limit 数字n,数字m    从第n行数据开始(跟数组下标计算方式一样) m行  跟字符串substr类似

SELECT * FROM t_student LIMIT 2

SELECT * FROM t_student LIMIT 2,2

返回第二行之后所有行  第二个参数足够大  超出也只会返回到最后一行为止  

SELECT * FROM t_student LIMIT 2,100  

返回多少行   应用场景?  一些网站数据较多时,要出现分页

 

1.3模糊查询 

 

% 不限制字符

语法:select * from 表名 where 字段 like x%;

找所有姓张的学生

SELECT * FROM t_student WHERE s_name='张三'      = 全匹配 不会帮你自动模糊查询

SELECT * FROM t_student WHERE s_name LIKE '张%'  like % 不限制字符(0-N个字符)的模糊查询

SELECT * FROM t_student WHERE s_name LIKE '%张%'  like % 可以查到包含张  **

SELECT * FROM t_student WHERE s_name LIKE '%张  like % 可以查到张,以张结尾, 但是不能是张**

 

占位符 _(下划线)   一个下划线代表一个字符

找所有姓张的学生,并且名字长度为三个字

SELECT * FROM t_student WHERE s_name LIKE '张__'    like _ 限制字符数的模糊查询  一个下划线代表一个字符

查询年纪为空的学生信息

SELECT * FROM t_student WHERE age

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇redis事务 下一篇SQL Server 服务器主体拥有一个或..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目