sql对表/字段的增删改查基础指令及约束索引相关知识总结及案例

数据库 专栏收录该内容
1 篇文章 0 订阅

**

语法总结

一、约束的类型(关键词)

主键约束 primary key;
外键约束 foreign key;
非空约束 not null;
唯一约束 unique;
检查约束 check;

二约束的维护

1.禁止约束

alter table 表名 disable constraint 约束名

2.激活约束

alter table 表名 enable constraint 约束名

3.删除约束

alter table 表名 drop constraint 约束名

4.约束重命名

alter table 表名 renameconstraint oldname to newname

三、表结构

1.创建表

creat table 表名(字段1 类型(长度),字段2 类型(长度)...... )

2.删除表 (表数据和结构一起删除)

drop table 表名

3.截断表(表只清空表数据,保留表结构)

truncate table 表名

4.修改表结构
4.1新增列

alter table 表名 add (字段名 类型(长度))

4.2修改列

alter table 表名 modify(字段名 类型(长度))

4.3删除列

alter table 表名 drop(字段名)

5.表重命名

rename oldname to newname

**

四、索引

**
1.单列索引

create index 索引名 on 表名(字段名)

2.复合索引

create index索引名 on 表名(字段1,字段2....)

3.重建索引

alter index 索引名 rebuild;

4.删除索引

drop index 索引名

**

五、其他

**
1.创建表时设置主键

create table 表名(字段1 类型(长度)constraint  pk_字段 primary key) 

2.创建表时设置外键

create table 表名(字段1 类型(长度)constraint  fk_字段 references 主键表名(主键字段)) 

3.修改字段名称

alter table 表名 rename column 旧名称 to  新名称;

4.修改字段类型 /约束

alter table 表名 modify(字段 约束);
alter table 表名 modify(字段 类型);

5.添加表数据

insert into 表名 values(‘’,‘’,‘’,);

6.date日期

to_date('1990-01-01','yyyy-mm-dd')

7.添加表中某些字段的某些数据

insert into表名(字段,字段,字段)values(‘’,‘’,‘’,‘’);

例题:创建图书表 主键非空检查约束

create table book(
bno number(7)  constraint pk_bno primary key,
bname varchar2(50)NOT NULL,
sal number(6,2) constraint ck_sal check(sal>0),
press varchar2(20),
author varchar2(20),
message varchar2(100),
bid number(10)constraint uq_bid UNIQUE
);

外键:外键可以成为外键的键,必须是其他表的主键,或者具有唯一约束的键
假设a表的主键id是b表的关联外键
A表的数据可以随意添加,不可以随意删除,不可以随意修改
b表的数据可以随意删除,不能随意添加不能随意修改

例*创建成绩表score 主键id 外键sno 关联学生表主键no

create table score(
  id number(6) primary key,
  sno number(7) constraint fk_sno references student(sno)
);

索引:复合索引优点:加快查询效率
缺点:降低了修改插入删除的速度
关键字:index

是Oracle数据最基本的对象,用于存储用户数据,关系数据库的所有操作最终都是围绕表来操作
建立表时,用户不仅需要具有CREATE TABLE系统权限,而且还必须具有相应的表空间配额
Oracle中建表时常用的数据类型由CHAR、VARCHAR、NUMBER、DATE等类型
索引用于加快数据定位速度,通过使用索引可以大大降低I/O次数,提高SQL语句访问性能
索引分为单列索引、复合索引和惟一性索引
约束用于确保数据库数据满足特定的商业逻辑或企业规则
约束包括NOT NULL、UNIQUE、PRIMARY KEY、FOREIGN KEY和CHECK五种

truncate清除数据 表结构保留
插入语句 insert into 表名 values()
取消唯一约束

 alter table student disable constraint uq_card; 

修改语句 update 表名

  set idcard='370832' where sno=1002; 

启用约束

  alter table student enable constraint uq_card; 

删除约束

  alter table student drop constraint uq_card; 

更改信息用,连接 条件多个用and连接 update 表名

set idcard='370832' == delect from 表明where 字段

**

典型例题:

**
在这里插入图片描述

create table student (
sid number(6)constraint pk_sid primary key,
sname varchar2(20),
birth date,
sex varchar2(20),
telephone varchar2(20),
address varchar2(20)
)
create table teacher(
tid number(6)constraint pk_tid primary key,
tname varchar2(20),
sex varchar2(2),
profession varchar2(20)
)
create table course(
cid number(6)constraint pk_cid primary key,
cname varchar2(20),
tid number(6)constraint fk_tid references teacher(tid),
credit number(6)
)
create table sc(
sid number(6) not null,
cid number(6),
score number(6)
)

在这里插入图片描述

--例题1
alter table student modify(address varchar2(100));
--2
alter table stude
nt rename column telephone to  phone ;
alter table student modify(phone varchar2(20));
--3
alter table teacher add(education varchar2(10));
--4
alter table teacher modify (sex varchar2 (2));
--5
alter table course add ("desc"/*关键字*/ varchar2(100));
--6
alter table  sc modify(cid not null);
--7
alter table sc modify(score number(6));

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

--添加表数据
insert into student values('1','赵雷',to_date('1990-01-01','yyyy-mm-dd'),'男','13112312312','黑龙江省黑河市');
insert into student values('2','钱电',to_date('1990-12-21','yyyy-mm-dd'),'男','13154649876','山东省青岛市');
insert into student values('3','孙风',to_date('1990-05-20','yyyy-mm-dd'),'男','15846541543','黑龙江省哈尔滨市');
insert into student values('4','李云',to_date('1990-08-06','yyyy-mm-dd'),'男','18623021203','山东省青岛市');
insert into student values('5','周梅',to_date('1991-12-01','yyyy-mm-dd'),'女','13121648970','山东省青岛市');
insert into student values('6','吴兰',to_date('1992-03-01','yyyy-mm-dd'),'女','15831564231','山东省青岛市');
insert into student values('7','郑竹',to_date('1989-07-01','yyyy-mm-dd'),'女','18645103000','山东省青岛市');
insert into student values('8','王菊',to_date('1990-01-20','yyyy-mm-dd'),'女','13112332100','山东省青岛市');
--表二
insert into teacher (tid,tname,sex,profession)values('1','张三','男','教授' );
insert into teacher(tid,tname,sex,profession) values('2','李四','男','副教授');
insert into teacher(tid,tname,sex,profession) values('3','王五','女','讲师');
insert into teacher(tid,tname,sex,profession) values('4','赵六','男','助教');
--表三 
insert into course(cid,cname,tid,credit) values('1','java基础','2','3');
insert into course (cid,cname,tid,credit) values('2','高等数学','3','4');
insert into course (cid,cname,tid,credit) values('3','MYSQL数据库','3','4');
insert into course(cid,cname,tid,credit)  values('4','软件测试','1','1');
--表四
insert into score values('1','1','90');
insert into score values('1','2','80');
insert into score values('1','3','90');
insert into score values('2','1','70');
insert into score values('2','2','60');
insert into score values('2','3','80');
insert into score values('3','1','80');
insert into score values('3','2','80');
insert into score values('3','3','80');
insert into score values('4','1','50');
insert into score values('4','2','30');
insert into score values('4','3','20');
insert into score values('5','1','76');
insert into score values('5','2','87');
insert into score values('6','1','31');
insert into score values('6','3','34');
insert into score values('6','2','6');
insert into score values('7','2','89');
insert into score values('7','3','98');
  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页

打赏作者

dai1770359801

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值