一个表可以创建多个主键吗
- 格式:doc
- 大小:22.50 KB
- 文档页数:3
mysql数据库外键、主键详解⼀、什么是主键、外键:关系型数据库中的⼀条记录中有若⼲个属性,若其中某⼀个属性组(注意是组)能唯⼀标识⼀条记录,该属性组就可以成为⼀个主键⽐如学⽣表(学号,姓名,性别,班级)其中每个学⽣的学号是唯⼀的,学号就是⼀个主键课程表(课程编号,课程名,学分)其中课程编号是唯⼀的,课程编号就是⼀个主键成绩表(学号,课程号,成绩)成绩表中单⼀⼀个属性⽆法唯⼀标识⼀条记录,学号和课程号的组合才可以唯⼀标识⼀条记录,所以学号和课程号的属性组是⼀个主键成绩表中的学号不是成绩表的主键,但它和学⽣表中的学号相对应,并且学⽣表中的学号是学⽣表的主键,则称成绩表中的学号是学⽣表的外键同理成绩表中的课程号是课程表的外键定义主键和外键主要是为了维护关系数据库的完整性,总结⼀下:1.主键是能确定⼀条记录的唯⼀标识,⽐如,⼀条记录包括⾝份正号,姓名,年龄。
⾝份证号是唯⼀能确定你这个⼈的,其他都可能有重复,所以,⾝份证号是主键。
2.外键⽤于与另⼀张表的关联。
是能确定另⼀张表记录的字段,⽤于保持数据的⼀致性。
⽐如,A表中的⼀个字段,是B表的主键,那他就可以是A表的外键。
⼆、主键、外键和索引的区别sql语句会⾃动判定查询字段有⽆索引,继⽽使⽤索引去检索主键、外键和索引的区别?主键外键索引定义:唯⼀标识⼀条记录,不能有重复的,不允许为空表的外键是另⼀表的主键, 外键可以有重复的, 可以是空值该字段没有重复值,但可以有⼀个空值作⽤:⽤来保证数据完整性⽤来和其他表建⽴联系⽤的是提⾼查询排序的速度个数:主键只能有⼀个⼀个表可以有多个外键⼀个表可以有多个惟⼀索引聚集索引和⾮聚集索引的区别?聚集索引⼀定是唯⼀索引。
但唯⼀索引不⼀定是聚集索引。
聚集索引,在索引页⾥直接存放数据,⽽⾮聚集索引在索引页⾥存放的是索引,这些索引指向专门的数据页的数据。
三、数据库中主键和外键的设计原则主键和外键是把多个表组织为⼀个有效的关系数据库的粘合剂。
数据库设置组合主键的语法-概述说明以及解释1.引言1.1 概述数据库是用于存储和管理数据的系统,它在现代应用程序中起着至关重要的作用。
在数据库中,主键是一种用于唯一标识每个记录的字段或字段组合。
组合主键是指由多个字段组合而成的主键。
组合主键的语法是指在数据库中设置多个字段作为主键。
通常,组合主键由两个或多个字段组成,这些字段共同标识一个唯一的记录。
在创建表时,我们可以在主键约束中指定多个字段,这样就可以将这些字段组合起来形成一个组合主键。
组合主键的设置相对简单,只需在创建表时指定多个字段作为主键即可。
这种设置方式有助于提高数据的唯一性,避免重复记录的出现。
同时,组合主键还能提供更强大的数据查询和排序功能,使数据库系统更加灵活和高效。
然而,组合主键也有一些缺点。
首先,由于组合主键的字段更多,占用了更多的存储空间。
其次,使用组合主键可能会增加复杂性,特别是在数据更新和删除操作时。
此外,当需要进行查询和排序时,组合主键可能需要更复杂的查询条件和操作。
总而言之,组合主键是一种在数据库中设置多个字段作为主键的方法。
它具有一些优点和缺点,使用时需要根据实际需求进行权衡和选择。
在本文中,我们将更详细地介绍组合主键的语法,并分析其优缺点以及在实际应用中的建议和展望未来。
文章结构部分的内容可以描述文章的整体组织框架和各个部分的主要内容。
以下是一种可能的写作方式:1.2 文章结构本篇长文将按照以下结构展开论述:引言在引言部分,我们将对数据库设置组合主键的语法进行简要介绍,并明确本文的目的和意义。
正文正文部分将分为三个主要小节,分别是:2.1 什么是组合主键在这一小节,我们将详细解释组合主键的概念和定义。
我们将介绍在数据库设计中,主键的重要性以及为什么有时候需要使用组合主键来唯一标识数据记录。
同时,我们还会讨论什么情况下适合使用组合主键,并提供一些实际应用的例子。
2.2 组合主键的语法在这一小节,我们将深入讨论组合主键的语法。
SQLServer复习试题《SQL Server》复习试题一、单项选择题1.下列四项中,不属于数据库特点的是( C )。
A.数据共享B.数据完整性C.数据冗余很高D.数据独立性高2. 在SELECT语句中正确的语法顺序如下( D )。
A.where ,having, group by,order byB.having,where , group by,order byC.where, order by ,group by,havingD.where , group by, having,order by3.SQL Server安装程序创建4个系统数据库,下列哪个不是( C )系统数据库。
A.masterB.modelC.pubD.msdb4.(A )是位于用户与操作系统之间的一层数据管理软件,它属于系统软件,它为用户或应用程序提供访问数据库的方法。
数据库在建立、使用和维护时由其统一管理、统一控制。
A.DBMS B.DBC.DBS D.DBA5. 在SQL中,建立表用的命令是 ( B )。
A.CREATE SCHEMAB.CREATE TABLEC.CREATE VIEWD.CREATE INDEX6.SQL语言中,条件年龄BETWEEN 15 AND 35表示年龄在15至35之间,且( A )。
A.包括15岁和35岁B.不包括15岁和35岁C.包括15岁但不包括35岁D.包括35岁但不包括15岁7.下列四项中,不正确的提法是( C )。
A.SQL语言是关系数据库的国际标准语言B.SQL语言具有数据定义、查询、操纵和控制功能C.SQL语言可以自动实现关系数据库的规范化D.SQL语言称为结构查询语言8.在MS SQL Server中,用来显示数据库信息的系统存储过程是( D )。
A. sp_dbhelpB. sp_dbC. sp_helpD. sp_helpdb9.SQL语言中,删除表中数据的命令是( A )。
mysql添加主键、外键、唯⼀、⾮空约束1 、约束的作⽤对表中的数据进⾏限制,保证数据的正确性、有效性和完整性。
⼀个表如果添加了约束,不正确的数据将⽆法插⼊到表中。
约束在创建表的时候添加⽐较合适。
2 、约束种类2.1 主键约束 primary key2.1.1 主键的作⽤⾮空且唯⼀⼀张表只能有⼀个字段为主键,(⽤来唯⼀标识数据库中的每⼀条记录)通常不⽤业务字段作为主键,单独给每张表设计⼀个 id 的字段,把 id 作为主键。
主键是给数据库和程序使⽤的,不是给最终的客户使⽤的。
所以主键有没有含义没有关系,只要不重复,⾮空就⾏2.2.2 主键操作创建表的时候创建主键create table st5 (id int primary key, -- id 为主键name varchar(20),age int)删除主键alter table st5 drop primary key;创建表后添加主键alter table st5 add primary key(id);2.2.3 主键⾃增主键如果让我们⾃⼰添加很有可能重复,我们通常希望在每次插⼊新记录时,数据库⾃动⽣成主键字段的值AUTO_INCREMENT 表⽰⾃动增长(字段类型必须为整数类型)create table st5 (id int primary key auto-increment, -- 给id 创建⾃动增长name varchar(20),age int)-- 插⼊数据 之后查询数据 发现id是⾃动增长的insert into st5 (name,age) values ('⼩乔',18);insert into st5 (name,age) values ('⼤乔',20);修改⾃增长的默认值起始值-- 指定起始值为 1000create table st4 (id int primary key auto_increment,name varchar(20)) auto_increment = 1000;创建好以后修改起始值alter table st4 auto_increment = 2000;创建完表之后删除⾃动增长alter table st4 modify id int;添加⾃动增长alter table st4 modify id int auto_increment;2.2 唯⼀约束什么是唯⼀约束:表中某⼀列不能出现重复的值2.2.1 唯⼀约束语法格式:字段名 字段类型 UNIQUE-- 创建学⽣表 st7, 包含字段(id, name),name 这⼀列设置唯⼀约束,不能出现同名的学⽣create table st7 (id int,name varchar(20) unique)注意:唯⼀约束可以有null值,但是只能有唯⼀⼀条记录为null删除唯⼀约束:alter table st7 drop index name;在表创建完之后创建唯⼀约束:alter table st7 modify name varchar(20) unique;2.3 ⾮空约束什么是⾮空约束:某⼀列不能为 null。
access1-4章习题(带答案)习题1一、选择题1.用二维表来表示实体及实体之间联系的数据模型是A.实体-联系模型B.层次模型C.网状模型D.关系模型2.关系数据库的基本操作是A.增加、删除和修改B.选择、投影和联接C.创建、打开和关闭D.索引、查询和统计的数据库类型是A.层次数据库B.网状数据模型C.关系数据模型D.面向对象数据库4. 关系型数据库管理系统中所谓的关系是指A.各条记录中的数据彼此有一定的关系B.一个数据库文件与另一个数据库文件之间有一定的关系C.数据模型符合满足一定条件的二维表格式D.数据库中各个字段之间彼此有一定的关系5. 下列说法中正确的是A.两个实体之间只能是一对一的关系B.两个实体之间只能是一对多的关系C.两个实体之间只能是多对多的关系D.两个实体之间可以是一对一的关系、一对多的关系、多对多的关系6. 数据库系统的核心是A.数据模型B.数据库管理系统(DBMS)C.软件工具D.数据库7. 在数据库中能够唯一地标识一个元组的属性的组合称为A.记录B.字段C.域D.关键字8. 为了合理组织数据,应遵从的设计原则是A.“一事一地”原则,即一个表描述一个实体或实体间的一种联系B.表中的字段必须是原始数据和基本数据元素,并避免在之间出现重复字段C.用外部关键字保证有关联的表之间的联系D.以上各条原则都包括9. 数据模型反映的是A.事物本身的数据和相关事物之间的联系B.事物本身所包含的数据C.记录中所包含的全部数据D.记录本身的数据和相互关系10. 退出Access数据库管理系统可以使用的快捷键是+F +X B. Alt+X C. Ctrl+C D. Ctrl+O11.在Access数据库中,表就是A.关系B.记录C.索引D.数据库中表和数据库的关系是A.一个数据库可以包含多个表B.一个表只能包含两个数据库C.一个表可以包含多个数据库D.数据库就是数据表13.将两个关系拼接成一个新的关系,生成的新关系中包括满足条件的元组,这种操作称为A.选择B.投影C.联接D.并14.常见的数据模型有3种,它们是A.网状、关系和语义B.层次、关系和网状C.环状、层次和关系D.字段名、字段类型和记录15.“商品”与“顾客”两个实体集之间的联系一般是A.一对一B.一对多C.多对一D.多对多二、填空题1.数据模型不仅表示反映事物本身的数据,而且表示__相关事物之间的联系__。
表中加自增主键作用-概述说明以及解释1.引言1.1 概述自增主键是关系数据库中一种常见的主键类型。
它的作用是在插入数据时自动为每一条新记录分配一个唯一的标识符。
自增主键通常是一个整数,每次插入新数据时,系统会自动增加该整数的值,确保每个记录的主键都是唯一的。
在关系数据库中,主键是用来唯一标识每个记录的字段。
它不允许重复值,并且在该字段上建立了索引,以提高查询性能。
自增主键利用了数据库的自动递增功能,无需手动分配主键值,大大简化了数据库操作的复杂性。
自增主键的优点是明显的。
首先,它确保数据表中的每条记录都具有唯一的标识符,避免了数据重复和冲突。
其次,自增主键不会受到外部变量或其他因素的影响,因此在插入新数据时不需要额外的逻辑和判断。
此外,自增主键还可以提高数据库的性能,因为它在物理存储上是有序的,减少了索引维护的开销。
自增主键适用于多种场景,特别是在需要处理大量数据的情况下。
例如,在电子商务网站的订单表中,每个新的订单都需要有一个唯一的编号。
使用自增主键可以确保每个订单都有一个唯一的标识符,方便管理和查询。
另外,在用户表中,每个用户也可以有一个自增主键作为唯一标识,方便进行用户身份验证和用户关联操作。
总的来说,自增主键在关系数据库中具有重要的作用。
它可以确保数据的唯一性,并提高数据库的性能。
随着数据库技术的不断发展,自增主键可能还会有更多的应用和创新。
文章结构是指文章的组织方式和框架,它有助于读者理解文章的逻辑结构和内容安排。
本文的文章结构如下:1. 引言1.1 概述1.2 文章结构1.3 目的2. 正文2.1 自增主键的定义和作用2.2 自增主键的优点2.3 自增主键的应用场景3. 结论3.1 总结自增主键的重要性3.2 对比其他主键类型的优劣3.3 展望自增主键的未来发展在引言部分之后,我们进入了正文部分。
正文部分分为三个小节,分别介绍了自增主键的定义和作用、自增主键的优点以及自增主键的应用场景。
基本操作题----表基础知识考点一、建立表结构1.建表的步骤使用“设计视图”建表要详细说明每个字段的字段名和所使用的数据类型。
数据类型(10种):文本、备注(可保存较长的文本)、数字、日期/时间、货币、自动编号、是/否、OLE对象、超级链接、查阅向导。
方法:创建—表设计---设计视图中建表结构---设置字段属性设主键---保存表名。
保存---否---设主键。
2.设置主键数据没有重复的字段做主键。
给有数据的表设主键时,不要想当然,只看设计视图字段名字,要看数据表视图中的数据是否真的没有重复。
主键可以是单个的字段,还可以是几个字段的联合。
例:7.1.1,“tScore”主键是(学号,课程号)10.1.1“销售业绩表”主键是(时间,编号,物品号)考点二、字段属性设置1.字段大小通过该属性可控制字段使用的空间大小,只适用于数据类型为“文本”型和“数字”型的字段。
“文本”型字段的取值范围为0~255的整数,默认值为50;对于“数字”型字段则要单击“字段大小”属性行,然后单击右侧向下箭头,从下拉列表中选择一种类型。
2.格式单击“格式”行,然后单击右侧向下箭头,从下拉列表中选择即可。
3.设置默认值属性在设置默认值时,必须与字段的数据类型相匹配。
性别的默认值为“男”。
系统当前日期的前一天date()-1本年度4月1日DateSerial ( Year ( Date () ) , 4,1)下一年度4月1日DateSerial ( Year ( Date () )+1 , 4,1)上一年度4月1日DateSerial ( Year ( Date () ) -1, 4,1)系统当前日期:date()4.设置输入掩码属性a)常用的字符所代表的含义:(1)0表示必须输入一个数字(0-9),而9表示可选输入一个数字(0-9)。
(2)L表示必须输入一个字母(a-z),而?表示可选输入一个字母(a-z)。
(3)A表示必须输入一个字母或数字,而a表示可选输入一个字母或数字。
oracle建表的时候同时创建主键,外键,注释,约束,索引--主键create table emp (id number constraint id_pr primary key ,name1 varchar(8));create table emp9 (id number ,name1 varchar(8) ,constraint aba_pr primary key(id,name1));--外键create table emp1(id number references emp(id),name varchar(8));--复合外键create table emp0(id number ,name varchar(8) ,constraint fk_nam1e foreign key(id,name) references emp9(id,name1));--主键另外写法create table emp2(id number,name varchar(8),id1 number, constraint pk_id primary key(id),constraint fk_name foreign key(id1) references emp(id))--check 约束的写法create table emp4(id number check(id in(1,2 ,3)),name varchar(8));不带约束名称的:create table userInfo (id number(6) primary key,--主键name varchar2(20) not null,--⾮空sex number(1),age number(3) default 18,birthday date,address varchar2(50),email varchar2(25) unique,--唯⼀tel number(11),deptno number(2) references dept(deptno)—外键);带约束名称:create table userInfo (id number(6) constraint id_pk primary key,name varchar2(20) constraint name_nn not null,sex number(1),age number(3) default 18,birthday date,address varchar2(50),email varchar2(25) constraint email_uqe unique,tel number(11),deptno number(2) constraint dept_deptno_ref references dept(deptno));列模式:create table userInfo (id number(6),name varchar2(20),sex number(1),age number(3) default 18,birthday date,address varchar2(50),email varchar2(25),tel number(11),deptno number(2),constraint id_pk primary key (id),--也可以两个以上,联合主键constraint dept_deptno_ref foreign key (deptno) references dept(deptno),constraint emial_name_uqe unique (email, name));Alter模式:alter table userInfo add(msn varchar2(20));alter table userInfo modify(msn varchar2(25));alter table userInfo drop(msn);alter table userInfo drop constraint id_pk;alter table userInfo add constraint id_pk primary key (id);3、创建视图create table v$_dept_viewasselect deptno, dname from dept;--重新编译视图alter view v$_dept_view compile;提⽰:视图⼀般是⼀个表或多个表的查询或⼦查询,这样可以减少代码量,但同时增加了对数据库视图的维护程度,如:某个表字段被删除或是修改,视图也要重新创建或修改,同时占⽤了数据库的⼀部分空间;视图就是⼀个虚拟的表格;4、创建索引普通索引:create index idx_dpt_dname on dept(dname);联合索引:create index idx_dept_dname_deptno on dept(dname, deptno);--唯⼀索引create unique index idx_emp_ename on scott.emp(ename);--反向键索引create index idx_emp_rev_no on scott.emp(empno) reverse;--位图索引create bitmap index idx_emp_name on scott.emp(dname);--索引组织表,⼀定要有主键create table tab (id int primary key,name varchar2(20)) organization index;--索引组织表的insert效率⾮常低--分区表索引create index idx_name on table(col) local/global;--索引分区提⽰:当给表创建主键或唯⼀键约束时,系统也会创建⼀个约束给该字段;同样创建索引也会占⽤数据库空间;索引在访问、查询的时候效率有提⾼,但是在修改表的时候效率就会降低;5、创建序列create sequence seq;select seq.nextval from dual;insert into tab values(sql.nextval, ‘music’);create sequence seqtabstart with 2 –从2开始increment by 3—每次加3nomaxvalue—没有最⼤值minvalue 1—最⼩值1nocycle—不循环nocache;--不缓存--修改序列,不能修改起始值alter sequence seqtabmaxvalue 1000;6、创建同义词同义词,顾名思义就是说别名、或是另⼀个名字。
二、判断题
1.一个表可以创建多个主键吗。
2.创建唯一性索引的列可以有一些重复的值。
3.smallint 是SQL的数据类型。
4.SQL Server不允许字段名为汉字。
5.职称 in ('教授', '副教授'')与职称 = '教授' or 职称 = '副教授' 等
价吗?
6.如果规则当前绑定到某列或用户定义的数据类型,不能解除绑定能直接删
除规则?
7.在表中创建一个标识列(IDENTITY),当用户向表中插入新的数据行时,系
统自动为该行标识列赋值吗?
8.创建唯一性索引的列可以有一些重复的值?
9.固定数据库角色:db_datawriter 的成员删除本数据库内任何表中的数据
吗?
10.数据库设计前只需选择数据库分析设计人员。
11.恢复是利用冗余数据来重建数据库。
12.定义外键级级联是为了保证相关表之间数据的一致性吗?
13.存储过程的输出结果可以传递给一个变量。
14.视图具有与表相同的功能,在视图上也可以创建触发器。
15.SQL Server 2000不具有数据的导入与导出功能。
16.数据的完整性主要防范的对象是非法用户。
17.概念结构设计的工具是E—R模型。
18.设计好的数据库管理系统在投入使用后出现问题由使用方负责。
19.缺省情况下,所创建的索引是非聚集索引?
20.触发器是可在程序中被调用执行。
21.sa能否创建和删除数据库角色?
22.因为通过视图可以插入、修改或删除数据,因此视图也是一个实在表,
SQL SERVER将它保存在syscommens系统表中。
23.guest用户必须关联一个登录账号才可以在数据库中创建。
数据库中的非
guest用户账号都必须关联一个登录账号。
24.可以在企业管理器中修改数据库的名称。
25.恢复数据,可以在查询分析器中使用这样的命令:BACKUP DATABASE
database_name FROM backup。
26.DELETE语句只是删除表中的数据,表本身依然存在数据库中。
27.在数据库中建立的索引越多越好。
28.在SQL SERVER中,触发器的执行是在数据的插入、更新或删除之前执行的。
29.通配符“_”表示某单个字符。
30.数据库不允许存在数据冗余。
31.每一个服务器必须属于一个服务器组。
一个服务器组可以包含0个、一个或
多个服务器。
32.在SQL Server系统中,数据信息和日志信息不能放在同一个操作系统文件
中。
33.在使用子查询时,必须使用括号把子查询括起来,以便区分外查询和子查
询。
34.存储过程是存储在服务器上的一组预编译的Transcat-SQL语句。
35.创建触发器的时候可以不是表的所有者或数据库的所有者。
36.设置惟一约束的列可以为空吗?
37.一个表可以创建多个主键吗?
38.SQL Server有数据备份功能但没有数据还原功能。
39.数据库是用来存放表和索引的逻辑实体。
40.ODBC是由Microsoft定义的一种数据库访问标准。
41.创建存储过程必须在企业管理器中进行。
42.触发器主要是通过表操作事件进行触发而被执行的。
43.SQL Server 自动为primary key约束的列建立一个索引。
44.SQL Server的数据库可以转换成Access数据库。
45.删除表时,表中的触发器被同时删除。
46.数据库的名称一旦建立就不能重命名。
47.在SQL Server中用户不能建立全局变量。
48.备份时只能对数据文件进行备份。
49.触发器与约束发生冲突,触发器将不执行。
50.安装Microsoft SQL Server 2000 企业版对操作系统的最低要求可以是
Microsoft Windows 2000 Professional。
验证模式是在安装SQL Server过程中选择的。
系统安装之后,可以重新修改SQL Server系统的验证模式。