一 说明

如果是初学者,建议去网上寻找安装Mysql的文章安装,以及使用navicat连接数据库,以后的示例基本是使用mysql数据库管理系统;

二 准备前提

需要建立一张学生表,列分别是id,名称,年龄,学生信息;本示例中文章篇幅原因SQL注释略;

建表语句:

CREATE TABLE `student` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(255) DEFAULT NULL,`age` int(11) DEFAULT NULL,`info` varchar(255) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

表中的数据:

INSERT INTO `springboot`.`student`(`id`, `name`, `age`, `info`) VALUES (1, 'youku1', 18, '大一新生');
INSERT INTO `springboot`.`student`(`id`, `name`, `age`, `info`) VALUES (2, 'youku2', 23, '毕业生');
INSERT INTO `springboot`.`student`(`id`, `name`, `age`, `info`) VALUES (3, 'jeff', 25, '社会人士');
INSERT INTO `springboot`.`student`(`id`, `name`, `age`, `info`) VALUES (4, 'smile', 17, '高三学子');

三 基本检索

3.1 select 关键字

sql 都是由许多关键字(keyword)组成的语句,关键字是数据库的保留字,用户不能将其当作建表的表名,字段等;表中的数据检索使用select关键字作为开头进行查询数据库表的信息;

3.2 检索单个字段

语句示例:

SELECT name FROM student

查询结果:

youku1
youku2
jeff
smile

语句分析:

select 是 查询 的意思 , name 代表表中的字段 ,from 表示来自哪张表,其后面的student就是表;连起来的意思就是查询字段是name的数据来自表student;

3.3 sql语句注意点

多sql语句一起执行使用封号(;)隔开,在拼写语句时表的关键字都建议使用大写,表的字段和表名使用小写;为了容易阅读建议将sql分成多行(由于文章篇幅原因就不分了);sql语言也是使用英文字母,不要开中文,以免造成符号错误不容易发现;sql语句默认不区分大小写;

3.4 检索多个字段

语句示例:

SELECT name,age FROM student;

语句结果:

youku1   18
youku2  23
jeff    25
smile   17

语句分析:

查询字段 名字,年龄来自表student;多个列检索时使用逗号(,)隔开;

3.5 检索所有字段

语句示例:

SELECT * FROM student;

语句结果:

1    youku1  18  大一新生
2   youku2  23  毕业生
3   jeff    25  社会人士
4   smile   17  高三学子

语句分析:

通配符 (*)表示返回表中的所有列,如果不是必须建议不要使用通配符,会影响数据库性能;

3.6 distinct

distinct 表示区分,意指检索出来的行是唯一(去重),其放在列的最前面;如果使用了关键字distinct,其作用于后面的所有列(由于本示例数据没有重复示例,结果就不是很清晰);

SELECT DISTINCT name, age FROM student;

语句结果:

youku1   18
youku2  23
jeff    25
smile   17

3.7 限制条数

access 和 sql server :

SELECT TOP 2 name FROM student

TOP 2 表示限制返回前2行

postgresql 、SQLite和 mysql:

SELECT name FROM student LIMIT 2;

limit 2 表示限制返回前2行;

DB2:

SELECT name FROM student FETCH FIRST 2 ROWS ONLY

FETCH FIRST 2 ROWS ONLY 表示只抓取前2行数据

语句结果:

youku1
youku2

3.8偏移

示例:

SELECT name FROM student LIMIT 1 OFFSET 1;

语句分析

表示查询列名称来自学生表 限制条数1,偏移值1;意思就是查询学生表中的第二行数据;offset表示跳跃或者偏移;

mysql和MariaDB简化形式:

SELECT name FROM student LIMIT 1,2;

表示查询字段名称来自学生表,限制2条,偏移1条;注意顺序;

语句结果:

youku2
jeff

四 排序检索

4.1 ORDER BY 子句

示例:

SELECT name,age FROM student ORDER BY age

语句分析;

检索字段名称,年龄来自学生表按照列年龄排序;注意默认是升序,ORDER BY 子句通常在语句末尾;

语句结果:

smile    17
youku1  18
youku2  23
jeff    25

4.2 多列排序

示例:

SELECT name,age FROM student ORDER BY age DESC, name ASC;

语句分析:

查询名称,年龄来自学生表,按照年龄降序,名称升序进行排序;关键字 DESC(descending) 意指降序,字母默认Z-A; ASC(ascending)意指升序,字母默认A-Z;多列情况下,每个列后面指定使用DESC,使用逗号(,)隔开,如果不写,默认升序;

语句结果:

jeff 25
youku2  23
youku1  18
smile   17

4.3 按位排序

语句示例:

SELECT name,age FROM student ORDER BY 2 DESC, 1 ASC;

按位指查询字段的位置,2 对应字段age,1对应字段name;结果和4.2一致;

五 过滤检索

sql 语句中过滤条件(filter condition)的关键字是 WHERE,其使用方式是跟在表名之后;

5.1 WHERE语句操作符

根据不同的数据库管理系统,其支持的操作符略有不同,所以下文较多重复意思的操作符,应查阅官方文档说明,哪些操作符是支持使用的数据库管理系统;

操作符 说明
= 等于
> 大于
< 小于
!= 不等于
<> 不等于
>= 大于等于
<= 小于等于
!< 不小于
!> 不大于
BETWEEN 在中间
IS NULL 为空

5.2 单条件过滤

示例:

SELECT * FROM student WHERE name = 'jeff';

语句分析;

查询所有字段来自学生表 条件是 学生名称是 jeff;注意 非表字段,表名,关键字,使用2个单引号(’’)括起来,里面存放的是我们输入的数据;

语句结果;

3    jeff    25  社会人士

5.3 多条件过滤

多条件过滤时使用 AND 或者 OR 子句;AND连接表达式表示过滤条件都为真的数据;OR连接表达式表示匹配过滤条件任意一个;

AND示例:

SELECT * FROM student WHERE age >= '18' AND age <= '23';

语句分析:

查询所有字段来自学生表,条件是 学生年龄大于等于18 并且 学生年龄小于 23;

语句结果:

1    youku1  18  大一新生
2   youku2  23  毕业生

OR示例:

SELECT * FROM student WHERE age >= '18' OR age <= '23';

语句分析:

检索所有字段来自学生表,条件是 学生年龄大于等于18,或者学生年龄小于23;

OR 和 AND 示例:

SELECT * FROM student WHERE age >= '18' AND (age <= '23' OR id >=2);

语句分析:

在使用OR 和 AND 的时候应该明确过滤条件,然后使用小括号括起来,由于数据库管理系统是根据顺序执行,如果不使用小括号很容易造成语义错误;查询所有字段来自学生表 过滤条件 年龄大于 18 并且 (年龄小于23 或者 id 大于2)的数据;

5.4 范围查询

示例:

SELECT * FROM student WHERE  age BETWEEN '18' And '23';

语句分析

BETWEEN 表示范围查询,查询所有字段来自学生表,过滤条件学生年龄在18至23之间;

语句结果:

1    youku1  18  大一新生
2   youku2  23  毕业生

5.5 空值查询

示例:

SELECT * FROM student WHERE  age IS NULL;

语句分析:

查询所有字段来自学生表,过滤条件 学生年龄 为空;数据库表不填充数据默认为空(NULL),当然你也可以给指定类型的列设置默认值;

5.6 IN 操作

示例:

SELECT * FROM student WHERE  age IN (18,23,25);

语句分析:

查询所有字段来自学生表 ,过滤条件 年龄 是 18 或者 23 或者 25 ;IN是个范围查询,匹配小括号中指定的任意值,其功能跟OR类似,一个IN 就相当于好多个OR;

语句结果:

1    youku1  18  大一新生
2   youku2  23  毕业生
3   jeff    25  社会人士

5.7 NOT 操作符

示例:

SELECT * FROM student WHERE  NOT age='25';

语句分析:

NOT 操作符表是否定;其跟在WHERE后面功能类似<>;

六 通配符检索

6.1 通配符的介绍

通配符是组成匹配模式的特殊字符串;如果有用过正则表达式的同学肯定不陌生,这个与其类似;检索文本的通配符是用在关键词Like 后面;

6.2 通配符 %

示例:

SELECT * FROM student WHERE name LIKE 'you%' ;

语句分析:

查询所有字段来自学生表,过滤条件 名字匹配以you开头的字符串后面匹配任意个任意字符;%通配符代表任意个任意字符串,0也算在内,但不包括null;

语句结果:

1    youku1  18  大一新生
2   youku2  23  毕业生

示例:

SELECT * FROM student WHERE name LIKE '%i%' ;

语句分析:

查询所有列来自学生表,过滤条件学生的名称匹配中间必须出现一次字母i,字母i的前后可以匹配任意个任意字符串;

语句结果;

4    smile   17  高三学子

6.3 通配符 _

通配符 _ 代表匹配一个字符串;在Access数据库中不是 _ 而是 ?;

示例:

SELECT * FROM student WHERE name LIKE 'youku_' ;

语句分析:

查询所有列来自学生表,过滤条件 学生名称 匹配模式 youku 后面一个为任意字符串;

语句结果;

1    youku1  18  大一新生
2   youku2  23  毕业生

6.4 通配符 []

通配符 [] 表示匹配指定一个位置一个字符;其里面可以存放多个字符,关系是or,模式匹配时只占用一个位置,Access,SQL SERVER 支持;

七 字段基本操作

7.1 字段拼接

示例:

SELECT concat('你好啊',name,'327今天心情怎么样') FROM student WHERE id = '1' ;

语句分析:

函数 concat 就是将多个字符子串拼接成一个字符串;不同的数据库管理系统其使用的方式略有差别,应查阅官方文档;
在 mysql 中使用 concat函数;在postgresql中使用 || ; 在 Access和 sql server中使用 +;

语句结果:

你好啊youku1327今天心情怎么样

7.2 去除空白字符串

语句示例:

SELECT  RTRIM('      哥,今天管饱        ') FROM student WHERE id = '1' ;

语句分析:

RTRIM(STR) 函数是去掉右边的字符串;TRIM(STR)是去掉字符串两边的空白字符;LTRIM(STR)是去掉字符串左边的空白字符;

语句结果;

      哥,今天管饱

7.3 别名

语句示例:

SELECT name as student_name FROM student WHERE  id = '1' ;

语句分析:

别名(alias)是可以给字段,或者表起别名;当多表操作出现重复字段时使用别名是个很好的选择;别名可以使用AS关键字,虽然其是可省略,但平时我们最好加上它增强阅读性;

7.4 计算

操作符 说明
*
+
-
/

语句示例:

SELECT 2 * 8; 

语句结果:

16

八 本套教程

本套教程
MYSQL介绍(1)
MYSQL检索(2)
MYSQL检索(3)
MYSQL插入更新删除(4)
MYSQL事物(5)
MYSQL数据类型(6)
MYSQL表结构操作(7)
MYSQL视图(8)
MYSQL储存过程(9)
MYSQL游标与触发器(10)
MYSQL用户权限管理(11)
MYSQLl架构入门(12)
MYSQL锁等待与死锁(13)
MYSQLl操作json(14)
MYSQL执行计划(15)
MYSQL索引(16)

SQL-小白最佳入门sql查询一相关推荐

  1. Sql小白入门(一)概述

    虽然接触Sql的时间挺长了,但是一直都没有对Sql整理.总结,许多东西都是一知半解,所以将笔者学习Sql的笔记,整理为博客,对自己也算是一个归纳总结的过程,如果有错误之处,欢迎指出!开始博文!本系列博 ...

  2. 最佳SQL Server 2008入门教程

    媒体评论 "本书是SQL Server数据库初学者的明智选择.它不仅很好地介绍了SQL Server的主要特性,还深入浅出地阐述了数据库开发和设计的一般性概念." --Amazon ...

  3. 「SQL数据分析系列」3.查询入门

    来源 |  Learning SQL Generate, Manipulate, and Retrieve Data, Third Edition 作者 | Alan Beaulieu 译者 | Li ...

  4. Mybatis最入门---分页查询(逻辑分页与SQL语句分页)

    [一步是咫尺,一步即天涯] 到目前为止,我们介绍的Mybatis种种查询都是一次性的查询出所有结果并返回给上层.但是,在实际开发过程中,在大量数据存在的情况下,是很少这么做的.本文,我们将从逻辑分页, ...

  5. 小白入门SQL基础知识汇总

    小白入门SQL基础知识汇总 课程链接:link

  6. mysql sql优化入门_Mysql入门SQL 语句优化方法30例

    作者:VEPHP   时间 2017-09-27 <Mysql入门SQL 语句优化方法30例>要点: 本文介绍了Mysql入门SQL 语句优化方法30例,希望对您有用.如果有疑问,可以联系 ...

  7. SQL 注入攻防入门详解

    为什么80%的码农都做不了架构师?>>>    SQL 注入攻防入门详解 原文出处: 滴答的雨 毕业开始从事winfrm到今年转到 web ,在码农届已经足足混了快接近3年了,但是对 ...

  8. SQL Server 最佳实践分析器使用小结

    Best Practices Analyzer Tool for Microsoft SQL Server 2000是Microsoft SQL Server开发团队开发的一个数据库管理工具,可以让你 ...

  9. 找到一本适合自己的SQL Server 2008入门书

    <SQL Server 2008基础教程> 本书面向广大开发人员,从喜欢使用图形界面的程序员,到希望成为SQL Server 2008编程语言Transact SQL(T-SQL)高手的程 ...

最新文章

  1. java圆周率流程图,流程图、PI图入门知识 课件.doc
  2. 用共振频率去理解神经网络-将乙烯模型运行300次的数据
  3. POI的入门:加载解析Excel
  4. E - Rotate and Flip(线性代数矩阵坐标变换)
  5. itchat 道歉_人类的“道歉”
  6. reentrantlock非公平锁不会随机挂起线程?_程序员必须要知道的ReentrantLock 及 AQS 实现原理...
  7. LeetCode 1129. 颜色交替的最短路径(BFS)
  8. LeetCode刷题 --杂篇 --数组,链表,栈,队列
  9. 巴铁 无人驾驶_巴铁骗局再现 深圳无人巴士谎言又来忽悠人
  10. python函数的面向对象——面向对象设计
  11. 【github】命令和错误小结
  12. python 获取网页特定图片并保存至本地
  13. 二极管ROM的工作原理解读
  14. 支付宝接口http请求及sign加密
  15. 应届生如何轻松通过Java面试
  16. Anaconda详细安装及使用教程
  17. 2021-9-30 背景噪声的研究
  18. Google最热门60款开源项目
  19. matlab 沃尔什,Walsh-Hadamard 变换
  20. 反编译jad的命令使用

热门文章

  1. dsr testbed源代码学习笔记
  2. 苹果手机资料丢失怎么办
  3. 一文看懂特权访问管理(PAM)
  4. 电信低月租通讯王卡-6元月租600分钟全国通话
  5. 相片打印机原理_极印手机照片打印机体验:让照片「活起来」的随身玩物
  6. 中国首届杰出数据库工程师评选前10名单
  7. 给初学者的RxJava2.0教程(三):【操作符:Map、FlatMap、ConcatMap】
  8. RabbitMQ 之死信队列
  9. C++数据结构——旅游规划(Floyd算法详解)
  10. 论文阅读:Rethinking Atrous Convolution for Semantic Image Segmentation