数据库基本概念和操作

1.何为约束

  对表中的数据进行限制,允许什么样的值,不允许什么样的值.保持数据的”实体完整性”和”参照完整性”.避免出现”脏数据”


2.主键约束: PK:primary Key在任何时候都必须有的.唯一,非空,高效


方法:1.在Oracle服务器中修改约束条件
     2.命令语句:alter table 表名 add(primary key 列名);

     3.图形:在表中相应的字段后面”√”


3.唯一约束:Unique Key:不能重复,但可为空,空值可重复
Alter table 表名 add(unique (列名));

4.检查约束:

Alter table 表名 add (check(age between 10 and 50));-不能**小于10,大于50的属性值


5.创建外键约束:FK:foreign key:

Alter table 表名 add (foreign key (“列名”))reference 表名(“列名”);


6.缺省约束  default

Alter table 表名 modify (“列名” default 值);


五.基本操作


1.select 查询:
例:select 列名 from 表名;

Select sname ,‘X’ from s;    X:结果中会多出一列X


2.as  别名
Select 列名 as ‘新名称’ from 表名;

重命名表:select * from 表名  新表名;


3.union 两表查询合成一表,并无重复记录   union  all:不去重
Select 列名from  表名
Union

Select 列名  from 表名;


4.where 条件
Select * from 表 where 条件(属性=值)

条件表达式:=,<,>,<>,not,and,or,in between,like,exists


5.like 一般与_共用,’_’代表任毅字符

Select * from 表名 where  sname  like ‘_ang’;以ang结尾,四个字符的名称


6.% 任意长度字符
Select * from 表名 where 列名 like ‘% ng’;-一般不用该方法

Select * from 表名 where 列名like’w%’;-以W开头的不限长度的条件


7.rownum  控制行数,过滤数据量

Select * from 表 where 列名 like ‘w%’ and rownum<=3;-取前三列数据

select s.sname,c.cname,sc.grade FROM student s,course c,studcourse sc WHERE
sc.grade<60 AND sc.sid=s.sid AND sc.cid=c.cid

8.多表查询

Select * from 表1,表2 where 条件(列名相等);--过滤(主键=外键)


9.连接查询.花费代价比嵌套的大
① select grade,cname from sc,s,c where sc.sid=s.sid and s.sname=’wang’ and  sc.cid=c.cid;

②select cname from (select sname.cid from s,sc where s.sid=sc.sid)  p,c where p.cid=c.cid and sname=’wang’;


10.嵌套查询
①select grade from sc where sid=(select sid from s where sname=’wang’);
注释:1.当某些表的属性要出现在结果中,那这几张表查询必须用连接查询 

     2.当某张表的是所有属性无需出现在结果中,那么查询用嵌套


11.group by 分组查询

Select sname,sum(grade),min(grade),max(grade),avg(grade) from s,sc where s.sid=sc.sid group by sname;


12.having 过滤条件
Select sex,avg(age) from s group by sex having avg(age)>20;各个性别下平均年龄大于20岁的记录

注释:执行顺序:where-group by -having


13.order by 排序      desc:降序   asc 升序
Select * from(select * from s order by age desc)where rownum<=3;
排序支持并列

Select * from sc where grade in(select grade from(select * from sc order by grade desc)where rownum<=4) order by grade desc;


14.insert **

Insert into 表 values(各个列名属性值)--顺序一定要与数据库内部数据一样


15.update 更新

Update 表 set 列名=’值’ where 条件;


16.delete 删除
Delete from 表 where 条件;

注释:删除某一属性时用update


17.内链接

Select * from inner join sc on s.sid=sc.sid;


18.外连接
  ①左外联接:以左表为基准,右表如果有包含满足条件的记录就显示出来,否则为空
Select * from s left join sc on s.sid= sc.sid where grade is null;
==select * from s,sc where s.sid=sc.sid(+)
  ②右外连接:以右表为基准,左表如果有包含满足条件的记录就显示出来,否则显示为空
Select * from 表right join 表on 条件;
  ③全外连接:将左表,右表中满足条件的记录合成一行,不满足的各自显示

  Select *from 表 full join 表 on 条件;


19.序列:sequence 一个命名的顺序编号的生成器
①定义序列:
Creat sequence 序列名
start with 1
increment by 1
select 序列名.nextval as ‘id’,sname from 表;
②删除序列
drop sequence 序列名;

猜你喜欢

转载自blog.csdn.net/qq_34642668/article/details/71997262