数据库(王珊版本)复习

1.数据定义

1.数据定义:CREATE\DROP(创建\删除)SCHEMA\TABLE\VIEW\INDEX
其中TABLE和INDEX支持ALTER(修改)
2.定义方式
(1)模式
创建模式:CREATE SCHEMA <模式名> AUTHORIZATION <用户名> ,模式名可缺省,可以在创建模式的时候创建表、视图、索引等在这里插入图片描述
删除模式 :DROP SCHEMA <模式名> <CASCADE\RESTRICT> CASCADE(级联)删除模式时同时把模式中的所有数据库对象删除 RESTRICT(限制)如果模式中有数据库对象,那么拒绝删除语句的执行
(2)基本表
创建表:
在这里插入图片描述
在这里插入图片描述
每一个表都要属于某个模式,一个模式包含若干个基本表,所以定义表时需要定义它所属的模式,定义属于"S-T"模式的表Student
方法一:CREATE TABLE “S-T”.Student(……);
方法二:创建模式的同时创建表
方法三:设置路径,搜索路径的当前默认值是 $user,PUBLIC ,含义是优先搜索与用户同名的模式名,若无,则默认表无模式,我们只要修改 SET serch_path TO “S-T”,PUBLIC ,然后正常建表,这个表就会属于“S-T”模式
修改表:
在这里插入图片描述
(3)索引:加快查询速度,数据库管理员和表的属主可以建立,系统自动维护和使用、
建立:在这里插入图片描述
例子:CREATE UNIQUE INDEX stu ON Student(Sno ASC ,Cno DES)
修改:
在这里插入图片描述
**删除:**直接DROP 就行,因为他是附加的,不用限制或级联

2.数据查询

在这里插入图片描述
SELECT 指出列,FROM 表的名字 WHERE 约束条件表达式 GROUP BY \HAVING 对中间结果进行分组计算一些结果 ORDER BY 对结果进行排序 在这里插入图片描述
1.能在SELECT中放“虚列”如2020-Sage算出来的就是出生年份
2.用小写字母表示一列:LOWER()函数,如SELECT LOWER(Sdept) FROM Student;
3.使用别名改变查询结果的列标题 SELECT Sname NAME FROM Student ;在列后面加空格写上别名即可
4.如果没有指定DISTINCT,则缺省为ALL,DISTINCT可以消除重复的结果,如下图在这里插入图片描述
在这里插入图片描述
5.基本查询条件
在这里插入图片描述
6.字符匹配 LIKE ‘<匹配串>’ 匹配串可以是完整的字符串,可以有%(代表任意长度,长度可为0)例如a%b就是以a开头以b结尾的串,可以有“”,代表单个字符如a_b;;;如果要查询的字符串里面有“”怎么办呢,后面加上转义字符
7.涉及空值的查询 IS NULL \IS NOT NULL (IS不能用=代替)
8.多重条件 AND 和 OR (AND优先级更高,但可以用括号改变优先级)
9.ORDER BY 进行排序 其中 ASC DESC分别为升序和降序
10.聚集函数:一般与GROUP BY一起用
在这里插入图片描述
11.GROUP BY

例:
(1)查询计算机科学系全体学生名单
SELECT Sname FROM Student WHERE Sdept =‘Cs’;
(2)查询所有年龄在20岁以下的学生姓名及年龄
SELECT Sname,Sage FROM Student WHERE Sage <20;
(3)查询考试成绩有不及格的学生的学号
SELECT DISTINCT Sno FROM SC WHERE Grade<60;(可能有多门课不及格,所以使用DISTINCT)
(4)查询年龄在20-23岁的姓名、系别和年龄
SELECT Sname,Sdept ,Sage FROM Student WHERE Sage BETWEEN 20 AND 23;
(5)查询所有姓刘的学生的姓名、学号和性别
SELECT Sname,Sno,Ssex FROM Student WHERE Sname LIKE ‘刘%’;
(6)查询……姓刘且两个字的学生……
…… LIKE ‘刘_’;
(7)查询以DB_开头,且倒数第二个字符为i的课程详细情况
SELECT * FROM Course WHERE Cname LIKE ‘DB_%i_’ ESCAPE ‘’ (表明了\是转义字符)
(8)查询计算机系年龄在20岁以下的学生姓名
SELECT Sname FROM Student WHERE Sdept =‘CS’ AND Sage<20;
(9)查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列
SELECT Sno,Grade FROM SC WHERE Cno=‘3’ ORDER BY Grade DESC;
(10)排序先后问题
SELECT * FROM Student ORDER BY Sdept ASC,Sage DESC;(先出现先排序,缺省值默认为升序)
(11)查询学生总人数
SELECT COUNT(*) FROM Student;
(12)查询选修课程的学生人数
SELECT COUNT(DISTINCT Sno) FROM SC;
(13)计算1号课程的学生平均成绩
SELECT AVE(Grade) FROM SC WHERE Cno=‘1’;

二级目录

二级目录

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值