关系数据库之标准语言SQL

一、数据的定义

       建表、改表、删表

      create table 表名(

     CHECK (写入用户定义约束条件)

     PRIMARY KEY(指明哪个属性当主键),

     FOREIGN KEY(指明外键) REFERENCES 被参考表名(属性名),

    CHECK (写入用户定义约束条件)

ALTER包括的操作有三种:增加字段(增字段)、改变类型(改类型)、删除约束(删约束);

增字段:ALTER TABLE 表名 ADD 属性名 类型(长度)约束;

改类型:ALTER TABLE 表名 MODIFY 属性名 类型;

删约束:ALTER TABLE 表名 DROP 约束(属性名);

 删表:DROP TABLE 表名;

建立与删除索引

CREATE UNIQUE/CLUSTER INDEX 索引名 ON 表名(属性名 ASC/DESC,...);

这里UNIQUE/CLUSTER表示是唯一值索引还是聚簇索引,缺省值是UNIQUE,对于CLUSTER只用记住每张表只能建立一个聚簇索引,并且聚簇只适用于不常更新的属性

删除索引

DROP INDEX 索引名

查询

单表查询

SELECT [ALL/DISTICNT] 属性名,

FROM 表名

WHERE 查询条件(这里门道很多)

ORDER BY 属性名 ASC/DESC

GROUP BY 属性名;

HAVING 条件;

连接查询

等值与非等值连接

SELECT Student.*,SC.*

FROM Student,SC

WHERE Student.Sno=SC.Sno;

消除重复列后就是自然连接。

  • 非等值连接

不是 = 的连接操作就是非等值连接。

示例:查询选课信息,并显示成绩级别

 

SELECT  Sno,Cno,Grade,Stage

FROM    Sc,  Gstage

WHERE  Grade BETWEEN  Low  AND  High;

自身连接

一个表与其自己进行连接,称为表的自身连接。

示例:查询每一门课的先行课名

 

  SELECT  First.Cname  课名, Second.Cname  先行课名

   FROM  Course  First,course  Second

   WHERE First.Cpno = Second.Cno;

输出:             

          课名                先行课名

         数据库              数据结构

         信息系统         数据库

注:需要给表起别名以示区别如示例中的First和Second;由于所有属性名都是同名属性,因此必须使用别名前缀,如示例中的First.Cname和Second.Cname。

 

 

  • ALL查询满足条件的元组

SELECT ALL Sno FROM SC;(SELECT Sno FROM SC;)

 

  • DISTINCT消除取值重复的行

SELECT DISTINCT Sno FROM SC;

 

 查询满足条件的元组

查询满足指定条件的元组可以通过WHERE字句实现。WHERE字句常用的查询条件如下:

 

示例:

查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别。

SELECT Sname,Ssex

FROM  Student

WHERE Sdept IN ( 'IS','MA','CS' );

查询既不是信息系、数学系,也不是计算机科学系的学生的姓名和性别。

SELECT Sname,Ssex

FROM Student

         WHERE Sdept NOT IN ( 'IS','MA','CS' );

 

  对查询结果排序

排序使用ORDER BY子句,可以按一个或多个属性列排序,升序关键字是ASC,降序关键字是DESC,缺省值为升序。当排序列含空值时,ASC:排序列为空值的元组最后显示;DESC:排序列为空值的元组最先显示 。

使用集函数

 查询学生总人数。

    SELECT COUNT(*)

    FROM  Student;

计算总和(对非空列)

    SUM([DISTINCT|ALL] <列名>)  

计算平均值(对非空列)

     AVG([DISTINCT|ALL] <列名>)

 

 

 

对查询结果分组

使用GROUP BY子句分组,用来细化集函数的作用对象

示例:求各个课程号及相应的选课人数。

     SELECT Cno,COUNT(Sno)

     FROM    SC

     GROUP BY Cno;

示例:查询每个系男女生人数。

     SELECT Sdept, Ssex, COUNT(*)

     FROM    Student

     GROUP BY Sdept, Ssex;

 

 复合条件连接

WHERE字句中可以有多个连接条件,称为复合条件连接

左外连接

右外连接

全外连接

 嵌套查询

 

嵌套查询概述

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

 

 

集合查询

elect语句的查询结果是元组的集合,所以多个select语句的结果可进行集合操作。集合操作主要包括并操作(union)、交操作(intersect)和差操作(except)。注意:参加集合操作的各查询结果的列数必须相同;对应项的数据类型也必须相同。

 

 数据更新

插入单个元组

 修改数据

 删除数据

 

   视图

定义视图

语句格式:

       CREATE  VIEW  <视图名>  [(<列名>  [,<列名>]…)]

           AS  <子查询>

       [WITH CHECK OPTION];

 

   删除视图

格式:

         DROP VIEW <视图名> [CASCADE];

视图删除后视图的定义将从数据字典中删除。如果该视图上还导出了其他视图,则使用CASCADE级联删除语句,把该视图和由它导出的所有视图一起删除。

基本表删除后,由该基本表导出的所有视图没有删除,但均已无法使用了。

 

 查询视图

更新视图

视图的作用

 简化用户的操作

使用户能以多种角度看待同一数据

提供了一定程度的逻辑独立性

参考:https://www.cnblogs.com/zhouyeqin/p/7395037.html

https://www.jianshu.com/p/acc269bb91b6

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值