MySQL学时和学分 sql学分怎么表示

您所在的位置:网站首页 学分用英语怎么写 MySQL学时和学分 sql学分怎么表示

MySQL学时和学分 sql学分怎么表示

2024-06-29 07:12| 来源: 网络整理| 查看: 265

SQL语法及用法总结学生选课数据库SCT:学生:学号S#,姓名Sname,性别Ssex,年龄Sage,所属系别D#,班级Sclass

Student(S# char(8)),Sname char(10),Ssex char(2),Sage integer,D# char(2),Sclass char(6))

院系:系别D#,系名Dname,系主任Dean

Dept(D# char(2),Dname char(10),Dean char(10))

课程:课号C#,课名Cname,教师编号T#,学时Chours,学分Credit

Course(C# char(3),Cname char(12),Chours integer,Credit float(1),T# char(3))

教师:教师编号T#,教师名Tname,所属院系D#,工资Salary

Teacher(T# char(3),Tname char(10),D# char(2),Salary float(2))

选课:学号S#,课程C#,成绩Score

SC(S# char(8),C# char(3),Score float(1))

建立数据库定义数据库和表(使用DDL),向表中追加元组(使用DML)DDL:Data Definition Language

1.创建数据库(DB)–create database

2.创建DB中的Table(定义关系模式)–Create Table

创建Database

数据库(Dstabase)是若干具有相互关联关系的Table/Relation的集合

数据库可以看作是一个集中存放若干个Table的大型文件

create database 的简单语法形式:

create database 数据库名;创建Table

create table 简单语法形式:

Create table 表名(列名 数据类型【Primary key|Unique】【Not null】【,列名 数据类型 【Not null】,…】);

Eg.定义学生表 Student

create table Student (S# char(8) not null,Sname char(10),Ssex char(2),Sage integer,D# char(2),Sclass char(6));

DML:Data Manipulation Language

1.向Table中追加新的元组:Insert

2.修改Table中某些元组中的某些属性的值:Updata

3.删除Table中的某些元组Delete

4.对Table中的数据进行 各种条件的检索:Select

向表中追加元组

insert into 简单的语法形式:

insert into 表名【(列名【,列名】…】values(值【,值】,…);

注意:

1.values后面值的排序,须与into子句后面的列名排列一致

2.若表名后的所有列名省略,则values后的值的排序,须与该表存储中的列排列一致。

eg.追加学生表中的元组

insert into Course

values(‘001’,‘数据库’,40,6,‘001’);

insert into Course(Cname ,C#,Credit,Chours,T#)

values(‘001’,‘数据库’,6,40,‘001’);

Select的简洁语法形式:Select 列名【【,列名】…】From 表名【Where 检索条件】;

语义;从表名所给出的表中,查询出满足检索条件的元组,并按给定的列名及顺序进行投影显示。

eg.检索教师表中所有工资少于1500或者工资大于2000元并且是03系的教师姓名

select Tname

from Teacher

where Salary2000 and D#=‘03’;

select Tname

from Teacher

where (Salary2000) and D#=‘03’;

eg.求或者学过001号课程,或者学过002号课程的学生的学号

select S#

from SC

where C#=‘001’ or C#=‘002’;

结果唯一性问题

关系模型不允许出现重复元组,但现实DBMS,却允许出现重复元组,但也允许无重复元组。

在Table中要求无重复元组是通过Primary key 或 Unique 来保证的;

而在检索结果中要求无重复元组,是通过DISTINCT保留字的使用来实现的。

eg.在选课表中,检索成绩大于80分的所有学号

select DISTINCT S#

From SC

Where Score>80;

结果排序问题:

DBMS可以对检索结果进行排序,可以升序排列,也可以降序排列。

select 语句中结果排序是通过增加order by 子句实现的

order by 列名【asc|desc】

意义为检索结果按指定列名进行排序,若后面跟asc或省略,则为升序;若后跟desc,则为降序。

EG.按学号由小到大的顺序显示出所有学生的学号及姓名

select S#,Sname

from Student

order by S#;

EG.检索002号课大于80分的所有同学学号并按成绩由高到低的顺序显示

select S#

from SC

where C#=‘002’ and Score>80

order by Score desc;

模糊查询:

比如检索姓张的学生,检索张某某;这类问题,Select 语句是通过在检索条件中引用运算符like来表示的

含有like运算符的表达式

列名【not】like“字符串”找出匹配给定字符串,其中给定字符串中可以出现%,_等匹配符。匹配规则:% 匹配零个或多个字符_ 匹配任意单个字符\ 转义字符,用于去掉一些特殊字符的特定含义,使其被作为普通字符对待,如“%”去匹配字符%,用 \ 去匹配字符

EG.检索所有姓张的学生学号及姓名

select S#,Sname

from Student

where Sname like “张%”;

MySQL学时和学分 sql学分怎么表示_元组 EG.按’001’号课成绩由高到底顺序显示所有学生的姓名(二表链接)

select Sname

from Student,SC

where SC.S#=Student.S# and SC.C#=‘001’

order by Score DESC;

多表连接时,如两个表的属性名相同,则需采用表名.属性名方式来限定该属性是属于哪个表

EG.按’数据库’课成绩由高到低顺序显示所有同学姓名(三表连接)

select Sname

from Student,SC,Course

where SC.S#=Student.S# and SC.C#=Coures and Course.Cname=‘数据库’

order by Score DESC;

重名处理

连接运算涉及到重名的问题,如两个表中的属性重名,连接的两个表重名(同一表的连接)等,因此需要使用别名以便区别

select 中采用别名的方式

Select 列名 as 列别名【【,列名 as 列别名】…】From 表名 1 as 表别名 1,表名 2 as 表别名 2,…Where 检索条件;

上述定义中的 as 可以省略

当定义了别名后,在检索条件中可以使用别名来限定属性

MySQL学时和学分 sql学分怎么表示_MySQL学时和学分_02

EG.求有薪水差额的任意两位教师

Select T1.Tname as Teacher1,T2.Tname as Teacher2

from Teacher T1,Teacher T2

Where T1.Salary>T2.Salary;

EG.求年龄有差异的任意两位同学的姓名

Select S1.Sname as Student1,S2.Sname as Student2

from Student S1,Student S2

where S1.Sage>S2.Sage;

EG.求’001’号课程有成绩差的任意两位同学

select sc1.S#,sc2.S#

from SC sc1,SC sc2

where sc1.C#=sc2.C# and C#=‘001’;

EG.求既学过"001"号课又学过"002"号课的所有学生的学号

select sc1.S#

from SC sc1,SC sc2

where sc1.S#=sc2.S# and sc1.C#=‘001’ and sc2.C#=‘002’ ;

批元组新增:

新建Table:St(S#,Sname),将检索到的满足条件的同学新增到该表中

Insert into St(S#,Sname) select S#,Sname From Student where Sname like ‘%伟’; Insert into St(S#,Sname) Select S#,Sname From Student Order By Sname;

EG.新建Table:St(S#,Sname,avgScore),将检索到的同学的平均成绩新增到该表中

insert into St(S#,Sname,avgScore) select S#,Sname,Avg(Score) From Student,SC Where Student.S#=SC.S# Group by Student.S#;元组删除Delete命令:删除满足指定条件的元组Delete From 表名 【Where 条件表达式】;

如果Where条件省略,则删除所有的元组。

EG.删除SC表中所有元组

Delete from SC;

EG.删除自动控制系的所有同学

Delete from SC where D# in

(Select D# From Dept Where Dname=‘自动控制’ );

EG.删除有四门不及格课程的所有同学

Delete From Student Where S# in

(Select S# From SC where Score=4);

元组更新Update命令:用指定要求的值更新指定表中满足指定条件的元组的指定列的值Update 表名Set 列名=表达式 | (子查询)【【,列名=表达式 | (子查询)】…】【Where 条件表达式】;

如果Where 条件省略,则更新所有的元组。

EG.将所有教师工资上调5%

update Teacher

set salary=salary*1.05;

EG.将所有计算机系的教师工资上调5%

update Teacher

set salary=salary*1.1

where D# in (Select D# From Dept Where Dname = ‘计算机’);

EG.当某同学001号课的成绩低于该课程的平均成绩时,将该同学该门课成绩提高5%

update SC

set Score = Score*1.05

where C# =‘001’ and Score



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3