sql数据库基础知识...

五个基本的关系代数操作


并、差、笛卡尔积、选择、投影


数据库语言四大类


DQL(Data Query Language):数据库查询语言。
DDL(Data Definition Language):数据库定义语言。定义关系模式、删除关系、修改关系模式。

关系、属性
DML(Data Manipulation Language):数据库操纵语言。插入元组、删除元组、修改元组。

元组
DCL(Data Control Language):数据库控制语言。用来授权或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果。

GRANT、revoke
commit / rollback work


完整性


实体完整性:要求每个关系(表)有且仅有一个主键,每一个主键值必须唯一,而且不允许为“空”(NULL)或重复。

主键
参照完整性:对于永久关系的相关表,在更新、插入或删除记录时,如果只改其一,就会影响数据的完整性。如删除父表的某记录后,子表的相应记录未删除,致使这些记录称为孤立记录。对于更新、插入或删除表间数据的完整性。

外键
自定义完整性


基础操作


创建关系


create table instructor2(
    id char(5) not null,
    name varchar(20) not null,
    dept_name varchar(20) not null,
    salary numeric(8,2),
    primary key(id)
);1234567

结果如图。可看出对属性进行了相关定义。 
 


插入元组

insert into 关系名 values(每个属性对应的值);


insert into instructor2 values(00001,'ai','math',2500.37);
insert into instructor2 values(00002,'la','math',3700.89);
insert into instructor2 values(00003,'bi','math',5400.45);
insert into instructor2 values(00004,'ma','english',1450.23);
insert into instructor2 values(00005,'ye','english',3421.34);
insert into instructor2 values(00006,'er','technology',10000.65);123456

结果如图 
 


删除所有元组

delete from 关系名; 
删除了元组,但关系和属性还存在。 

删除关系

drop table 关系名; 
删除了关系,进行select查询时会出现关系名无效的错误。 

属性操作

alter table 关系名 add 新属性 数据类型,新属性 数据类型,⋯ ⋯\cdots;

例:alter table instructor2 add firstname varchar(20),lastname varchar(20); 

alter table 关系名 drop 属性,⋯ ⋯\cdots;

例:alter table instructor2 drop firstname ,lastname ;
查询语句基础结构

select对应投影Π Π\Pi
from对应笛卡尔积
where对应选择σ σ\sigma
含义 
(1).为from子句列出的关系产生笛卡尔积。
(2).在(1)的结果上应用where子句中指定的谓词(条件)。
(3).对于(2)中的元组,输出select子句中指定的属性。


select *(属性1,属性2,...)
from 关系名1,关系名2,...
where 条件1 and 条件2 and ...;123

select id,name,salary
from instructor2
where salary>4000;123

结果如下 
   


去重操作(distinct)

对于一些属性来说,在某些元组中存在相同的值,有时我们需要对结果去重,得到正确答案。


select distinct 属性名
from 关系名
where 条件123

例如:当我们想要查看系名时,多个老师可能位于同一个系,不去重将产生下列结果: 
   
   
  显然这不是我们想要的答案。我们只需要知道存在哪些系,而无需知道个数: 
 
  


更名操作(as)

优点 
方便:长名字变短名字,便于书写语句。
同一关系笛卡尔积:区分属性。
对属性:
对关系:  


select 属性 as 属性别名
from 关系名
where 条件123

select 属性
from 关系名 as 关系别名
where 条件123

例:属性别名

select name as instructor_name,salary
from instructor2
where salary>3500;123

结果如下 
 


例:关系别名

select i1.id,i2.name
from instructor2 as i1,instructor2 as i2
where i1.id=i2.id and i2.salary>3500;123

结果如下 

字符串运算(like)

SQL使用一对单引号来标示字符串,例‘math’。
百分号(%):匹配任意子串
下划线(_):匹配任意一个字符


select 属性
from 关系名
where 属性 like '字符形式';123

select *
from instructor2
where salary like '%0_.%';123

结果如下 

显示次序(order by)

默认升序:asc
降序:desc


select 属性
from 关系名
where 条件
order by 属性 升序/降序;1234

select *
from instructor2
order by salary desc;123

结果如下 

between⋯ ⋯\cdotsand⋯ ⋯\cdots

属性值介于某个范围内


select *
from instructor2
where 属性名 between ... and ... ;123

 

转载于:https://my.oschina.net/u/4047409/blog/3058763

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值