数据查询

本文深入讲解了SQL查询的基础语法及高级用法,包括SELECT、WHERE、GROUP BY等子句的应用,以及如何使用嵌套查询、外连接等进阶功能。同时介绍了如何处理空值、进行字符匹配等常见需求。

              

格式:SELECT [ALL | DISTINCT]<目标列...>

      FROM <表名或视图名><表名或视图名>...

  WHERE <条件表达式>

  GROUP BY<列名> HAVING <条件表达式>

  ORDER BY<列名2>[ASC | DESC]

操作:

SELECT 子句目标列表达式可以是字符串常量或者表达式,或者函数。

        SELECT Sname ’Year of Birth’ ,2004-SageLOWER(Sdept) FROM Student ;

        改变查询结果列标题通过在列后面定义别名的方式:格式:列名  别名

        当投影到指定的某些列上后,可以用DISTINCT消除某些重复列。

WHERE

        确定范围BETWEEN ...ANDNOT BETWEEN ...AND

        确定集合INNOT IN

                SELECT SnameSsex FROM Student WHERE Sdept IN(‘CS’,’MA’,’IS’)

        字符匹配[NOT] LIKE ‘<字符串>’ [ESCAPE ‘<换码字符>’]        %表示任意长度的字符串,_表示任意单个字符

                换码字符-SELECT CnoCcredit FROM Course WHERE Cname LIKE ‘DB\_’ ESCAPE ‘\’;

                ESCAPE’\’表示’\’为换码字符。这样匹配串中紧跟在“\”后面的字符“_”不在具有通配符的含义,转义为普通字符。

        涉及空值的查询IS NULLIS NOT NULL

        其次AND OR

ORDER BY 列名 ASC | DESC

        SELECT Sno FROM SC GROUP BY Sno HAVING COUNT(*)>3

外连接

        SELECT StudnetSnoSnameSsexSdeptCnoGrade

        FROM  Student LEFT [OUT] JOIN IN SC ON (Student.Sno = SC.Sno)

        左连接回列出左边关系中所有的元组。

嵌套查询:

  将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件的查询称为嵌套查询。

带有IN谓词的子查询

          SELECT Sname FROM Student WHERE Sno IN(SELECT Sno FROM SC WHERE Cno)

带有比较运算符的子查询:

          SELECT SnoSnameSdept FROM Student WHERE Sdeot=(SELECT Sdept FROM Student WHERE Sname=’刘晨’)

相关子查询:

          例:找出每个学生超过他选秀课程平均成绩的课程号

          SELECT SnoCno FROM SC x  WHERE Grade >= (SELECT AVG(Grade) FROM SC y WHERE y,Sno=x,Sno);

          在内层查询中查那个学生的平均成绩由外层决定。

其他:

插入操作:插入子查询结果

INSERT INTO Dept_age(Sdept,Avg_age) SELECT Sdept ,AVG(Sage) FROM Student GROUP BY Sdept;

修改数据:

UPDATE Student SET Sage = Sage+1;

UPDATE SC SET Grade=0 WHERE 子查询

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值