精华内容
下载资源
问答
  • 对表建立关系
    千次阅读
    2021-11-07 09:03:15

    目录

    1.前言

    2.表与表关系

    1.一对多关系

    2.多对多关系:

    3.一对一关系

    3.对表总结:

    4.补充:

    1.修改表

     2.复制表


    1.前言

    1.方法:foreign key :外键
    	外键就是用来帮助我们建立表与表之间关系的(绑定)
    	
    2.表的关系
    	表与表之间最多只有四种关系
    	    一对多关系
    		    在MySQL的关系中没有多对一一说
    	    	一对多 多对一 都叫一对多!!!
    	    多对多关系
    	    一对一关系
    	    没有关系

    2.表与表关系

    1.一对多关系

    一对多关系
    1.思考路:
        换位思考  分别站在两张表的角度考虑
        判断表与表的关系
    
    2.foreign key使用过程中注意问题:
        (1).一对多表关系   外键字段建在多的一方
        (2).在创建表的时候 一定要先建被关联表(一,少的一方) 
        (3).在录入数据的时候 也必须先录入被关联表
    	
    3.foreign key只是绑定两表关系,容易查询
        若要改变一张表,另一个表也跟着变化,引入级联cascade做到同步
    
    4.语法:
        建dep身份职位表与emp成员表为例:
            create table dep(
    			id int primary key auto_increment,                 # 主键+自增
    			dep_name char(16),
    			dep_desc char(32)
    		);
    		create table emp(
    			id int primary key auto_increment,
    			name char(16),
    			gender enum('teacher','teacher','teacher') default 'teacher',
    			dep_id int,
    			foreign key(dep_id) references dep(id) 
    			on update cascade                                  # 同步更新(注意,不用分号)
    			on delete cascade                                  # 同步删除
    		);
    		insert into dep(dep_name,dep_desc) values('学生','读书'),('老师','教书'),('校长','管理');
    		insert into emp(name,dep_id) values('zcy',2),('mxg',1),('wsx',1),('lzr',3);

    2.多对多关系:

    1.思路:
        在使用foreign key时,注意点:要先建被关联表
        故:通过单独再开设一张 专门用来存储两张表数据之间的关系
    
    2.使用:
        建book图书表与author作者表为例:
    		create table book(
    			id int primary key auto_increment,             # 主键+自增
    			title varchar(32),
    			price int
    		);
    		create table author(
    			id int primary key auto_increment,
    			name varchar(32),
    			age int
    		);
    		create table book2author(
    			id int primary key auto_increment,
    			author_id int,
    			book_id int,
    			foreign key(author_id) references author(id) 
    			on update cascade                              # 同步更新(不用分号,是一句)
    			on delete cascade,                             # 同步删除
    			foreign key(book_id) references book(id) 
    			on update cascade                              # 同步更新
    			on delete cascade                              # 同步删除
    		);
            # 从上到下依次输入数据

    3.一对一关系

    1.思路:
        一对一关系,好比如一个表对应信息是另一个表的详细信息描述(一一对应)
        注意:一对一 外键字段建在任意一方都可以 但是推荐建在查询频率比较高的表中
    
    2.用法(客户表和学生表):
    	create table customer(
    		id int primary key auto_increment,
    		phone int,
    		addr varchar(64)
    	);
    	create table student(
    		id int primary key auto_increment,
    		name varchar(32),
    		age int,
    		student_id int unique,                                # 
    		foreign key(student_id) references customer(id) 
    		on update cascade                                          # 同步更新
    		on delete cascade                                          # 同步删除
    	)
        # 从上到下依次输入数据

    3.对表总结:

    1.表关系的建立需要用到foreign key
        一对多
            外键字段建在多的一方
        多对多
            自己开设第三张存储
        一对一
            建在任意一方都可以 但是推荐建在查询频率较高的表中
    
    2.判断表之间关系的方式
        换位思考!!!
            员工与部门
            图书与作者
            作者与作者详情

    4.补充:

    1.修改表

    MySQL对大小写是不敏感的
    1.修改表名
        alter table 表名 rename 新表名;
    
    2.增加字段
        alter table 表名 add 字段名 字段类型(宽度)  约束条件;
        alter table 表名 add 字段名 字段类型(宽度)  约束条件 first;
        alter table 表名 add 字段名 字段类型(宽度)  约束条件 after 字段名;
    
    3.删除字段
        alter table 表名 drop 字段名;
    
    4.修改字段
        alter table 表名 modify 字段名 字段类型(宽度) 约束条件;
        alter table 表名 change 旧字段名 新字段名 字段类型(宽度) 约束条件;

     2.复制表

    sql语句查询的结果其实也是一张虚拟表
    复制表:只能复制类型与内容
        create table 表名 select * from 旧表;  不能复制主键 外键 ...
        create table new_dep2 select * from dep where id>3;
    更多相关内容
  • 表与表之间建立关系

    千次阅读 2021-03-02 19:04:26
     建立关系的原因?: 2、 针对数据量大的情况下讨论  1:表的结构不清晰(一张表中涵盖多种数据)  2:浪费硬盘空间(有重复的数据)  3:表的扩展性极差(不便于增加,修改,删除等操作) 二、表与表的关系:...

    一、表的概念与分类

    主要通过外键关键字:pirmary key 来建立连系
    1、表与表之间的关系可以分为三种:一对多,多对多,一对一的关系
      建立表关系的原因?:
    2、 针对数据量大的情况下讨论
      1:表的结构不清晰(一张表中涵盖多种数据)
      2:浪费硬盘空间(有重复的数据)
      3:表的扩展性极差(不便于增加,修改,删除等操作)

    二、表与表的关系:一对多

    例如:一个公司的员工和部门之间的连系,把员工和部门分别抽离出来分析
      (1)先站在员工表看能否有多个员工对应一个部门>>>一个部门能否有多个员工(可以)
      (2)再站在部门表看能否有多个部门对应一个员工>>>一个员工能否属于多个部门(不可以)

    结论:员工表和部门表之间的关系是“一对多”的关系(一对多或者多对一)
    在这里插入图片描述
    根据id索引来寻找匹配的内容先通过列表的形式,把一张完整的表切分出来,分析它们之间的关系多对一还是多对多就可以看出情况,换位思考!

    foreign key:外键约束
      1、创建表的时候,必须先创建被关联的表
      2、插入数据的时候,也必须先插入被关联表的数据(先后顺序不能颠倒,不然会报错!)
    代码如下:
      建表:

    # 先建被关联的表
    
    create table dep(
        id int primary key auto_increment,
        dep_name varcher(32),
        dep_desc varcher(128)
    
    );
    
    # 后建数据多的表
    create table emp(
    id int primary key auto_increment,
    emp_naem varchar(64),
    emp_gender enum('male','female','others') default 'male',
    dep_id int,
    foreidn key(dep_id) references dep(id)
    
    );
    

    插入数据:

    insert into dep(dep_name,dep_desc) values('外交部','搞外交'),
            ('教学部','教书育人'),
            ('技术部','技术能力有限部门')
            ;
    
    insert into emp(emp_name,dep_id) values('jack',1),
         ('reso',2),
         ('gelen','3'),
         ('james',2);
    

    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210302190842410.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzUyNTEyOTM4,size_16,color_FFFFFF,t_70
    在这里插入图片描述
    在这里插入图片描述
    2、修改表数据
      通过主键和对应的关系可以对表中的记录增加,修改,删除等操作,也是有先后顺序的

    update dep set id=200 where id=1; # 修改id
    update emp set dep_id =300 where id=1;
    
    delect from dep where id=3; # 删除id3的数据记录
    

    外键虽然能够强制的建立表的关系,但是也会给表的数据之间增加了相关的约束

    1.删除数据的时候  先删员工表的数据 再删部门表的数据
        delete from emp where id = 4;
        delete from dep where id = 3;
    2.级联更新级联删除
    

    3、级联更新、级联删除

    create table dep(
    id int primary key auto_increment,
    dep_name varchar(32),
    dep_desc varchar(128)
    
    );
     
    caeate table emp(
    id int primary key auto_increment,
    emp_name carchar(64),
    emp-gender enum('male','female','othres') default 'male',
    foreign key(dep_id) references dep(id)
    on update cascade
    on delete cascade # 联级修改 删除
    );
    
    # 插入数据
     insert into dep (dep_name,dep_desc) values('外交部',‘搞外交’),(’教学部‘,’教书育人‘),(’技术部‘,’技术能力有限部门‘)
    insert into emp(emp_name,dep_id) values('jack',2),('rose',1),('kevin',3),('galen',1);
    
    # 修改 删除数据
    update dep set id=200 where id=3;
    delect from dep where id=2;
    

    在这里插入图片描述

    三、多对多的关系

    例如:书籍和作者的关系

    换位思考:站在书籍的角度和作者的角度思考,多本书可以被一个作者写,多个作者也能写一本书,

    条件成立,属于多对多,外键已经不能够表达这种关系了,必须通过建立第三方表来记录两者之间的关系
    在这里插入图片描述
    先建两种普通的表 不需要设置外键

    create table book(
        id int primary key auto_increment,
        title varchar(32),
        price int
    );
    create table author(
    id int primary key auto_increment,
    name varcher(32),
    age int
    
    );
    # 手动创建第三方表
    create table book2author(
        id int primary key auto_increment,
        book_id int,
        foreign key(book_id) references book(id)
        on uptade cascade
        on delete cascade , # 直接建立级联
    
        author_id int,
        foregn key (author_id) refrrences  author(id)
        on update cascade
        om delete cascade  #
     
    );
    

    插入数据:

    insert into book(title,price) values('百年孤独'60),(‘丰乳肥臀’,90),(‘疯狂说英语’,129);
    
    insert into auther (nane,age) values('西亚·马尔克斯'98),(‘莫言’,87),(‘李阳’,53);
    
    
    insert into book2auther(book_id,age) values(1,2),(2,3),(2,1),(1,3);
    

    在这里插入图片描述
    **

    四、一对一关系

    **
      1:一对一的场景,当数据量过大的时候,可以考虑把表给拆分开

    2:如老男孩的客户和学生关系(没交学费前和交学费后)

    3:姓名、电话,地址
      在这里插入图片描述
    一对一的关系:外键字段都可以建在任意一方,一般建议把外键字段建立在查找频繁的那一方

    创建表:

    # 左表的一条记录唯一对应右表的一条记录,反之也一样
    
    create table customer(
        id int primary key auto_increment,
        name char(20) not null,
        qq char(10) not null,
        phone char(16) not null
    );
    
    create table student(
        id int primary key auto_increment,
        class_name char(20) not null,
        customer_id int unique, #该字段一定要是唯一的
        foreign key(customer_id) references customer(id) #外键的字段一定要保证unique
        on delete cascade
        on update cascade
    );
    # 三种外键关系都是用foreign key,区别在于如何使用以及其他条件限制即可做出三种关系
    

    了解知识点:
      修改表的完整语句

    1.修改表的完整语句
                1. 修改表名  
                      ALTER TABLE 表名 
                                          RENAME 新表名;
                2. 增加字段
                      ALTER TABLE 表名
                                          ADD 字段名  数据类型 [完整性约束条件…],
                                          ADD 字段名  数据类型 [完整性约束条件…];
                      ALTER TABLE 表名
                                          ADD 字段名  数据类型 [完整性约束条件…]  FIRST;  # 直接移到最前面
                      ALTER TABLE 表名 
                                          ADD 字段名  数据类型 [完整性约束条件…]  AFTER 字段名;  # 寻找插哪个字段的后面                    
                3. 删除字段
                      ALTER TABLE 表名 
                                          DROP 字段名;
                4. 修改字段  # modify只能改字段数据类型完整约束,不能改字段名,但是change可以!
                      ALTER TABLE 表名 
                                          MODIFY  字段名 数据类型 [完整性约束条件…];
                      ALTER TABLE 表名 
                                          CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];
    
    # 查询语句执行的结果也是一张表,可以看成虚拟表
    
        # 复制表结构+记录 (key不会复制: 主键、外键和索引)
        create table new_service select * from service;
    
        # 只复制表结构
        select * from service where 1=2;        //条件为假,查不到任何记录
    
        create table new1_service select * from service where 1=2;  
    
        create table t4 like employees;
    
    展开全文
  • 对表进行操作  1.1 创建表 --使用 create table 语句创建表 语法: create table 表名(字段 数据类型 约束) 例如: create table Student( StudentId int , --学生编号 StudenName varchar(50) --学生...
  • 例:公司与员工的关系,公司为一,公司员工为多,需要在多方建立外键指向一方的主键。 二、多对多的关系 例:商品与订单的关系,一个商品可以属于多个订单,一个订单可以有多种商品。  用户和角色的关系,一个...

    一、一对多的关系

    例:公司与员工的关系,公司为一,公司员工为多,需要在多方建立外键指向一方的主键。


    一对多让两个实体类之间相互表示


    (1)一个公司里面有多个员工。

    private Set<yuangong> yuangongSet=new HashSet<yuangong>();
    public Set<yuangong> getYuangongSet()
    {
    return yuangongSet;
    }
    public void setYuangongSet(Set<yuangong> yuangongSet)
    {
    this.yuangongSet=yuangongSet;
    }

    (2)一个员工只能属于一个公司

    private Gongsi gongsi;
    public Gongsi getGongsi()
    {
    return gongsi;
    }
    public void setGongsi(Gongsi gongsi)
    {
    this.gongsi=gongsi;
    }

    配置一对多的映射关系,在映射文件中配置


    (1)在公司映射文件中,表示所有员工

    需要使用set标签表示所有员工
    set标签的name属性需要写上在公司实体类里面表示员工的set集合名称,set标签里面还要包含一个key标签,key标签的column属性需要写实体类的外键属性名称。
    在key标签的下面还需一个one-to-many标签,标签里面的class属性写员工实体类的全路径

    (2)在员工映射文件中,表示所属公司

    需要在一干涉文件中添加many-to-one标签,标签的name属性需要写上员工实体类里面表示公司的对象名称,标签的class属性需要写上公司类的全路径,标签的column属性需要写上外键属性名称

    创建核心配置文件,把映射文件引入到核心配置文件中

    <mapping resource="实体类配置文件路径"></mapping>


    二、多对多的关系

    例:商品与订单的关系,一个商品可以属于多个订单,一个订单可以有多种商品。
            用户和角色的关系,一个角色可以包括多个用户,一个用户可以是多个角色。

    创建一张用户表和一张角色表,还需创建一张关系表,关系表至少有两个外键,分别指向两张表的主键。

    1、与一对多类似,先是创建实体类,然后让两个实体类互相表示。

    (1)以订单和商品为例
    一个订单可以有多种商品,使用set集合表示
    //一个订单可以有多种商品
        private Set<ShangpinEntity> shangpinEntitySet=new HashSet<ShangpinEntity>();
        public Set<ShangpinEntity> getShangpinEntitySet() {
            return shangpinEntitySet;
        }
        public void setShangpinEntitySet(Set<ShangpinEntity> shangpinEntitySet) {
            this.shangpinEntitySet = shangpinEntitySet;
        }
    一种商品可以属于多个订单,使用set集合表示
        //一种商品可以属于多个订单
        private Set<DingdanEntity> dingdanEntitySet=new HashSet<DingdanEntity>();
        public Set<DingdanEntity> getDingdanEntitySet() {
            return dingdanEntitySet;
        }
        public void setDingdanEntitySet(Set<DingdanEntity> dingdanEntitySet) {
            this.dingdanEntitySet = dingdanEntitySet;
        }

    2、配置映射关系

    (1)基本配置略
    (2)配置多对多关系
    都是使用set标签来表示彼此
    在订单配置文件中配置如下标签
    <!--name="对应实体类中set集合的名称" table="第三张表名(关系表)"-->
            <set name="shangpinEntitySet" table="dingdan_shangpin">
                <!--column="当前映射文件在关系表中外键名称(也就是表当前主键)"-->
                <key column="did"></key>
                <!--class="商品表的实体类全路径" column="商品表在关系表中的外键名称(也就是商品表的主键)"-->
                <many-to-many class="domain.ShangpinEntity" column="sid"></many-to-many>
            </set>
    在商品配置文件中配置如下标签
    <!--name="对应实体类中set集合的名称" table="第三张表名(关系表)"-->
            <set name="dingdanEntitySet" table="dingdan_shangpin">
                <!--column="当前映射文件在关系表中外键名称(也就是表当前主键)"-->
                <key column="sid"></key>
                <!--class="订单表的实体类全路径" column="订单表在关系表中的外键名称(也就是订单表的主键)"-->
                <many-to-many class="domain.DingdanEntity" column="did"></many-to-many>
            </set>


    3、在核心配置文件中引入映射文件
            <mapping resource="domain/DingdaEntity.hbm.xml"/>
            <mapping resource="domain/ShangpinEntity.hbm.xml"/>



    展开全文
  • 一、数据库和数据库管理系统 ...根据数据之间的关系,数据模型结构分为: (1)层次模型(只能简单表示关系层次) (2)网状模型(关系复杂,但是看起来乱) (3)关系模型(常用) 关系模型(重点) ...

    一、数据库和数据库管理系统

    引言:
    - 传统txt文件存储后,查询不方便,所以引入了数据库。
    - 数据库快是由其数据结构决定。

    这里写图片描述

    1,数据库(DataBase:DB)按照一定数据结构存储和管理数据的仓库;

    根据数据之间的关系,数据模型结构分为:
    • (1)层次模型(只能简单表示关系层次)
    • (2)网状模型(关系复杂,但是看起来乱)
    • (3)关系模型(常用)
    关系模型(重点)

    ==将复杂的关系,以简单的二元形式进行表示(即表格)。行叫记录,列叫字段。==

    2.数据分类

    (1)结构化数据:(09年之前)

    可以通过相同的结构来进行统一管理。

    (2)非结构化数据:

    不能通过相同的结构来进行统一管理。

    (3)半结构化数据:

    介于上述两者之间(html/xml)

    3.数据库分类

    (1)关系型数据库:操作结构化数据
    (2)非关系型数据库:非结构化

    4.数据库管理系统(DataBase Management System:DBMS)管理和操作数据库的软件。

    (A)关系型数据库管理系统(R:relationship RDBS)
    (a)Oracle:分布式关系型数据库管理系统
    • (Sun公司的,后被Oracle公司收购,很多大公司都会用,收费价格不菲,按CPU核数收费,每核十几万美元。):
    • 国企一般用Oracle数据库。
    (b) Mysql:开源免费的数据库。

    小。支持GPL(开源软件许可证),即修改后,还必须开源。支持千万级别的数据。

    (c)Sql server:中型的关系型数据管理系统(微软)
    (d)DB2:IBM的:针对中小型企业的数据库管理系统。
    (B)非关系型数据库管理系统(Nosql :not only sql)

    Redis Hbase mengdb neo4j

    二、Mysql

    • Mysql是一个关系型的收据库管理系统,Mysql由Mysql ab公司创立,后被sun公司收购,后又被Oracle公司收购。
    • Mysql内部通过分库分表形式管理数据。一个数据库管理系统可以管理多个数据库,一个数据库中可以存放多张表。

    (一)下载安装 :

    (A)下载:Oracle官网(B)Mysql官网
    (B)安装(服务器)

    (安装过程中需要查看服务的话: window_R调出命令提示符,然后输入 services.msc查看服务)

    安装目录下的重要文件
    C:\Program Files\MySQL\MySQL Server 5.7
       Mysql:
           Data:存放数据信息,一个目录对应一个数据库
           frm文件:存放数据信息
           MYD文件:存放数据信息
       my.ini :mysql的配置文件
    (C)客户端工具

    Navicat for Mysql软件:图形化界面软件。

    (二)通过cmd建立连接:

    (1)切换到mysql的dbms安装目录下的bin目录下:

    打开cmd,执行命令:cd C:\Program Files\MySQL\MySQL Server 5.7\bin

    (2)登陆:命令:mysql -uroot -p
    (3)使用:
    (A)数据库database:
    • (a)查看数据库
      mysql>show databases; (注意s和分号)
    - (B)表table
    • (a)进入mysql数据库/切换数据库 mysql>use mysql
    • (b)查看数据库中的表 mysql> show tables;
    • (c))查看表中所有的数据 mysql>select * from user;

    三、SQL(structured qurery language:结构化查询语言)

    • 数据库的标准化语言:实现数据库的访问和操作。
    • 对大小写不敏感
    • 使用分号作为结束标志

    (一)分类

    (A)DDL(Data defination language)数据定义语言。

    对数据库对象(数据库,表,试图,索引等)结构操作。
    创建creat/修改alter/销毁drop

    (B)DML(Data Management Language)数据操纵语言

    insert/delete/updata/select

    (C)DCL(Data Control language)数据控制语言

    授权(Grant)/取消授权(revoke)

    (D)TCL(Transform Control language):事务控制语言

    提交(Commit)/回滚(rollback)

    (二)DDL:数据定义语言

    例1创建数据库
    --创建数据库bd1804
    create database if not exists bd1804;
    --销毁数据库(很少用,尽量不用)
    drop database if exists bd1804;
    
    • 创建表
    --创建表
    --创建表结构时需要描述字段信息
    create table student (
        sid int,
        sname varchar(20),
        age int 
    );
    
    • 增加属性
    • 表的销毁
    • 表的清除
    (A)数据类型
    (a)整型数据

    这里写图片描述

    (b)浮点数
    • Float(m,n)m,总长度,n,小数位数
    • Double(m,n)
    • Decimal 16字节:精度最高,一般银行用。
    (c)字符串
    • Char(n):定常字符串
    • Varchar(n):可变字符串,最长n,n以内根据内容定长度
    • Test:长文本
    (d)日期类型
    • Date :年月日
    • Time :时分秒
    • Datatime:年月日时分秒(1000年到9999年)
    • Timestamp:时间戳1970年1月1日0时0分0秒到2037年
    • Year
    (e)其他类型
    • Blob:二进制数据(图片,视频,一般不会用。一般存图片等的路径)
    • Enume(‘male’.’femal’):枚举
    • Set(‘1’,’2’,’3’):集合
    • Json:jason类型
    例3:

    碰到与关键字重合的字时,颜色会变,用反单引号引起。只是颜色变了,名字还是不变。

    create table `user` (
        uid int,
        uname varchar(20),
        `password` varchar(20),
        birthday Date 
    );
    
    对表结构操作的全部例子
    create table student (
        sid int;
        sname varchar(20);
        age int
    );
    create table `user` (
        uid int,
        uname varchar(20),
        `password` varchar(20),
        birthday Date 
    );
    #-----修改表结构---alter---- 
    #--在Student表中追加性别属性
    alter table student add sex varchar(20);
    -- 在Student表中添加班级,添加到首位
    alter table student add cid int first;
    -- 添加到指定字段后面
    alter table student add birthday date after cid;
    -- 查看表结构
    desc student;
    
    -- 修改字段(名称,类型,长度,位置)
    -- 修改名称
    alter table student change age sage int ;
    -- 修改类型
    alter table student change sname sname varchar(50);
    //change 必须前面是原字段,后面是新字段。modify可以只修改要改的部分。
    alter table student modify sname varchar(20);
    alter table student change sname  sname varchar(20) after cid;
    alter table student modify sname varchar (20) after cid;
    -- 删除---
    alter table student drop sid;
    #修改表的名称
    rename table student  to stu;
    #清空表:把表的内容清空
    truncate table stu;
    desc stu;
    
    (B)对表内容的完整性约束
    (a)完整性:数据的准确性
    (b)完整性约束分类
    • 实体完整性(实体:记录(记录之间不能重复))
      • 主键约束:primary key 设置为主键的字段必须唯一且不能为空
      • 唯一约束:unique
      • 主键自增:
    • 域完整性
    • 引用完整性
    • 自定义完整性
    (1)添加主键约束例子
    -- 主键约束的添加(唯一不为空,一张表只能有一个主键,但是可以有联合主键)
     -- 主键选择:无意义字段(主键一般不修改,经常变化的字段和业务的字段不适合作为主键)
     -- 1、创建表的同时添加主键约束
     -- 1)字段声明添加primary key 
    create table student(
        sid int primary key,
        sname varchar(20),
        age int
    );
     -- 2)声明时不指定,声明完字段后,添加主键
     drop table student;
     create table student(
        sid int ,
        sname varchar(20),
        age int,
        primary key(sid)
    );
    -- 2.2)联合主键
    drop table student;
    create table student(
        sid int ,
        sname varchar(20),
        age int,
        primary key(sid,sname)
    );
    -- 2、已经有表了,添加约束(用的少,一般创建时就要设计好)
    drop table student;
    create table student(
        sid int ,
        sname varchar(20),
        age int
    );
     --                      约束       约束名称
    alter table student add CONSTRAINT pk_sid primary key(sid);
    
    (2)添加唯一性约束的例子
    alter table student add CONSTRAINT uq_card unique(card);
    (3)主键自增例子
    alter table student modify sid int primary key auto_increment;

    其他

    (一)几个概念
    • A 数据库管理系统软件安装目录
    • B 数据库连接目录:其他编程语言连接数据库jar包信息 connectorJ
    • C 客户端的工具的目录 Workbench
    • D 数据存放的目录 ProgramData

    (二)一般命令语法

    \命令选项参数
    举例1mysql
    • uroot
    举例2java
    • version
    展开全文
  • 出现这样的问题是由于你保存数据时数据库中已经有了相同的数据,而ACCESS中表建立的约束或者主键不允许出现重复的记录。因此会报错。
  • 数据库及数据库中表等数据库对象的建立实验(包括关系图、完整性、权限控制、视图、索引等内容)实验1 SQL Server的安装安装过程展示实验2 设计数据库、创建数据库和数据表实验5 视图实验6 完整性约束实验7 权限管理...
  • 知识点:数据库表的相关概念、创建数据库表的方法、设计数据库表、向数据库表中插入数据、建立不同数据库表之间的关系、删除数据库表。 1、数据表相关的一些概念 1.1 数据库里的数据是如何保存的? 数据库...
  • 关系数据库模型设计

    千次阅读 2020-05-19 17:13:17
    本文从现实世界-概念世界(信息世界)-机器世界(数据世界)逐级抽象,旨在以浅显易懂的语言描述关系数据库应该如何建模,最后用简单名了的描述给出关系模型的设计范式的含义。
  • 关系模型中有3类完整性约束:域完整性、实体完整性、参照完整性。 1.域(列)完整性 也就是用户定义的表字段的完整性 ...简单来说就是对表字段的约束。 2.实体(行)完整性 实体完整性是对关系中的记录...
  • (4)数据依赖F对关系模式的影响1️⃣ 数据冗余(Data redundancy)2️⃣ 更新异常(update anomalies )3️⃣ 插入异常(insertion anomalies )4️⃣ 删除异常( deletion anomalies)2.规范化---改造关系模式,解决插入...
  • 范式,NF,normal format,就是指对表的结构的要求!目的:1,规范结构!2,减少数据冗余!第一范式,1NF,字段原子性要求字段不能再分,要求字段的原子性第二范式,2NF,非部分依赖增加唯一主键即可!ID范式的要求,...
  • SQL时一门独立的语言,专门为关系型数据库建立的查询语言 1、数据库定义语言:DDL语句 create 建表 alter 修改表 drop删除表 2、数据库操作语言:DML语句 insert插入(增) delete删除(删) updat
  • 通过建立一个第三个表存放两个表的主键 4)删除约束 ALTER TABLE 表名 DROP PRIMARY KEY | UNIQUE(column) |  CONSTRAINT cname  [CASCADE]  --CASCADE表示与其依赖的约束也被删除 5)启用禁用...
  • 要求:请安装Kingbase数据库软件,在数据库软件中创建一个自己名字的模式,在该模式下创建学生关系数据表、课程表、选课表。 插入一些数据,尝试查询、更新、删除 二、相关原理与知识 (完成实验所用到的相关原理...
  • 1.掌握数据库、表、视图建立、修改、删除的命令和操作; 2.掌握单表查询的命令和操作; 3.掌握连接查询、嵌套查询的命令和操作; 4.掌握数据库更新的操作命令。 二、实验设备及环境 1.PC机一台; 2.SQL Server...
  • 学习关系模式并了解如何辨别范式

    千次阅读 2021-08-23 12:58:50
    1. 什么是关系模式? 关系模式:关系模式相当于一张二维表的框架,在这个框架下填入数据,...较大的数据冗余,数据一致性差,数据修改复杂,对表进行更新,插入,删除是会报异常。规范化的作用就在于尽量去除冗余,使数
  • 1数据库判断题.doc

    2022-06-16 13:56:34
    投影操作是对表进行水平方向的分割。N 4.在一个关系中不可能出现两个完全相同的元组是通过实体完整性规则实现的。Y 5.建立数据库中的表时,将年龄字段值限制在18~25岁之间。这种约束属于参照完整性 约束。N 6....
  • 数据库建立索引常用的规则

    千次阅读 2019-08-01 19:04:11
    数据库建立索引常用的规则如下: 1、表的主键、外键必须有索引;  2、数据量...
  • Mysql哪些字段适合建立索引

    千次阅读 2020-03-24 15:38:38
    数据库建立索引常用的规则如下: 1、表的主键、外键必须有索引; 2、数据量超过300的表应该有索引; 3、经常与其他表进行连接的表,在连接字段上应该建立索引; 4、经常出现在Where子句中的字段,特别是大表的字段,...
  • Hive学习:数据仓库的建立

    千次阅读 2022-03-09 14:22:15
    【实验名称】:数据仓库的建立 【实验目的】:熟悉Linux系统、MySQL、Hadoop、HBase、Hive、Sqoop、R、Eclipse等系统和软件的安装和使用; 了解大数据处理的基本流程; 熟悉数据预处理方法; 熟悉在不同类型数据库...
  • 轻量级锁的执行过程是代码进入同步块的时候,如果当前对象没有被锁定(锁标志为是01)则先在线程的栈帧中建立一个锁记录空间(lock record)将对象的mark word拷贝过来,然后利用cas操作尝试将对象的markword更新为...
  • 关系模式的规范化

    千次阅读 2020-03-30 17:47:56
    了解关系模式规范化的作用 掌握第一范式-重点 掌握第二范式-重点 掌握第三范式-重点 回顾关系模式 关系模式:关系模式相当于一张二维表的框架,在这个框架下填入数据,称为关系模式的一个实例,或者叫关系(R) R...
  • 此处将对表的第2行进行举例。i=2时,利用{1}的坐标系变换到{2}。 SDH的顺序是 。 1)先将坐标系i-1的x_i-1轴绕z_i轴转到与坐标系i的x_i轴平行,转过的角度为 ,右手准则拇指指向为z正方向为正; 2)再将x_i-1轴沿z_...
  • SQL的理解(对表的引用)

    千次阅读 2018-01-05 14:00:18
    如果我们从集合论(关系代数)的角度来看,一张数据库的表就是一组数据元的关系,而每个 SQL 语句会改变一种或数种关系,从而产生出新的数据元的关系(即产生新的表)。 我们学到了什么? 思考问题的时候从表的角度...
  • 单击“新建”就能够创建索引 (2)在设计表中进行设计表,管理索引/键 (3)在关系图中,加入表后右击关系图中的某个表,就有“索引/键” (4)通过向导,数据库---创建索引向导 (5)通过T-SQL语句 2、能过“索引优化向导”...
  • 关于关系型数据库的一些基本概念

    千次阅读 2020-06-17 11:03:43
    数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统访问...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 41,231
精华内容 16,492
关键字:

对表建立关系