数据库-第四章 SQL语句查询

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

          SQL查询的基本结构

           集合运算

            空值

             聚集函数

             嵌套子查询

            数据库的修改

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

SQL查询的基本机构

SQL查询的基本机构由三个子句构成:select,from,where

select A1,A2,A3

fron r1,r2,r3

where P

 

select子句

注意:SQL不允许在属性名称中,使用字符‘-‘,使用dept_name代替dept-name

SQL不区分字母的大小写,因此可以使用大写字母、小写字母命令表,属性等。

SQL允许在关系以及SQL表达式结果中出现重复的元祖

若要强行去除重复,可在select后加入关键词distinct

例:查询instructor关系中的所有系名,并去除重复

select distinct dept_name

fron instructor;

SQL也可以使用关键词all来显式指明不去除重复(SQL默认就是all)

select all dept_name

from instructor;

星号*在select子句中,可以用来表示“所有的属性”

select *

from instructor;

select子句中还可带含有+、-、/运算符的算术表达式,运算对象可以是常数或元组的属性。

select ID,name,salary*1.05

from instructor;

where子句

where子句允许我们只选出那些在from子句的结果关系中满足特定谓词的元祖。

   

例:找出在Computer Science系并且工资超过7万美元教师的姓名

select name

from instructor

where dept_name = ‘Com.science‘and salary > 70000;

上述SQL查询语句,对应的关系代数表达式为:


   

SQL允许在where子句中使用逻辑连词and,or和not,也可以使用between指定范围查询。逻辑连词的运算对象可以是包含比较运算符<,<=,>,>=,=和<>的表达式

例:找出工资在90000到100000教师的名字

select name

from instructor

where salary > 90000 and salary > 100000;

select name

from instructor

where salaty between 90000 and 100000;

 from子句

from子句是一个查询求值中需要访问的关系列表,通过from子句定义了一个在该子句中所列出关系上的笛卡尔积。

找出instructor和teacher的笛卡尔积

select *

from instructor,teacher;

更名运算

SQL提供可为关系和属性重新命名的机制,使用as子句,as语句可以出现在select子句中,也可以出现在from子句中

使用更名运算,对关系进行更名,

例:找出所有教师,以及他们所讲授课程的标识

select T.name, S.course_id

from instructor as T, teachers as S

where T.ID = S.ID

例:找出所有教师名,他们的工资至少比 biology系某一个教师的工资高

select distinct T.name

from instructor as T, instructor as S

where T.salary > S.salary and S.dept_name = ‘biology‘;

 字符串运算

对字符串进行的最常见的操作就是使用操作符like的模式匹配,使用两个特殊的字符来描述模式:

百分号(%):匹配任意的子串

下划线(_):匹配任意一个字符

例:找出所有建筑名称中包含子串‘ryan‘的所有系名

select dept_name

from department

where building like ‘%ryan%‘;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

时间: 2024-10-14 09:15:45

数据库-第四章 SQL语句查询的相关文章

数据库 将多条SQL语句查询的内容整合成为一个元组

1.情景再现 分类信息 住户 租户 快递 亲友访问 花苑 138 25 44 89 新城 34 150 78 34 以上的一张表中,假如要分别在两个住宅小区统计各类进出的人数,进出的类型可以分为是住户,租户,快递以及亲友访问四个类型. 但是实际的表设计中,住户以及租户是属于这个小区,可以直接统计出来,但是快递以及亲友访问则需要从进出记录查找. 换言之,就是表中的每个元组的数据是从多个表中查出来的,同时可能是用四条sql语句中查询出来的.使用如下表达: ①: select t.name as co

SQLAlchemy教程-第四章-SQL常用查询的ORM写法进阶2-待完善

内容预告 别名的用法 函数的用法 分组的写法. case when的用法. exists的用法 为啥要用别名? 如果两个表的两列名字相同, 那么为了区分这两列, 必须使用别名. 如果有一列是通过运算出来的, 那么一定要给这列起个名字, 否则无法在查询结果中引用. 看别名的写法. 先把代码贴上来, 然后注释我都在代码里写了, 请大家自行阅读~ (#^.^#) from models import * # 别名 def query_with_column_alias(): emps = sess.q

sql语句查询同一表内多字段同时重复的记录 sql数据库重复记录删除

分享下用sql语句删除数据库中重复记录的方法.比如现在有一人员表 (表名:peosons) 若想将姓名.身份证号.住址这三个字段完全相同的记录查询出来select p1.* from persons p1,persons p2 where p1.id<>p2.id and p1.cardid = p2.cardid and p1.pname = p2.pname and p1.address = p2.address可以实现上述效果.几个删除重复记录的SQL语句 1.用rowid方法2.用gr

mysql第四篇--SQL逻辑查询语句执行顺序

mysql第四篇--SQL逻辑查询语句执行顺序 一.SQL语句定义顺序 SELECT DISTINCT <select_list> FROM <left_table> <join_type> JOIN <right_table> ON <join_condition> WHERE <where_condition> GROUP BY <group_by_list> HAVING <having_condition&g

[Qt教程] 第24篇 数据库(四)SQL查询模型QSqlQueryModel

导语在上一篇的最后我们讲到,Qt中使用了自己的机制来避免使用SQL语句,为我们提供了更简单的数据库操作及数据显示模型,分别是只读的QSqlQueryModel,操作单表的QSqlTableModel和以及可以支持外键的QSqlRelationalTableModel.这次我们先讲解QSqlQueryModel. 环境:Windows Xp + Qt 4.8.4+Qt Creator2.6.2 目录一.简单的查询操作二.QSqlQueryModel常用操作三.创建自定义QSqlQueryModel

sql语句查询数据库表结构信息

开发中经常用到查询指定表及其字段的信息,以下是我整理的SQL语句查询方法,供自己平时使用也提供给大家参考! 1.适用MS SQL SERVER: 1 SELECT 2 表名 = case when a.colorder=1 then d.name else '' end, 3 表说明 = case when a.colorder=1 then isnull(f.value,'') else '' end, 4 字段序号 = a.colorder, 5 字段名 = a.name, 6 标识 = c

第四章 MySQL高级查询(二)

第四章 MySQL高级查询(二) 一.EXISTS子查询 在执行create 或drop语句之前,可以使用exists语句判断该数据库对像是否存在,返回值是true或false.除此之外,exists也可以作为where语句的子查询,语法如下: SELECT --FROM 表名 WHERE  EXISTS(子查询): EXISTS关键字后面的参数是一个任意的子查询,如果该子查询没有返回行,则EXISTS子查询的结果为true,此时再执行外层查询语句.如果EXISTS子查询结果为false,此时外

Python3:sqlalchemy对mysql数据库操作,非sql语句

Python3:sqlalchemy对mysql数据库操作,非sql语句 # python3 # author lizm # datetime 2018-02-01 10:00:00 # -*- coding: utf-8 -*- ''' 数据起始日期:2015-05-08 数据库:mysql ''' import requests from bs4 import BeautifulSoup import json import pymysql import datetime import ti

【黑马Android】(04)数据库的创建和sql语句增删改查/LinearLayout展示列表数据/ListView的使用和BaseAdater/内容提供者创建

数据库的创建和sql语句增删改查 1. 加载驱动. 2. 连接数据库. 3. 操作数据库. 创建表: create table person( _id integer primary key, name varchar(20), age integer ); 添加: insert into person(name, age) values('lisi', 19); 删除: delete from person where _id = 1; 修改: update person set name =