医药数据库系统原理与应用3(SQL语言)1

1.创建数据库     create database 数据库名

数据库撤销     drop database 数据库名

2。基本表的创建

create table Doctor(
dName char(10)primary key,//主键
Title char(10),
Department char(10),
Assistant char(6));

create table Patient(
pID char(6)primary key,//主键
pName char(10),
Sex char(2),
job char(30),
Tel char(12),
Birth Datetime,
check(Sex in('男','女'))//check约束
);
create table CureFee(
pID char(6)NOT NULL,
dID char(6)NOT NULL,
Fee Int check(Fee>0),
primary key(pID,dID),//主键也可以这样定义
foreign key(pID)references Patient(pID),
foreign key(dID)references Doctor(dID)//外键
);

使用create table定义一张新表后,只是建立了一个无记录的空表结构。

基本表删除

drop table 表名  cascade/restrict

当选用cascade时,在删除表时,该表中的数据、表本身以及该表上建立的索引和视图全部删除;

当选用restrict,只有在清空表中记录,以及删除在该表上建立的索引和视图后,才能执行drop操作,删除一个空表,否则拒绝删除。

drop table Doctor;

基本表的修改

alter table 表名

add 新列名 数据类型 完整性约束

add constraint 约束名 完整性约束

drop constraint 约束名

drop column 列名  [cascade/restrict]

alter column 列名 数据类型

add子句用于增加新列和新的完整性约束条件;

drop子句用于删除已有的列和已有的完整性约束条件;

alter column子句用于修改已有列的定义;

alter table Docter
add sex char(2) check(sex in('男','女'))
//在Docter表中增加性别列


alter table Doctor
drop column sex;
//删除Docter中的性别列


alter table CureFee
add constraint ck_curefee check(Fee>0)
//为CureFee表增加约束,要求就诊费用列必须大于0

索引的建立和删除

create index语句

unique(唯一性索引)、clustered(聚集索引)、nonclustered(非聚集索引)

create unique index Cin
on CureFee(dID ASC,pID DESC);
//在表CureFee将dID升序,pID降序,建立唯一索引Cin


drop index Cin on CureFee
//删除Cin索引

单表查询

select 语句

select Department,dName,Title
from Doctor
//查询所有医生的科室、姓名、职称

select * from Doctor
//查询所有医生详细记录

year()函数用于返回某个日期的年份

getdate()函数用于返回当前日期

lower()变小写字母

select distinct Department
from Doctor
//去除重复行

select * 
from Patient
where Birth between '2010-01-01' and '2014-01-01';
//where条件语句,between and 指定范围
where Department in('内科')
//查找科室为内科的

like 用来字符串匹配,a%b表示以a开头,以b结尾的任意长度字符串 

%表示任意长度,_表示任意单个字符,a_b表以a为开头,b为结尾,长度为三的字符串

select *
from Patient
where eMail like 'his\_12@qq.com'escape'\';
//查询邮箱为his_12@qq.com的病人的基本信息

where Tel is null;
//空表的查询

select dID,dName,Title,Department,Assistant
from Doctor
where Department='内科' and Title='主治医师';
//查询内科的主治医师

select dName,Title,Department
from Doctor
where Department='内科' or Department='呼吸科'
//查询内科、呼吸科的医生的姓名、职称、科室

查询结果排序

order by子句      ASC升序,DESC降序

select *
from CureFee
order by Fee DESC;
//查询病人的就诊信息,查询结果按就诊总费用用降序排列

简单统计查询

count (distinct/all  *)  统计记录个数

sum(distinct/all  列名) 计算一列(必须是数值型)的总和

avg(distinct/all  列名)    计算平均值

max(distinct/all  列名) 求一列的最大值

min(distinct/all  列名)  求一列的最小值

分组查询

group by对where的结果进行分组

having短语来筛选条件

select dName,count(*)
from Doctor
group by dName
having count(*)>1;
//查询重名医生的姓名

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值