关于应用MySQL数据库的一些相关问题

本文详细介绍了如何在MySQL中创建数据库、数据表及设置外键的过程。包括创建数据库时指定字符集、创建数据表时设置索引以及创建外键约束等步骤。
           在观看本教程之前,首先你要确保在你的电脑上安装有相应的MySQL版本。
    
  

       在下面我们整个数据库操作中,我们会用到如下的SQL命令:
        a、创建数据库并为其设置字符集
              create database stu_db default character set utf8 collate utf8_general_ci;
        b、创建完数据库后,我们看看是否创建成功,查看数据库的语句是:
              show databases;
        c、在数据库创建完之后,我们接着根据我们的实际需求去创建数据表:
              create table department(
                     
                     id int not null auto_increment,
                     d_name varchar(11) not null,

                     d_num int(11) not null,
                     primary key(id),
                     index index_name(d_num)
              );
              在上面中我们添加了一行 index index_name(d_num),为d_num这个属性设置索引,这个是必须的因为我们待会创建student表的时候将会用这个属性做外键参照,当然如果你直接以department的ID作为外键参照,就不用这行了,因为主键在生成的时候就建立了唯一索引。如果你在创建表的时候没有添加索引,我们可以通过如下的方式去添加索引:
             alert table department add index(d_num);               

       d、创建student 表
             create table student (
                   id int not null auto_increment,
                   stu_name varchar(11) not null,
                   stu_num int(11) not null,
                   stu_d_num int(11) not null,
                   primary key(id),
                   constraint FK foreign key(stu_d_num) references department(d_num);
             );
             
        或者是在创建完数据表之后我们在进行创建外键约束:
            alert table student add foreign key FK(stu_d_num) references department(d_num);
        接下来我们看详细的图文操作:
          
1.打开windows(在搜索框中搜索cmd ,注意要右键以管理员方式运行)
        在命令行中输入:net start MySQL(这个是打开MySQL服务器,如果你不是以管理员的身份运行的命令行窗      口那么在启动MySQL时就会报  ‘发生系统错误5’);
        等到MySQL服务启动之后如图
        
       
       接下来我们利用自己的MySQL账号去登录进MySQL服务器
       使用的命令就是 MySQL -u[username] -p(在这里我的用户名是root)
       

     利用SQL命令查看我们创建的数据库  show databases;(注意这个地方的database是复数形式,并且每个SQL        语句写完之后都得用逗号分隔)
                
     


接下来我们利用SQL语句创建数据库,并且设置字符集,例如我们创建stu_db数据库。
     需要注意的是,我们在写stu_db时不需要给它加引号,我在测试的时候发现,这个地方加引号会报错。
 
     
    可以看到,数据库中已经产生了stu_db数据库。
    
    我们接下来,再在这个数据库中添加数据表,我们创建院系表 department
     
     

    可以看到,在我创建表的过程中,由于引号的添加导致产生了很多错误,因此,在SQL语句的书写中
特别要注意引号的添加位置,不然很容易出错。
   接下来我们创建学生表stu_db,在这个表中将以院系表的编号作为其外键,但是很显然,在department表中,
我们并没有发现院系编号的列,所以我们要在院系表中添加一列使用的SQL语句是 
   alter table department add column d_num int(11) not null;
   

   再来看表结构,我们发现这个时后数据表中的院系名称d_name是允许为空的,这很闲然是不符合实际需求的,所以我们要对它进行非空的修改,SQL语句为
   alter table department modify d_name varchar(11) not null;
    
   可以看到修改成功了!

   接下来我们根据department来创建student表,SQL语句为:
   create table student(
    id int not null auto_increment,
    stu_name varchar(11) not null,
    stu_num int not null,
    constraint stu_d_num foreign key(d_num) references department(d_num),
    primary key(id)
    );
     
    可以看到在我们设置外键时失败了,这个是什么原因呢?我们首先来分析一下,外键要有哪些条件

   1、数据类型的比配,比如说,在我们所要参照的表中的列属性为int(11),这样我们在设置外键的设置时要设置
       int(11) 属性稍有偏差,都会造成外键设置的失败。
   2、数据表的引擎不同,若要使用外键约束,数据表的引擎必须是InnoDB不然就无法使用外键。
   3、外键设置有个特点,设置成外键参考的属性要么是主键,如果不是主键,那么必须为这个属性添加索引,不然
       外键也无法设置成功。

       这三点是比较常见,又容易忽略的问题,我就是因为上面的第三个问题发生的错误。

         
       我们为department的编号列添加索引  
                
         alert table department add index(d_num);   
      
      我们再看,创建student表并添加外键: 
        
         

        创建成功!



  在设置外键的过程中还有几个特别重要的属性,也是初学者需要掌握的,
   1、cascade :级联更新和删除
   2、set NUll: 父表中删除时,子表中设置成NULL。
   3、no Action: 父表的操作不会影响到子表。
   4、restrict:拒绝删除或者更新父表。
   5、set default :innoDB暂时不支持这一属性。
     






             

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值