1、外键是属于约束的一种,所谓约束顾名思义,就是限制你在数据库的操作。而你对数据库有什么操作,无非是增、删、改、查,外键起的作用就是让你在数据库帮助的情况下更合理的增加数据的正确度。
创新互联-云计算及IDC服务提供商,涵盖公有云、IDC机房租用、服务器托管、等保安全、私有云建设等企业级互联网基础服务,咨询热线:18982081108
2、所以,外键只是辅助,并不能起到你说的【B.NAME是否也自动出现张三两个字】。
3、外键的作用是能够避免如下情况。
如
【班级信息表】存放的是班级信息表。
【学生表】存放的是学生信息,包含班级信息。
这个时候 在【学生表】中存放的班级信息应该在【班级信息表】存在才合法,自己人为控制的话难免有漏掉的情况,用外键则可以让数据库自动控制,当插入【学生表】中的数据在【班级信息表】不存在的时候,数据库不允许插入。
---
以上,希望对你有所帮助。
以oracle自带的用户scott为例。
create table dept(
deptno number(2) primary key, --deptno 为 dept表的主键
dname varchar2(10),
loc varchar2(9)
);
create table emp(
empno number(4) primary key, --empno 为 emp表的主键
ename varchar2(10),
job varchar2(9),
mgr number(4),
hiredate date,
sal number(7,2),
comm number(7,2),
deptno number(2) references dept(deptno) --dept表中deptno字段 为 emp表的外键
);
create TABLE zhao(
id number primary key,
mingcheng nvarchar2(50),
neirong nvarchar2(50),
jiezhiriqi date,
zhuangtai nvarchar2(50)
);
create TABLE tou(
id number primary key,
zhao_id number,
toubiaoqiye nvarchar2(50),
biaoshuneirong nvarchar2(50),
toubiaoriqi date,
baojia number,
zhuangtai nvarchar2(50),
foreign KEY(zhao_id) REFERENCES zhao(id)
);
foreign key (zhao_id) references to zhao(id)
多了个to
-- 创建测试主表. ID 是主键.
CREATE TABLE test_main (
id INT,
value VARCHAR(10),
PRIMARY KEY(id)
);
-- 创建测试子表.
CREATE TABLE test_sub (
id INT,
main_id INT,
value VARCHAR(10),
PRIMARY KEY(id)
);
-- 创建外键
ALTER TABLE test_sub ADD CONSTRAINT main_id_cons FOREIGN KEY (main_id) REFERENCES test_main;
SQL drop table Stu;
drop table Stu
*
ERROR 位于第 1 行:
ORA-00942: 表或视图不存在
SQL create table Stu(
2 sno varchar2(10) primary key,
3 sname varchar2(10) not null,
4 sex varchar2(5) check(sex='男'or sex='女'),
5 class varchar2(10),
6 spasswd varchar2(10)
7 );
表已创建。
SQL drop table Cou;
drop table Cou
*
ERROR 位于第 1 行:
ORA-00942: 表或视图不存在
SQL create table Cou(
2 cno varchar2(10) primary key,
3 cname varchar2(30) not null,
4 kcxz varchar2(20),
5 lesson_hours number(4),
6 test_hours number(4),
7 credit number(3)
8 );
表已创建。
SQL drop table SC;
drop table SC
*
ERROR 位于第 1 行:
ORA-00942: 表或视图不存在
SQL create table SC(
2 sno varchar2(10),
3 cno varchar2(10),
4 grade number(3),
5 primary key(sno,cno)
6 );
表已创建。
SQL
SQL
SQL ALTER TABLE SC ADD CONSTRAINT fk_SC_Stu FOREIGN KEY (sno) REFERENCES Stu;
表已更改。
SQL
SQL ALTER TABLE SC ADD CONSTRAINT fk_SC_Cou FOREIGN KEY (cno) REFERENCES Cou;
表已更改。
SQL
一般授予connect权限用户就能够连接数据了,授予resource权限用户就可以建表、索引、视图、存储过程了,其他权限根据具体需求来建,具体示例如下:
登录数据库服务器,运行sqlplus,
connect / as sysdba
create user test identified by test1234 tablespace test_data;(需要事先建好test_data表空间)
grant connect to test;
grant resource to test;
如果该用户需要查询数据库中所有数据:grant select any table to test;
如果该用户需要读取数据字典、使用OEM工具等:grant select dictionary to test;
如果该用户需要操作其他用户的表(如对scott用户下的emp表进行增删改操作):
grant insert,update,delete on scott.emp to test;