SQL语句建表、查询(一)

1、建表
create Table Student(
Sno char(9) not null,
Sname char(20) not null,
Ssex char(2) null,
Sage smallint null,
Sdept char(20) null,
primary key (Sno)
);
create Table Course(
Cno char(4) not null,
Cname char(40) not null,
Cpno char(4) null,
Ccredit smallint null,
primary key (Cno),
foreign key(Cpno) references Course(Cno)
);
create Table SC(
Sno char(9) not null,
Cno char(4),
primary key(Sno,Cno),
foreign key(Sno) references Student(Sno),
foreign key(Cno) references Course(Cno)
);
select * from SC
2、查询
(1)向SC表中增加成绩(Grade)列,其数据类型为短整型。
alter Table SC add Grade Smallint;
(2)查询所有课程的课程号和课程名。
select Cno,Cname from Course;
(3)查询全体学生的记录。
select * from Student;
(4)查询学生表中的所有的系。
select Sdept from Student;
(5)查询全体学生的姓名、出生年份和所在的院系,并为出生年份和所在院系两列分 别起别名为sbirth,department,并将系名全部转换成小写字母
select Sname,2009-Sage sbirth,LOWER(Sdept) department from Student;
(6)求数学系学生的学号和姓名。
select Sname,Sno from Student where Sdept=‘MA’;
(7)查询所有考试成绩在80分以下的学生学号、课程号。
select Sno,Cno from SC where Grade<‘80’;
(8)查询学分在2~7之间的课程信息。
select from Course where Ccredit between 2 and 7;
(9)查询课程名为DB_Design课程的课程号和学分。
select Cno,Ccredit from Course where Cname like ‘DB_Design’;
(10) 查询没有先修课的课程号、课程名及学分。
select Cno,Cname,Ccredit from Course where Cpno is null;
(11)查询信息系学生性别为男且年龄小于20岁的学生姓名。
select Sname from Student where Sdept=‘IS’ and Ssex='男’and Sage<20;
(12)查询选修了3号课程的学生的学号及成绩,并要求对查询结果按成绩的降序排列,如果成绩相同按学号的升序排列。
select Sno,Grade from SC where Cno=‘3’ ORDER by Grade DESC ;
(13)查询课程的总数。
select COUNT(
) from Course;
(14)查询选修2号课程的学生平均成绩和最高成绩,并分别为平均成绩和最高成绩起别名为AVG,MAX。
select AVG(Grade) AVG,max(Grade)MAX from SC where Cno=‘2’;
(15)查询每个学生的选课门数,要求输出学生学号及选课的门数。
select Sno,COUNT(Cno)from SC group by Sno;
(16)查询选修了2门及以上的课程的学生学号。
select Sno from SC Group by Sno having COUNT(*)>=2;

### 如何使用SQL语句 在关系型数据库管理系统(RDBMS)中,可以通过SQL语句定义和管理数据结构。以下是关于如何使用SQL语句的具体说明。 #### SQL CREATE TABLE 语法 `CREATE TABLE` 是用于创的标准SQL命令。其基本语法如下: ```sql CREATE TABLE ( 字段1 数据类型 约束, 字段2 数据类型 约束, ... ); ``` 其中: - **名**:指定要创的新的名称。 - **字段**:指明列的名称及其对应的属性,包括数据类型、长度以及约束条件等。 #### 示例:创 `Student` 下面是个具体的例子,演示如何创个名为 `Student` 的[^3]。 ```sql create table Student( Sno char(8) primary key not null, -- 学号, 并设置为主键(primary key) 和非空(not null) Sname varchar(8) not null, -- 学生姓名 Sex char(2) default '男' not null, -- 性别,默认值为‘男’ Birth smalldatetime not null, -- 出生年月 Classno char(3) not null, -- 班级编号 Entrance_date smalldatetime not null, -- 入学日期 Home_addr varchar(40) -- 家庭地址,允许为空 ); ``` 此脚本定义了个存储学生基本信息的关系,包含了诸如学生的唯标识符 (`Sno`)、名字(`Sname`)、性别(`Sex`)以及其他个人信息等内容。每列都有相应的数据类型声明,并且某些列还附带了些额外的要求或限制,比如主键、不可为空或者设定默认值等等[^3]。 #### 添加更多复杂性——外键与复合主键 当涉及到多张相互关联格的时候,则可能需要用到更复杂的概念如外键(Foreign Key) 或者组合起来形成单记录身份验证机制的多重主键(Multiple Primary Keys)[^5]。 ##### 外键示例 继续上面的例子,在另个叫做 `Sc` 的选课情况里加入对外部资源(Student,Course)链接的支持: ```sql -- 创SC create table Sc( Sno char(8) not null, -- 学号 Cno char(3) not null, -- 课程号 primary key(Sno,Cno), -- 设置Sno和Cno作为联合主键 foreign key(Sno) references Student(Sno), -- 立到Student上的外键连接 foreign key(Cno) references Course(Cno), -- 立到Course上的外键连接 Grade tinyint check (Grade >=0 and Grade <=100) -- 成绩范围限定于0至100之间 ); ``` 在这个案例当中,我们不仅设置了两个独立字段分别指向其他两张的关键部分,而且还将它们共同构成了种新型形式的整体索引体系—即所谓的“双重主键”。 #### 使用Navicat或其他GUI工具辅助操作 除了手动编写SQL代码之外,还可以借助像Navicat这样的图形化界面应用程序来进行更加直观便捷的操作过程。这些软件通常提供拖拽式的选项卡布局设计模式,使得即使是初学者也能够轻松完成从零构整个项目框架的任务流程[^1]。 --- ### 问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值