查询语句1

查询语法与类型
Select *  from  表名
select  列名1,、列名2、列名3 、列名4  from  表名

 --在数据库中查询数据使用select命令
 --执行数据库查询时,可以使用*表示查询表格所有的列
 select * from libuser;

 --执行数据查询时,也可以指定要查询的列
 --select userid,uaccount,passwd,age,regdate,sex from libuser;
 --select userid,uaccount,age,regdate from libuser;

精确查询
Select *  from  表名  where  列名=‘查询条件’

 -使用精确查询
-- 查询数据使用select进行查询, select 列名(多个列可以使用逗号进行分隔或使用*表示所有的列) from 表名 where 条件(列名=查询条件)
 select * from libuser where uaccount = ‘lisi‘; 

模糊查询
select  列名1,、列名2  from  表名  where 列名>=查询条件
                     列名 like ‘%123%’   ‘%123’   ‘%12__’
--使用模糊查询
--查询年龄大于等于19岁的人
 select userid,uaccount,passwd,age,regdate,sex from libuser where age >= 22;

--查询账号包含有lin的人
select * from libuser where uaccount like ‘%lin%‘; 

--查询所有以lin开头的人
select * from libuser where uaccount like ‘lin%‘;

--查询所有以ing结尾的人
select * from libuser where uaccount like ‘%ing‘; 

--模糊查询可以使用like查询实现,可以使用%表示0个或多个字符,还可使用_表示一个不确定的字符
select * from libuser where uaccount like ‘%ing_‘;
--注意:一条下划线_表示一个不确定的字符,N条下划线表示N个不确定的字符
select * from libuser where uaccount like ‘%in__‘;

时间查询
select  列名1,、列名2  from  表名  where 列名格式=查询条件

--查询注册时间是6月份的人
select userid,uaccount,age,to_char(regdate,‘yyyy-mm-dd hh24:mi:ss‘) from libuser where to_char(regdate,‘yyyymm‘)=‘201606‘;

--练习:查询指定年月日的人 

--日期比较
--找出注册时间在7月13号前的人
--编程语言中的时间是指从1970年1月1号0点0时0分0秒0毫秒到当前时间点的时间差,所以日期越往后值越大;这里使用的数值判断两个数值谁大谁小
select userid,uaccount,age,to_char(regdate,‘yyyy-mm-dd hh24:mi:ss‘) from libuser where regdate<to_date(‘2016-7-13‘,‘yyyy-mm-dd‘);

--练习:查找注册时间在2016-07-12 13:30:52后的人,包含2016-07-12 13:30:52

 --查询星期几--注意每周是从星期天开始的,故星期天的数值是1
 select to_char(regdate,‘day‘),to_number(to_char(regdate,‘D‘)) from libuser;

多条件查询
select  列名1,、列名2  from  表名  where 列名=查询条件 and列名=查询条件
 列名=查询条件 or列名=查询条件   1X(1+0)X1=1   1X(1+0)X0=0
列名=查询条件 or列名=查询条件 and列名=查询条件 or列名=查询条件
--多条件查询
 --根据用户的账号和密码找出用户的信息
 --需要同时满足两个查询条件的,需要进行逻辑与操作,使用and运算符号实现(如果是多条件都需要满足,使用多个and)
 select userid,uaccount,passwd,age,to_char(regdate,‘yyyy-mm-dd hh24:mi:ss‘) from libuser where uaccount=‘linling‘ and passwd=‘linling‘;

 --查找linling或linling2的数据
 --或查询时逻辑或操作,使用or运算符实现(如果有多个条件使用多个or)
 select userid,uaccount,passwd,age,to_char(regdate,‘yyyy-mm-dd hh24:mi:ss‘) from libuser where uaccount=‘linling‘ or uaccount=‘linling8‘

 --查找出userid为10003且密码等于123456的用户 或者账号为linling且密码等于linling的用户
 --注意:在同一查询条件中,如有and与(乘法)运算,又有or或(加法)运算;这样的运算可以看成算术运算的混合运算.先乘除后加减
 select userid,uaccount,passwd,age,to_char(regdate,‘yyyy-mm-dd hh24:mi:ss‘) from libuser
       where userid=10003 and passwd=‘123456‘ or uaccount=‘linling‘ and passwd=‘linling‘;
 --可以使用小括号改变运算的优先级别
  select userid,uaccount,passwd,age,to_char(regdate,‘yyyy-mm-dd hh24:mi:ss‘) from libuser
       where (userid=10003 and passwd=‘123456‘) or (uaccount=‘linling‘ and passwd=‘linling‘);

  -- 理解逻辑运行的优先级别
   select userid,uaccount,passwd,age,to_char(regdate,‘yyyy-mm-dd hh24:mi:ss‘) from libuser
       where userid=10003 and (passwd=‘123456‘ or uaccount=‘linling‘) and passwd=‘linling‘;  

非空查询
select  列名1,、列名2  from  表名  where 列名 is null
select  列名1,、列名2  from  表名  where 列名 is not null

  --查询字段为null的数据用 is null
  select userid,uaccount,passwd,age ,to_char(regdate,‘yyyy-mm-dd hh24:mi:ss‘) regdate from libuser where age is null;
  --查询字段不为空null的数据用is not null
  select userid,uaccount,passwd,age ,to_char(regdate,‘yyyy-mm-dd hh24:mi:ss‘) regdate from libuser where age is not null;

过滤查询
select  列名1,、列名2  from  表名  where 表名in(查询条件)
select  列名1,、列名2  from  表名  where 表名not in(查询条件)

--使用in查询过滤数据
  select userid,uaccount,passwd,age ,to_char(regdate,‘yyyy-mm-dd hh24:mi:ss‘) regdate from libuser
     where userid in (10003,10005 ,100020 ,20000 ,2001 ,200003, 200052);
 --使用 not in 查询过滤数据
 select userid,uaccount,passwd,age ,to_char(regdate,‘yyyy-mm-dd hh24:mi:ss‘) regdate from libuser
     where userid not in (10003,10005 ,100020 ,20000 ,2001 ,200003, 200052); 

关联查询 子查询 使用join关联查询
select stationid,stationname,select Areaid from Area where Areaname = ‘北京市‘,stationsite, from Station where stationid=‘1‘;

  select s.stationid,s.stationname,s.stationsite,a.areaname from Station s join area a on s.areaid=a.areaid;

  --自关联查询
  select a.areaid,a.areaname,a.superior,a2.areaname from Area a left join Area a2 on a.superior = a2.areaid order by a.areaid ;
  --多表关联查询
  select s.stationid,s.stationname,a.areaname,s.stationsite from Station s join Area a on s.areaid=a.areaid order by s.stationid;

  ---多表查询,子查询
  select t.trainid,tr.typename,st.stationname z,sta.stationname,t.starttime,t.sndtime,t.mile,t.price from train t join traintype tr on t.tpid=tr.tpid join Station st on st.stationid=t.starstation join Station sta on sta.stationid=t.endstation;

--左连接查询--会把join左边的表的所有数据都查询出来
select * from goods t left outer join category c on t.category=c.id;

--右连接查询--会把join右边的表的所有数据都查询出来
select * from goods t right outer join category c on t.category=c.id;

--内连接查询--只查询有关联关系的数据
select * from goods t  join category c on t.category=c.id;
select * from goods t inner join category c on t.category=c.id;

  --查找书籍分类是"航空航天3"的书籍
   select * from book where btype=(select bid from booktype where btname=‘航空航天3‘);

   --课后练习:查找书籍分类是"航空航天3"的书籍,要求同时显示分类名称
   --多表联合查询--
   --查找的数据如果保存在多个表中,且这些表有主外键关系,可以通过主外键进关联查询

   --select 列名 from 外键表,主键表  where 外键表的外键=主键表的主键
   select * from book b,booktype bt where b.btype=bt.bid
   --颠倒表或表关系查询的结果是一样的
   select * from booktype bt,book b where bt.bid=b.btype

   --在查询列时,可以使用表的别名分别制定两个表要查询的列
   select b.*,bt.btname from booktype bt,book b where bt.bid=b.btype
   --使用表的别名指定要查询的列
   select b.bookname,b.price,bt.btname from book b,booktype bt where b.btype=bt.bid;

   --练习:
   --1.根据书籍类名查询书籍名称(已知书籍类名称"航空航天3",要求查询该类型下的书籍名称); 

   --1.1把两张表都在主查询中进行关联查询:满足主外键关系,满足查询条件
   SELECT * FROM BOOK;
   --select b.bookname from book b,booktype bt where   bt.btname=‘航空航天3‘;
   select b.bookname from book b,booktype bt where b.btype=bt.bid and bt.btname=‘航空航天3‘;

   --1.2使用子查询方法
   --select b.bookname from book b where b.btype=16
   --select bid from booktype where btname=‘航空航天3‘

   select b.bookname from book b where b.btype=( select bid from booktype where btname=‘航空航天3‘);

   --1.3使用关联查询
   --select 列 from 表  join 关联表 on 关联条件 where 其他查询条件
   select b.bookname from book b join booktype bt on b.btype=bt.bid where bt.btname=‘航空航天3‘;

   --查询加强:查询isbn为ISBN-2016-NUM23的书名和类型名
   select b.bookname,bt.btname from book b join booktype bt on b.btype=bt.bid where b.isbn=‘ISBN-2016-NUM23‘;

   --练习:查询价格为"20.02" ,且类型名为"航空航天3"的书名
   select b.bookname from book b join booktype bt on b.btype=bt.bid where b.price=20.02 and bt.btname=‘航空航天3‘;

   select b.bookname from book b join booktype bt on b.btype=bt.bid and b.price=20.02 and bt.btname=‘航空航天3‘;

   -- 2.根据书籍名称查询类型名称(已知书籍的名称"oracle项目化编程",要求查询该书籍的类型名称)
   --2.1通过主查询进行关联
   select bt.btname from booktype bt ,book b where bt.bid=b.btype and b.bookname=‘oracle项目化编程‘;
   --2.2通过子查询进行关联查询
   select bt.btname from booktype bt where bt.bid = (select btype from book where  bookname=‘oracle项目化编程‘);
   --2.3通过join关联查询
   select bt.btname from booktype bt join book b on bt.bid = b.btype where b.bookname=‘oracle项目化编程‘;
   
时间: 2024-10-12 18:51:33

查询语句1的相关文章

Oracle SQL语言之查询语句_超越OCP精通Oracle视频教程培训29

Oracle SQL语言之查询语句_超越OCP精通Oracle视频教程培训29 本课程介绍: Oracle视频教程,风哥本套oracle教程培训是<<Oracle数据库SQL语言实战培训教程>>的第4/5套:Oracle SQL语言之查询语句.主要学习Oracle数据库SQL查询限制排序.Oracle SQL联接查询.Oracle SQL子查询等. 视频学习地址: http://edu.51cto.com/course/course_id-8047.html Oracle SQL语

MongoDB查询语句

看了些资料,对应只需要知道怎么查询和使用mongodb的我来说,这些足够啦. 左边是mongodb查询语句,右边是sql语句.对照着用,挺方便. db.users.find() select * from users db.users.find({"age" : 27}) select * from users where age = 27 db.users.find({"username" : "joe", "age" : 

sql的基础语句-sql的查询语句select

SQL查询语句介绍--select语句 1.简单的select查询语句 1.1 查行 SQL> select * from emp; 1.2 查列 SQL> select empno,ename from emp; 1.3 关联查询 oracle的语法: select  a.*,b.*  from emp a,dept b where a.deptno=b.deptno; 通用的语法: select  a.*,b.* from emp a join dept b on(a.deptno = b

如何消除 sql server 2008 查询语句的红色波浪线

近来学习sql的时候,所以就用上了sql server 2008 ,这个版本有个很好的地方就是会智能提示,但是这种智能提示有些时候这是很烦人,比如说新建一张数据表之后,表名为 Person当使用结构化查询语句的时候,输入Person 总是会出现红色波浪线(红色波浪线一般是提示有错误,但是这里并没错)百度上有个很好的解释:这个表的字段列表,让你选择.但是,当你新建了一个对象的时候, 例如表, 或者你的那个例子,是新建存储过程abc这个时候,数据库那里,已经有存储过程abc 了.但是客户端的缓存里面

python 3 mysql sql逻辑查询语句执行顺序

python 3 mysql sql逻辑查询语句执行顺序 一 .SELECT语句关键字的定义顺序 SELECT DISTINCT <select_list> FROM <left_table> <join_type> JOIN <right_table> ON <join_condition> WHERE <where_condition> GROUP BY <group_by_list> HAVING <havin

SQL查询语句

查询语句,在开发中使用的次数最多,此处使用"zhangwu" 账务表. 创建账务表: CREATE TABLE zhangwu ( id INT PRIMARY KEY AUTO_INCREMENT, -- 账务ID name VARCHAR(200), -- 账务名称 money DOUBLE, -- 金额 ); 插入表记录: INSERT  INTO zhangwu(id,name,money) VALUES (1,'吃饭支出',247); INSERT  INTO zhangwu

MySQL 查询语句优化思路

query 语句的优化思路和原则主要提现在以下几个方面:1. 优化更需要优化的Query:2. 定位优化对象的性能瓶颈:3. 明确的优化目标:4. 从 Explain 入手:5. 多使用profile6. 永远用小结果集驱动大的结果集:7. 尽可能在索引中完成排序:8. 只取出自己需要的Columns:9. 仅仅使用最有效的过滤条件:10. 尽可能避免复杂的Join和子查询 关于explain 用法:explain select * from tables1 where 1 ... 先看一下在

Hibernate 关于执行sql查询语句(转)

原文  http://www.yshjava.cn/post/543.html 主题 SQLHibernate Hibernate对原生SQL查询的支持和控制是通过SQLQuery接口实现的.通过Session接口,我们能够很方便的创建一个SQLQuery(SQLQuery是一个接口,在Hibernate4.2.2之前,默认返回的是SQLQuery的实现类--SQLQueryImpl对象,在下文中出现的SQLQuery如非注明,都是指该子类)对象来进行原生SQL查询: session.creat

Oracle数据库,查询语句、内置函数

一.数据库的查询语句: 1.查询整个表: select * from 表名 例: 2.通过条件查询某一行数据: select * from 表名 where 字段名 例: 3.某一列数据去重查询: select distinct 字段名 from 表名 例: 4.查询的结果按某个字段升序或倒序排列:  select * from 表名 order by 字段名;                  在字段名的后面加desc为降序顺序排列 例: 5.查询某一列在某个范围内的数据: select *

MySQL 查询语句使用进阶

MySQL 查询语句使用进阶 =============================================================================== 概述: =============================================================================== 练习: 练习1  首先导入hellodb.sql的脚本文件,查询其数据库和表如下: [[email protected] ~]# mysql