精华内容
下载资源
问答
  • 1、数据库的每张只能有一个主键,不可能个主键。 2、所谓的一张个主键,我们称之为联合主键。 注:联合主键:就是用多个字段一起作为一张的主键。 3、主键的主键的作用是保证数据的唯一性和完整性,...

    1、数据库的每张表只能有一个主键,不可能有多个主键。

    2、所谓的一张表多个主键,我们称之为联合主键。

     注:联合主键:就是用多个字段一起作为一张表的主键。
    

    3、主键的主键的作用是保证数据的唯一性和完整性,同时通过主键检索表能够增加检索速度。

    展开全文
  • 四种条件约束:非空 唯一性 主键约束 外键约束 非空约束(not null)约束的字段不能为空值,必须赋具体的数据 CREATE TABLE t_user ( id INT (4), NAME VARCHAR(32) NOT NULL, class BIGINT(1000) ); 这里的...

    constraint   约束数据(对表中数据的限制条件)

    四种条件约束:非空  唯一性  主键约束 外键约束

    • 非空约束(not null)约束的字段不能为空值,必须赋具体的数据    

    CREATE TABLE t_user (
        id INT (4),
        NAME VARCHAR(32) NOT NULL,
        class BIGINT(1000)
    );

    这里的ID不可以是空值

    • 唯一性约束(unique)约束的字段具有唯一性,不可重复
    1. 列级约束

     CREATE TABLE t_user (
        id INT (4)unique,
        NAME VARCHAR(32) ,
        class BIGINT(1000) 
    );

    1. 表级约束(多个字段联合进行约束)

     CREATE TABLE t_user (
        id INT (4)
        NAME VARCHAR(32) ,
        class BIGINT(1000) 

        unique(id,name)

    //多个字段的联合唯一性约束 constraint  表名 _ 字段名 _约束字段名

    );

    • 非空性约束与联合性唯一约束的联合应用(既不能重复且唯一使用)

    CREATE TABLE t_stu(
        NO INT (4) NOT NULL UNIQUE 
        NAME VARCHAR(128)
    );

    • 主键约束

    primary ky(pk)

    主键约束  主键字段 主键值

    表中某个字段被添加主键约束后,该字段被称为主键字段,主键字段中出现的每一个数据都称为主键值


    主见约束的作用;

    添加主见约束的字段既不能为空,也不能重复。。。。效果与not null unique 相同,但是默认添加了一个"索引 -----index"(

    提高了检索效率)

    一张表应该有主键,主键的值不能修改,及时两个数据完全相同但是他们的主键值不同,也认为他们是不同索引

    1. 根据个数分类,单一主键和复合主键

        列级写法
    CREATE TABLE t_stu(
        NO INT (4) PRIMARY KEY

        NAME VARCHAR(32) NOT NULL

    );

        表级写法

    CREATE TABLE t_stu(
        NO INT (4),
        NAME VARCHAR(32) NOT NULL
         PRIMARY KEY(id)
    );

    对于复合主键,只要有一个字段值不同就认为不符合

      

    2.根据业务逻辑分为:自然主键和业务主键

    自然主键:若是一个自然数,则这个自然数和业务没有任何关系

    业务主键:主键值和当前的业务紧密相关, 

    mysql自动生成主键值AUTO_INCREMENT 

    mysql提供一个自增数字auto_increment,默认从1开始自增。

    CREATE TABLE t_students(
        id INT (4) PRIMARY KEY AUTO_INCREMENT,
        NAME VARCHAR(32) NOT NULL
    );

     

    • 外键约束(foreign key)(外键在同一个表中可以有多个

    外键约束,外键字段,外键值:

    1. 单一外键:给一个字段添加外键约束

    DROP TABLE IF exits  t_class;

    CREATE TABLE t_class (
        cno INT(4) PRIMARY KEY,
        cname VARCHAR(32)
    );

    DROP TABLE IF exits t_stdent;

    CREATE TABLE t_student(
        sno INT(4)PRIMARY KEY AUTO_INCREMENT,
        sname INT (4),
        classno INT(4),
        CONSTRAINT t_stdent_class_fk FOREIGN KEY(classno) REFERENCES t_class(cno)
    );

    首先避免了数据冗余,其次添加了外键约束

    以上的表中产生了父子关系,先有父的数据,才有子 ,创建表时应该先创建父表数据再创建字表数据。

    外键字段可以为null,外键为空的数据称为孤儿数据

    被应用字段必须具有唯一性约束,

    外键约束应该注意:

    分成两张表来存储,可以减少数据的冗余

    典型的一对多的关系,在多的一方要添加外键

    SELECT 
    	s.sname,c,cname
    FROM 
    	t_student
    JOIN 
    	t_class
    ON 
    	s.cno = c.classno;
    查询学生做对应的班级名称。

    级联更新与级联删除(在外键约束的基础之上来使用)

    在外键约束后面添加关键字(谨慎使用

    级联删除:

    alter table t_student add constraint t_student_classno_fk foreign key(classno) reference t_class(cno);

    级联更新:

    alter table t_student add constraint t_student_classno_fk foreign key(classno) reference t_class(cno) on update cascade;(及时更新与之相关的数据)

     

    1. 复合外键:给多个字段添加外键约束

     

     

     

     

     

     

     

     

    展开全文
  • sql 关于一表个主键唯一性的约束

    万次阅读 2019-02-27 17:28:15
    1.对于一般的,我们只需设一个主键,防止重复,但是我们如果设置多个主键,是每个主键唯一性吗?还是多个主键组合起来具有唯一性 2.答案肯定是多个主键合起来具有唯一性,话说太多,现在上例子 3.例如,我建...

    1.对于一般的表,我们只需设一个主键,防止重复,但是我们如果设置多个主键,是每个主键都有唯一性吗?还是多个主键组合起来具有唯一性

    2.答案肯定是多个主键合起来具有唯一性,话说太多,现在上例子

    3.例如,我建了有三个主键的表,如图:

    4.我可以如下图所示添加数据,说明各个主键的唯一性不是单独的,如果是单独的,肯定无法添加了

    5.但是我不可如下图,插入数据:

     

    展开全文
  • 主键约束:primary key 非空约束:not null 唯一约束:unique 外键约束:foreign key 1.1 非空约束:not null 1)在创建时添加约束: CREATE TABLE stu( id INT, NAME VARCHAR(20) NOT NULL -- name为非空...

    目录

    1 表的约束

    1.1 非空约束:not null

    1.2 唯一约束:unique,值不能重复

    1.3 主键约束:primary key

    1.4 外键约束:foreign key


    1 表的约束

    约束,是对表中的数据进行限定,保证数据的正确性、有效性和完整性,约束分为以下几类:

    • 主键约束:primary key
    • 非空约束:not null
    • 唯一约束:unique
    • 外键约束:foreign key

    1.1 非空约束:not null

    1)在创建表时添加约束:

    CREATE TABLE stu(
    	id INT,
    	NAME VARCHAR(20) NOT NULL -- name为非空
    );

    2)创建表后再添加非空约束:

    ALTER TABLE stu MODIFY NAME VARCHAR(20) NOT NULL; 

    3)删除name的非空约束:

    ALTER TABLE stu MODIFY NAME VARCHAR(20)

    1.2 唯一约束:unique,值不能重复

    1)创建表时添加唯一约束:

    CREATE TABLE stu(
    	id INT,
    	number VARCHAR(20) UNIQUE
    );

    注意:MySQL中唯一约束限定的列的值可以有多个null

    2)删除唯一约束:

    -- alter table stu modify number varchar(20); 不同于非空约束的删除方法
    ALTER TABLE stu DROP INDEX number;

    3)创建表后添加唯一约束:

    ALTER TABLE stu MODIFY number VARCHAR(20) UNIQUE;

    1.3 主键约束:primary key

    1)注意:

    • 若某一列添加了该约束,则代表了非空,且唯一;
    • 一张表只能有一个字段为主键;
    • 主键就是表中记录的唯一标识;

    2)创建表时添加主键约束

    CREATE TABLE stu(
    	id INT PRIMARY KEY,
    	number VARCHAR(20)
    );

    3)删除主键

    -- 错误方式 ALTER TABLE stu MODIFY id int;
    ALTER TABLE stu DROP PRIMARY KEY;

    4)创建完表后添加主键

    ALTER TABLE stu MODIFY id INT PRIMARY KEY;

    5)自动增长:若某一列是数值类型的,使用关键字auto_increment 可以来完成值得自动增长。

    • 在创建 表时添加主键约束,且完成主键自增长 
    CREATE TABLE stu(
    	id INT PRIMARY KEY AUTO_INCREMENT,
    	number VARCHAR(20)
    );
    • 删除自动增长
    ALTER TABLE stu MODIFY id INT;
    • 创建后,添加自动增长
    ALTER TABLE stu MODIFY id INT AUTO_INCREMENT;

    1.4 外键约束:foreign key

    【引例】我们创建一张职工表如下,但是发现存在明显的缺陷:

    • 数据冗余;
    • 后期还会出现增删改的问题;

    所以,基于以上问题,我们可以通过拆表解决,一张员工表,一张部门表,员工表中的dep_id 对应部门表中的id

    以上仍然存在一个问题,当在员工表中输入不存的部门时,数据依然可以添加,不符合实际,因此,这里就可以通过使用外键约束来解决。

    【概念】什么是外键约束?

    外键,就是从表中与主表主键对应的那一列,如:员工表中的dep_id,其中,主表是一方,用来约束别人的表,从表可以是多方,被别人约束的表。

    注意:外键可以为NULL,但是不能是不存在的外键值。

    1)创建表时添加外键

    语法:
            create table 表名(
                       ...
                       外键列
                       constraint 外键名称 foreign key (外键列名称) references 主表名称(主表主键名称)
            );

    -- 创建部门表(id,dep_name,dep_location) 
    -- 一方,主表 
    CREATE TABLE department(  
    	id INT PRIMARY KEY AUTO_INCREMENT,
    	dep_name VARCHAR(20),
    	dep_location VARCHAR(20) 
    ); 
     
    -- 创建员工表(id,name,age,dep_id) 
    -- 多方,从表 
    CREATE TABLE employee(
    	id INT PRIMARY KEY AUTO_INCREMENT,
    	NAME VARCHAR(20),
    	age INT,
            dep_id INT, -- 外键对应主表的主键
            CONSTRAINT emp_dep_fk FOREIGN KEY (dep_id) REFERENCES department(id)
    ); -- 外键对应主表的主键  
     
    -- 添加2个部门 
    INSERT INTO department VALUES(NULL, '研发部','广州'); 
    INSERT INTO department VALUES(NULL, '销售部','深圳'); 
     
    -- 添加员工,dep_id表示员工所在的部门 
    INSERT INTO employee (NAME, age, dep_id) VALUES ('张三', 20, 1); 
    INSERT INTO employee (NAME, age, dep_id) VALUES ('李四', 21, 1); 
    INSERT INTO employee (NAME, age, dep_id) VALUES ('王五', 20, 1); 
    INSERT INTO employee (NAME, age, dep_id) VALUES ('老王', 20, 2); 
    INSERT INTO employee (NAME, age, dep_id) VALUES ('大王', 22, 2); 
    INSERT INTO employee (NAME, age, dep_id) VALUES ('小王', 18, 2); 
    SELECT * FROM employee;
    SELECT * FROM department;

    因为有外键的约束,在员工表中添加一个不在部门表范围内的内容,则无法保存:

    2)删除外键:ALTER TABLE 表名称 DROP FOREIGN KEY 外键名称;

    -- 删除外键
    ALTER TABLE employee DROP FOREIGN KEY emp_dep_fk;

    3)在创建表后添加外键:
    ALTER TABLE 表名称 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);

    -- 添加外键
    ALTER TABLE employee ADD CONSTRAINT emp_dep_fk FOREIGN KEY (dep_id) REFERENCES department(id);

    4)级联操作

    若希望改动部门表的id,同时希望自动改动员工表中的id,这时就需要进行级联操作,需要在添加外键的时候设置级联:

    • 添加级联操作:ALTER TABLE 表名称 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称)  ON UPDATE CASCADE ON DELETE CASCADE ;
    • 分类:级联更新 ON UPDATE CASCADE
                 级联删除 ON DELETE CASCADE 

    本文为博主原创文章,转载请注明出处!

    若本文对您有些许帮助,轻抬您发财的小手,关注/评论/点赞/收藏,就是对我最大的支持!

    祝君升职加薪,鹏程万里!

    展开全文
  • SQL Server如何给主键添加主键约束

    千次阅读 2021-01-20 17:18:55
    在如下图中大家可以看到的是一个Student,其中表中可以看到一个StudentNo的列,今天主要来说的就是针对如何给这个StudentNo来添加一个主键约束。(这里也希望大家能够学以致用)4     
  • 数据库MySQL之主键约束、...每张数据只能存在一个主键 主键保证记录的唯一性 主键自动为NOT NULL,也就是说必须要为主键赋值。但如果主键选择了AUTO_INCREMENT,那么不需要手动赋值。 auto_increment必须和主键pr...
  • Java知识体系最强总结(2021版)

    万次阅读 多人点赞 2019-12-18 10:09:56
    也算是记录自己在从事编程工作的成长足迹,通过博客可以促进博主与阅读者的共同进步,结交更多志同道合的朋友。特此分享给大家,本人见识有限,写的博客难免错误或者疏忽的地方,还望各位大佬指点,在此表示...
  • 如果id的位置几个0的话:设置主键并且自动排序时,0会从1开始递增; Insert 进去 id = 0的数据,数据会从实际的行数开始增加,和从0变化不一样; 现在主键是没有0的,如果把某个id改成0的话,0不会变!直接...
  • MySQL创建约束条件(四)

    千次阅读 多人点赞 2019-11-15 14:09:16
    古语云: 万恶淫为首,百善孝为先。 我们后辈当自勉。 上章简单介绍了 MySQL的数据类型(三),如果没有看过,请观看上. 创建章时,我们学习了 MySQL的数据类型, 就像Java 知道了 int,string 之后...
  • MySQL 面试题

    万次阅读 多人点赞 2019-09-02 16:03:33
    当年,我们记着几个一定要掌握的重心: 重点的题目添加了【重点】前缀。 索引。 锁。 事务和隔离级别。 因为 MySQL 还会部分内容和运维相关度比较高,所以本文我们分成两部分【开发】【运维】两部分。 对于...
  • 查询语句过滤空值 过滤空值 如果该值是空的 就当做0来处理 ... 利用ORDER BY 关键字 来 约束表按照什么 条件来排序 ASC代表升序 也是默认的 DESC代表降序 SELECT 字段名 FROM 表名 ORDER BY 字段名 ASC 聚合函数: S
  • 首先我们来想象一下,前篇文章在我们操作数据库的过程,自由度是很高的,想给哪个赋值就给哪个赋值,但是这样子,就会造成我们所创建的数据库数据不完整,例如我创建一个学生信息,你可能添加时候忘了添加学号...
  • mysql面试题

    千次阅读 2019-09-23 12:28:36
    最全MySQL面试题和答案 Mysql 的存储引擎,myisam和innodb的区别。 答: 1.MyISAM 是非事务的存储引擎,适合用于频繁查询的应用。表锁,不会出现死锁,适合小数据,小并发。...数据类型哪些     ...
  • oracle对表添加主键约束的sql语句

    万次阅读 2017-02-27 08:57:46
    –创建主外键(可以在创建的同时添加主外键约束,也可以  ...—–方法创建的同时,添加主键约束 语法: create table 表名  (  列名1 数据类型及长度 constraint 主键名称(一般主键名称为”
  • MySQL约束

    2020-12-14 13:38:39
    约束很多,这里主要介绍如下几个: null/not null,default, comment, zerofill,primary key,auto_increment,unique key 。 空属性 两个值:null(默认的)和not null(不为空) 数据库默认字段基本都是字段为空,...
  • SQL岗位30面试题,SQL面试问题及答案

    万次阅读 多人点赞 2019-06-19 17:42:34
    SQL岗位30面试题,SQL面试问题及答案: 什么是SQL? SQL(结构化查询语言)是种设计用于检索和操作数据的数据库。它属于美国国家标准协会(ANSI)的种标准,可用于执行Select(选择)、Update(更新)、...
  • 一个表可以没有主键,但最多只能个主键,并且主键值不能包含NULL。 在MySQL,InnoDB数据的主键设计我们通常遵循几个原则: 采用一个没有业务用途的自增属性列作为主键; 主键字段值总是不更新,只有新增或者...
  • SQLServer中有五种约束,Primary Key约束、Foreign Key约束、Unique约束、Default约束和Check约束,今天使用SQL Server2008来演示下这约束的创建和使用的方法。 什么是主键? 在数据库,常常不只是一个表,...
  • 专注,勤学,慎思。戒骄戒躁,谦虚谨慎 just do it 导航 博客园 首页 新随笔 ... 二 三 四 五 六 30 31 1 2 3 4 5 6 7 8 9 10 11...
  • 约束分为种状态validate/novalidate,enable/disable,可以通过alter table .. modify constraint ....enable/disable validate/novalidate修改 同时约束也分为2种模式,deferred/immediate,这里不做讨论.因为...
  • 数据库主键 4种类型及6种约束

    万次阅读 2018-03-27 13:29:43
    导读:在看《SQL必知必会(第四版)》看到运用外键建立关系,联想到工作时建表主键类型的选择问题,查资料的时候遇到了比较简洁的一个文章; 1. 基础理论: 1.主键和外键的设计原则。 a. 主键应尽量分离于业务的...
  • 数据库面试

    千次阅读 多人点赞 2019-02-13 09:03:42
    、数据库问答题 1. SQL语言包括哪些类型? 数据定义DDL:Create Table,Alter Table,Drop Table, Create/Drop Index等 ...内连接是保证两个表中所有的行都要满足连接条件,而外连接则不然。 在外连接...
  • 测试开发笔记

    万次阅读 多人点赞 2019-11-14 17:11:58
    章 测试基础 7 什么是软件测试: 7 ★软件测试的目的、意义:(怎么做好软件测试) 7 3.软件生命周期: 7 第二章 测试过程 8 1.测试模型 8 H模型: 8 V模型 9 2.内部测试 10 3外部测试: 10 验收测试:(在系统...
  • 在绿色工具里,可以对多个字段打上主键的标识“锁”,但这并不表示拥有了多个主键,而是说这几个字段共同构成了主键。当然,他们之间也是次序的。查看次序可以使用show index from table。会看到Key_Name中有多...
  • Oracle入门到实战

    万次阅读 多人点赞 2019-11-09 11:12:07
    Oracle学习:Oracle基础语句、Oracle查询关键字、Oracle常用函数、Oracle常用结构
  • SQL的主键和外键约束

    千次阅读 2016-05-09 15:04:05
    (1)插入非空值时,如果主键表中没有这值,则不能插入。 (2)更新时,不能改为主键表中没有的值。 (3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除。 (4)更新主键记录时,同样级联...
  • Linux 命令面试题

    万次阅读 多人点赞 2019-07-24 09:40:04
    chown user1:group1 file1 改变一个文件的所有人和群组属性 find / -perm -u+s 罗列一个系统所有使用了SUID控制的文件 chmod u+s /bin/file1 设置一个二进制文件的 SUID 位 - 运行该文件的用户也被赋予和所有者...
  • postgresql 约束主键、外键

    千次阅读 2020-05-28 15:34:44
    由于工作需要,近期在学习postgresql数据库方面的东西,一下为学习过程摘录的一些东西,希望记录自己学习的过程,同时可以帮助需要这方便帮助的小伙伴。 以下文章为摘录,并非原创。 出处...
  • 文章目录1、约束简介2、非空约束(not null、nk)2.1 范例1:使用非空约束2.2 范例2:正确地增加语句2.3 范例3:错误地增加语句3、唯一约束(unique、uk)3.1 范例1:使用唯一约束3.2 范例2:正确地增加语句3.3 范例3:...
  • hive是没有主键的,但在建表时最好加一个主键,方便查询。联合主键另说,其实也就可一利用联合主键来。 1.uuid 2.row_number() 例子: insert into tbl_dim select row_number() over (order by tbl_stg.id) + t2....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 59,876
精华内容 23,950
关键字:

一个表中可以有几个主键约束