数据库sql语句(视图的创建)

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 数据库sql语句(视图的创建)

例题:


建表:要注意各表之间的索引联系,建表先后顺序很重要,不然建不了,例如先建dept,在建其他表,先在dept插入数据,再在其他表插入数据


(1)


5d205e78e07846cf89abd764a1837a9c.png

 create table week8student(SNO int primary key,
 SNAME char(8) not null unique,SEX char(2),
 DEPTNO int foreign key references week8dept(DEPTNO)) 

(2)


f50a6d2c8237474a99566827dfc5414a.png

 create table week8course(CNO int,
 CNAME char(20) not null,TNO int,CREDIT int,
 primary key(CNO,TNO),
 foreign key (TNO) references week8teacher(TNO)) 

(3)


fcbab62a79774e81a3fcae3830cdc83e.png

 create table week8sc(SNO int,CNO int,GRADE int,
 primary key(SNO,CNO),
 foreign key (SNO) references week8student(SNO))

(4)

8d64f80a1c6a4096b88f8788b63fd731.png

 create table week8teacher(TNO int primary key,
 TNAME char(8) not null, DEPTNO int
 foreign key references week8dept(DEPTNO)) 

(5)

d6bb6fc2d426462bb2b0ebe48d04525a.png

 create table week8dept(DEPTNO int primary key,
 DEPTNAME char(20) not null) 

插入数据如下图

1d1683dc65f741eeba53ae550d650b08.png


sql语句:


Student表中加入属性SAGE(INT)


alter table week8student add sage int


Student表中的属性SAGE类型改为SMALLINT


alter table week8student alter column sage smallint


关于alter语句的总结


1:向表中添加字段


Alter table [表名] add [列名] 类型


2: 删除字段


Alter table [表名] drop column [列名]


3: 修改表中字段类型 (可以修改列的类型,是否为空)


Alter table [表名] alter column [列名] 类型


4:添加主键


Alter table [表名] add constraint [ 约束名] primary key( [列名])


5:添加唯一约束


Alter table [表名] add constraint [ 约束名] unique([列名])


6:添加表中某列的默认值


Alter table [表名] add constraint [约束名] default(默认值) for [列名]

7:添加约束


Alter table [表名] add constraint [约束名] check (内容)


8:添加外键约束


Alter table [表名] add constraint [约束名] foreign key(列名) referencese 另一表名(列名)


9:删除约束


Alter table [表名] drop constraint [约束名]


10:重命名表


exec sp_rename ‘[原表名]’,’[新表名]’


11:重命名列名


exec sp_rename ‘[表名].[列名]’,’[表名].[新列名]’


12:删除主键,以及主键上的索引


alter table table_name drop constraint clusteredName


Course表上建立关于CNO降序的唯一索引


create unique index cno_index on week8course(CNO desc)


查询数据结构这门课的平均成绩


 select avg(sc.GRADE)'数据结构的平均成绩' 
 from week8sc sc,week8course c
 where sc.CNO = c.CNO and c.CNAME='数据结构'
 group by sc.CNO


51bc3237c404470e831c7fcee82378ba.png


为计算机系的学生记录建立一个视图CS_STUDENT(create view....as)

补充:

create table:建表

create index:建立索引

 create view CS_STUDENT as
 select s.SNO,s.SNAME,s.SEX,s.DEPTNO,d.DEPTNAME
 from week8student s,week8dept d
 where s.DEPTNO=d.DEPTNO and d.DEPTNAME='计算机'


利用视图,列出所有计算机学生的姓名,选课名和成绩


 select cs.SNAME 姓名,c.CNAME 课程名,sc.GRADE 成绩
 from CS_STUDENT cs,week8sc sc,week8course c
 where c.CNO=sc.CNO and cs.SNO = sc.SNO


6c879d6cdc034350aa0eb138c673c904.png


查询各个系的学生人数


 select count(s.DEPTNO)'人数',d.DEPTNAME'系名'
 from week8student s,week8dept d
 where s.DEPTNO=d.DEPTNO group by s.DEPTNO,d.DEPTNAME


584d30d303aa437cbacee47fa7ffb55e.png

查询选修总学分在 10 学分以上的学生姓名

 select s.SNAME 选修总学分在10分以上
 from week8course c,week8sc sc,week8student s
 where c.CNO=sc.CNO and s.SNO=sc.SNO 
 group by s.SNAME 
 having sum(c.CREDIT)>10

499be1c38c634427a937721e26dae6a4.png


查询各门课程取得最高成绩的课程号、学生姓名及其成绩


 select m.CNO,s.SNAME,m.maxG
 from week8sc sc2,week8student s,
 (select sc1.CNO,max(sc1.GRADE)'maxG'
 from week8sc sc1 group by sc1.CNO)m
 where m.CNO=sc2.CNO and sc2.GRADE=m.maxG and sc2.SNO=s.SNO


其中构建了一个新表m,里面包含的元素有cno,maxG


ca50992734854065adb2a4917151b6f9.png


查询选修了学号为 1002 的学生选修的全部课程的学生学号

 select distinct SNO from week8sc sc1
 where not exists(
   select * from week8sc sc2
   where sc2.SNO='1002'
   and not exists(
     select * from week8sc sc3
     where sc3.SNO = sc1.SNO
     and sc3.CNO = sc2.CNO))

6cf28fb5b99d4b56aa66393adf7668d4.png


查询选修了张星老师开设的全部课程的学生姓名(双重否定,没有哪一门课,张星老师开设了,学生x没有选)

select s.SNAME from week8student s
 where not exists (
   select * from week8course c
   where c.TNO in(
     select t.TNO from week8teacher t
     where t.TNAME='张星'
     and not exists(
       select * from week8sc sc
       where sc.SNO=s.SNO and sc.CNO=c.CNO))
 )


a2ac649201cb464a932c53503329cfa9.png


查询选修张星老师数据结构课的学生的姓名和成绩

 select s.SNAME,sc1.GRADE from week8sc sc1,week8student s
 where sc1.CNO in 
 (select c.CNO from week8teacher t,week8course c
 where t.TNAME='张星' and t.TNO=c.TNO and c.CNAME='数据结构')
 and sc1.SNO = s.SNO

f14cffabfd404f68a849eda9618344c1.png


将张星老师数据结构课的学生成绩全部加2


 update week8sc set GRADE = GRADE+2 where SNO in (
 select sc1.SNO from week8sc sc1,week8student s
 where sc1.CNO in 
 (select c.CNO from week8teacher t,week8course c
 where t.TNAME='张星' and t.TNO=c.TNO and c.CNAME='数据结构')
 and sc1.SNO = s.SNO)


两个条件:张星老师,数据结构


从内往外看

select sc1.SNO from week8sc sc1,week8student s
 where sc1.CNO in 
 (select c.CNO from week8teacher t,week8course c
 where t.TNAME='张星' and t.TNO=c.TNO and c.CNAME='数据结构')
 and sc1.SNO = s.SNO


检索课程名称为数据结构,老师为张星的课程号


select sc1.SNO from week8sc sc1,week8student s
 where sc1.CNO in 
 (select c.CNO from week8teacher t,week8course c
 where t.TNAME='张星' and t.TNO=c.TNO and c.CNAME='数据结构')
 and sc1.SNO = s.SNO

检索该课程号对应的学生学号,就是上这门课的学生学号


update week8sc set GRADE = GRADE+2 where SNO in (
 select sc1.SNO from week8sc sc1,week8student s
 where sc1.CNO in 
 (select c.CNO from week8teacher t,week8course c
 where t.TNAME='张星' and t.TNO=c.TNO and c.CNAME='数据结构')
 and sc1.SNO = s.SNO)


最后为这个学号执行grade+2操作

99d4b8c697594020b5e341ce0f8672ae.png


再次查询选修张星老师数据结构课的学生的姓名和成绩


select s.SNAME,sc1.GRADE from week8sc sc1,week8student s where sc1.CNO in  (
select c.CNO 
from week8teacher t,week8course c 
where t.TNAME='张星' and t.TNO=c.TNO and c.CNAME='数据结构') 
and sc1.SNO = s.SNO


删除马朝阳同学的所有选课记录(delete from)


 delete from week8sc where SNO in
 (select SNO 
 from week8student 
 where SNAME='马朝阳')
相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
20小时前
|
SQL 存储 Java
SQL数据库学习指南:从基础到高级
SQL数据库学习指南:从基础到高级
|
1天前
|
SQL 弹性计算 数据管理
数据管理DMS产品使用合集之sql server实例,已经创建了数据库,登录时提示实例已存在,该怎么处理
阿里云数据管理DMS提供了全面的数据管理、数据库运维、数据安全、数据迁移与同步等功能,助力企业高效、安全地进行数据库管理和运维工作。以下是DMS产品使用合集的详细介绍。
9 1
|
6天前
|
SQL XML 数据库
后端数据库开发高级之通过在xml文件中映射实现动态SQL
后端数据库开发高级之通过在xml文件中映射实现动态SQL
14 3
|
6天前
|
SQL XML Java
后端数据库开发JDBC编程Mybatis之用基于XML文件的方式映射SQL语句实操
后端数据库开发JDBC编程Mybatis之用基于XML文件的方式映射SQL语句实操
24 3
|
6天前
|
SQL druid Java
传统后端SQL数据层替代解决方案: 内置数据源+JdbcTemplate+H2数据库 详解
传统后端SQL数据层替代解决方案: 内置数据源+JdbcTemplate+H2数据库 详解
12 1
|
8天前
|
SQL 数据库
零基础学习数据库SQL语句之操作表中数据的DML语句
零基础学习数据库SQL语句之操作表中数据的DML语句
12 0
零基础学习数据库SQL语句之操作表中数据的DML语句
|
2天前
|
关系型数据库 MySQL 数据库
深入OceanBase分布式数据库:MySQL 模式下的 SQL 基本操作
深入OceanBase分布式数据库:MySQL 模式下的 SQL 基本操作
|
6天前
|
SQL Java 关系型数据库
Java与数据库连接技术JDBC关键核心之PreparedStatement以及SQL注入演示解决和原理
Java与数据库连接技术JDBC关键核心之PreparedStatement以及SQL注入演示解决和原理
10 0
|
8天前
|
SQL 前端开发 关系型数据库
零基础学习数据库SQL语句之查询表中数据的DQL语句
零基础学习数据库SQL语句之查询表中数据的DQL语句
9 0
|
8天前
|
SQL 关系型数据库 MySQL
零基础学习数据库SQL语句之定义数据库对象的DDL语句
零基础学习数据库SQL语句之定义数据库对象的DDL语句
13 0