.setquery查询多个字段_SQL之最佳⼊门sql查询
⼀ 说明
如果是初学者,建议去⽹上寻安装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,  PRIMAR
三 基本检索表中的数据:
INSERT INTO `springboot`.`student`(`id`, `name`, `age`, `info`) VALUES (1, 'youku1', 18, '⼤⼀新⽣');INSERT INTO `springboot`.`student`(`id`, `name`, `age`, `inf
三 基本检索
3.1 select 关键字
sql 都是由许多关键字(keyword)组成的语句,关键字是数据库的保留字,⽤户不能将其当作建表的表名,字段等;表中的数据检索使⽤
select关键字作为开头进⾏查询数据库表的信息;
3.2 检索单个字段
语句⽰例:
SELECT name FROM student
查询结果:
youku1youku2jeffsmile
语句分析:
select 是 查询 的意思 , name 代表表中的字段 ,from 表⽰来⾃哪张表,其后⾯的student就是表;连起来的意思就是查询字段是name
的数据来⾃表student;
3.3 sql语句注意点
多sql语句⼀起执⾏使⽤封号(;)隔开,在拼写语句时表的关键字都建议使⽤⼤写,表的字段和表名使⽤⼩写;为了容易阅读建议将sql分成多
⾏(由于⽂章篇幅原因就不分了);sql语⾔也是使⽤英⽂字母,不要开中⽂,以免造成符号错误不容易发现;sql语句默认不区分⼤⼩写;
3.4 检索多个字段
语句⽰例:
SELECT name,age FROM student;
语句结果:
youku118youku223jeff25smile17
语句分析:
查询字段 名字,年龄来⾃表student;多个列检索时使⽤逗号(,)隔开;
3.5 检索所有字段
语句⽰例:
SELECT * FROM student;
语句结果:
1youku118⼤⼀新⽣2youku223毕业⽣3jeff25社会⼈⼠4smile17⾼三学⼦
语句分析:
通配符 (*)表⽰返回表中的所有列,如果不是必须建议不要使⽤通配符,会影响数据库性能;
3.6 distinct
distinct 表⽰区分,意指检索出来的⾏是唯⼀(去重),其放在列的最前⾯;如果使⽤了关键字distinct,其作⽤于后⾯的所有列(由于本⽰例数据没有重复⽰例,结果就不是很清晰);
SELECT DISTINCT name, age FROM student;
语句结果:
youku118youku223jeff25smile17
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⾏数据
语句结果:
youku1youku2
3.8偏移
⽰例:
SELECT name FROM student LIMIT 1 OFFSET 1;
语句分析
表⽰查询列名称来⾃学⽣表 限制条数1,偏移值1;意思就是查询学⽣表中的第⼆⾏数据;offset表⽰跳跃或者偏移;
mysql和MariaDB简化形式:
SELECT name FROM student LIMIT 1,2;
表⽰查询字段名称来⾃学⽣表,限制2条,偏移1条;注意顺序;
语句结果:
youku2jeff
四 排序检索
4.1 ORDER BY ⼦句
⽰例:
SELECT name,age FROM student ORDER BY age
语句分析;
检索字段名称,年龄来⾃学⽣表按照列年龄排序;注意默认是升序,ORDER BY ⼦句通常在语句末尾;
语句结果:
smile17youku118youku223jeff25
4.2 多列排序
⽰例:
SELECT name,age FROM student ORDER BY age DESC, name ASC;
语句分析:
查询名称,年龄来⾃学⽣表,按照年龄降序,名称升序进⾏排序;关键字 DESC(descending) 意指降序,字母默认Z-A; ASC(ascending)意指升序,字母默认A-Z;多列情况下,每个列后⾯指定使⽤DESC,使⽤逗号(,)隔开,如果不写,默认升序;
语句结果:
jeff25youku223youku118smile17
4.3 按位排序
语句⽰例:
5.2 单条件过滤⽰例:
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之间;
语句结果:
1youku118⼤⼀新⽣2youku223毕业⽣
insert语句字段顺序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;
语句结果:
1youku118⼤⼀新⽣2youku223毕业⽣3jeff25社会⼈⼠