0
点赞
收藏
分享

微信扫一扫

Mysql数据库和数据表的创建和信息更改的常用指令

萧萧雨潇潇 2022-03-27 阅读 72
mysql

文章目录

数据库和数据表的创建和信息更改

后续小实验做准备

  1. 创建数据库

    语句:

     create database experiment;
    

通过:show databases;查看创建结果

image-20220326213208967
  1. 创建基本表

    创建表的代码如下:

    • student表

      create table student (sno char(9) primary key, sname char(20) unique, ssex char(2), sage smallint, sdept char(20));
      
    • course表

      create table course (sno char(4) primary key, cname char(40) not null, cpno char(4), ccredit smallint, foreign key(cpno) references course(cno));
      
    • SC表

      create table SC (Sno char(9), Cno char(4), Grade smallint, primary key(Sno,Cno), foreign key(Sno) references Student(Sno), foreign key(Cno) references Course(Cno));
      

    查看创建表的就结果

    image-20220326213232035

    上面创建SC的时候属性是大写开头,二student表和cource表中的全是小写,创建成功,说明win10下mysql不区分大小写

  2. 向基本表中加入数据

    student表数据随便输,course表中有坑,因为course表的参照表是自身,所以要先输入需要的先行课程,CS表依赖student表和course表。最后输入。

    • student

      image-20220326213009395
    • course表

      向输入cpno为null的元组,再选择cpno为已经输入元组cno值相同的元组输入。不然会出现参照不完整的报错。

      image-20220326212933211
    • CS表

      这个表的数据是查看cource表和student表中的数据

      image-20220326213021821

一. 关于数据库和数据表的其它操作

1)数据库

①创建数据库

create database 数据库名;

image-20220326222408867
②显示目前所有的数据库

show databases

③数据库重命名

rename database olddbname to newdbname

大于这个版本修改数据库名字基本上是不行的,采用新建数据库,然后进行数据迁移。

上面的方法是通过重命名表的方式实现数据迁移。

也可以使用dump工具导出数据库的sql文件,更改数据库sql文件中创建数据库的名字。再用source指令引入sql文件实现数据库的数据迁移。

④更改当前使用的数据库

use 数据库名字

2)数据表

①数据表的创建
create table <表名> (<列名><数据类型>[列级约束条件],<列名><数据类型>[列级约束条件], [表级约束条件])

列级约束:只能应用于一列上。

表级约束 :可以应用于一列上,也可以应用在一个表中的多个列上。

字段设置

这里不说那些上面约束条件,太抽象,只说怎么设置列的属性。

  • 列值不能为空

    <列名><属性值> not null

    image-20220326231840407
  • 设置列为主键

    主键不能为空,被设置为主键的列值不能重复

    • 只有一个主键是可以直接

      <列名><属性值> primary key标识主键
      在这里插入图片描述
      course中的sno为主键

    • 多个主键时需要在创建表的末尾添加主键信息

      image-20220326231144128

      这里SC表中Sno和Cno为主键

    • 创建表后追加主键

      alter TABLE <表名> MODIFY <列名> <列的数据类型> PRIMARY KEY
      
  • 设置为外键

    外键必须是参照表的某个key,可以说主键(primary key)也可以是唯一键(unique key)

    有外键时创建数据表,必须要先创建出被参考的表,不然会报错

    • 在创建时设置

      FOREIGN KEY (<外键>) REFERENCES <被参考的数据表>(<被参考的列>)

      image-20220326232331476

      多个外键 :

      image-20220326232634833

    • 在创建表后追加

      -- 已存在表增加外键
      ALTER TABLE Products ADD FOREIGN KEY products_vendors_fk_1 (vend_id) REFERENCES Vendors (vend_id);
      
    • 外键的约束模式

      • RESTRICT

        严格模式(默认的),**父表不能删除或者更新一个已经被子表引用的记录数据(**外键对应的父表被引用的字段,其他字段可以更改)。即,当父表字段数据已经被子表引用时,不能再删除或者更新父表被引用的字段数据。

      • Cascade

        级联模式;针对父表的操作,对应子表关联的数据也跟着被操作。

        • 更新父表被引用的字段,如果该数据被子表外键使用,则子表外键随之更新;
        • 删除父表被引用的字段记录,如果该数据被子表外键使用,子表对应外键所属记录随之删除。
      • Set null

        置空模式,父表字段操作之后,如果该数据被子表外键使用,子表对应的外键字段被置空。

        外键置空的前提是对应字段允许为空,否则外键创建不成功。

      删除的时候子表置空,更新的时候子表级联:

      image-20220327103510745

  • 自动增长
    自增列只能有一个,并且必须设置为key

    如果没有指定就取当前id最大值+1,如果指定了就直接插入或者更新数据子

    自增值在数据库操作失败后也会发生改变,从而影响后续自增列的值

    <列名><属性值> auto_increment

    image-20220326233843284

    • 如果有多个自增列会报错
    Incorrect table definition; there can be only one auto column and it must be defined as a key
    表定义不正确;只能有一个自动列,必须将其定义为键
    

    在IDEA可视化工具中创建多个自增列出现报错

    image-20220327092518353
    • 自增键自增详解

    • 设置自增键的初始值

      image-20220327093226454
    • 自增列的自增步长是可以改变的, 不常用所以不赘述了。

  • 列中的值唯一

    使用unique key标识

    image-20220327100915311

    image-20220327101021025

②数据表信息修改
a. 修改表名

alter table 表名 rename 新表名

image-20220327104039458
b. 增加或删除或修改列
  • 增加

    ALTER TABLE table
    ADD [COLUMN] column_name_1 column_1_definition [FIRST|AFTER existing_column],
    ADD [COLUMN] column_name_2 column_2_definition [FIRST|AFTER existing_column],
    ···;
    
image-20220327111231409
  • 删除

    ALTER TABLE <表名>
    DROP COLUMN column_1,
    DROP COLUMN column_2,
    
image-20220327111415417
  • 修改列

    • 修改列名
    ALTER TABLE 表名 CHANGE 原字段名 新字段名 字段类型 约束条件
    
    image-20220327112606865
    • 还可以设置列的默认值,是否是主键,唯一键,外码等
d. 获取表的基本信息

show columns from <表名>

image-20220327110959445
举报

相关推荐

0 条评论