数据库(三)关系数据库标准语言SQL(1)

SQL的概述

1.综合统一

综合了定义语言DDL、操作语言DML、控制语言DCL.

2.高度非过程化

只需提出做什么,无需指明怎么做。

3.面向集合的操作方式

4.以同一种语法结构提供多种使用方式

SQL既是独立语言,又是嵌入式语言。

5.语言简洁,方便使用



数据定义

学生表
create table Student
    (Sno char(9) primary key,    主码
     Sname char(20) unique,      取值唯一
     Ssex char(2),
Sdept chat(20) Sage smallint, );

课程表




create table Course
    (Cno char(4) primary key,
      Cname char(40) not null, 非空值
      Cpne char(4),
      Ccredit smallint,
      foreign key(Cpno) referances Course(Cno) 外码
     );
学生选课表
create table SC
    (Sno char(9),
     Cno char(4),
     Grade smallint,
     primary key (Sno,Cno), 主码由两个属性构成
     foreign key (Sno) referance Student(Sno), 外码及参照
     foreign key (Cno) referance Course(Cno),
    )

修改表
alter table Student add ruxueshijan date; 加入入学时间列,类型为date
alter table Student alter column Sage int; 将原来年龄列的类型由char*改为int
alter table Coures add unique(Cname); 将课程名增加取值唯一的约束




删除表
drop table Student cascade; 无限制删除,删除所有索引、触发器、引用该表的视图和表。
drop table Student restrict; 有限制删除
索引
create index [唯一unique][聚簇cluster]<索引名> on <表名>(属性名,[升序asc(默认)][降序desc])
cerate unique index SCno on SC(Sno asc,Cno desc)

数据查询

单表查询

select中选项

查询经过计算的值并重命名(用空格隔开)
select Sname, 2014-Sage birthday from Student;
改大小写
lower(属性名)
去重
[所有行all(默认)][去重distinct],作用于所有目标列

where中选项

1.比大小  
 =,>,<,>=,<=,!=,<>,!>!<
2.确定范围
 between ...and.... 包括端点值
3.确定集合
select Sname from Student where Sdep not  in ('CS','MA');  查询院系不为cs和ma的学生姓名
4.字符匹配
where Sname like '刘%';  姓刘
where Sname like '刘_ _';  姓刘且全名三字
5.确定空值
where Grade is (not) null;
6.多重条件
and 优先级高于or ,可用小括号()改变优先级

集函数

计数count   求和sum    平均值avg    最大max   最小min
对列的集操作,可加入上述去重
只能用于select 和分组后的having语句

分组

group by分组 having限定
select Sno from SC where Score>90 group by Sno having count(*)> 3; 选出选了三门以上课且有一门课高于90分的学生学号
选出选了三门以上课且所有课都及格的学生的学号
select Sno from SC group by Sno having(min>=60 and count(*)>=3 )
选出选了三门以上课且三门以上及格的学生的学号
select Sno from SC where Grade>=60 group by Sno having( count(*)>=3 );












评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值