zoukankan      html  css  js  c++  java
  • MySQL基础入门学习【5】修改数据表

    1.回顾--约束的分类:

    列级约束: 对一个数据列建立的约束;既可以在列定义时声明,也可以在列定以后声明

    表级约束: 对多个数据列建立的约束;只能在列定义后声明 

    按照功能可将约束分为: 非空约束、主键约束、唯一约束、外键约束、默认约束;

    其中,按照参照操作数目的多少来划分,非空约束和默认约束不存在表级约束,剩余三种既可以存在表级约束也可以存在列级约束)

    2. 修改数据表:

    (1) 添加单列:ALTER TABLE tbl_name ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name] ; first: 插入列在第一列, after * :插入列置于指定列的后方, 省略: 插入列位于所有列的最下面

    (2) 添加多列: 不能指定位置关系,只能在原来数据表列的下方。ALTER TABLE tbl_name ADD [COLUMN] (col_name column_definition,...)

    (3)删除列: ALTER TABLE tbl_name DROP [COLUMN] col_name

    (4) 添加、删除约束

    a)添加主键约束(只能有一个): ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...)

                               索引类型包括哈希索引和b-tree索引,默认为b-tree索引

    (b) 添加唯一约束(可以有多个): ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] UNIQUE [INDEX | KEY] [index_name] [index_type]  (index_col_name,...)

    (c) 添加外键约束: ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,...) reference_definition

    (d) 添加或删除默认约束: ALTER TABLE tbl_name ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}

    (e) 删除主键约束: ALTER TABLE tbl_name DROP PRIMARY KEY

    (f) 删除唯一约束: ALTER TABLE tbl_name DROP {INDEX | KEY} index_name

    删除的是约束,而并非字段

    (g) 删除外键约束: ALTER TABLE tbl_name DROP FOREIGN KEY fk_symbol

    (删除FOREIGN KEY; 删除索引INDEX) 

    (5) 修改列定义:(数据列的名字不存在问题,但是数据列的类型可能存在问题时,也有可能位置上有问题)

    ALTER TABLE tbl_name MODIFY [COLUMN] col_name column_definition [FIRST | AFTER col_name]

    !!!由大类型修改到小类型有可能造成数据的丢失!!! 例如将SMALLINT UNSIGNED(0~65535) 改成TINYINT UNSIGNED(0~255)

    (6) 修改列名称:CHANGE除了可以修改列定义还可以修改列名称

    ALTER TABLE tbl_name CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST | AFTER col_name)

    (7) 修改数据表:

    (a)数据表更名: 

    方法一: ALTER TABLE tbl_name RENAME [TO | AS] new_tbl_name

    方法二: RENAME TABLE tbl_name TO new_tbl_name 

                 [, tbl_name2 TO new_tbl_name2]...   (可以为多张数据表更名)

    尽量少使用数据列的更名以及数据表的更名: 以后创建了索引或曾经使用过视图或存储过程、表名或列名被引用的情况下,表名列名被修改了可能导致某些视图或存储过程无法正常工作。

     [参考链接]   https://www.imooc.com/learn/122 

                   

  • 相关阅读:
    程序员职业规划
    SSH框架优缺点
    Servlet的生命周期,并说出Servlet和CGI的区别,Servlet与JSP的区别
    什么是J2EE,包括哪些规范!
    JS中定义类的方法
    audio.js – 随时随地,播放 HTML5 的声音
    jquery面试题里 缓存问题如何解决?
    产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复
    JAVA排序算法
    java面试题中常见的关于String类问题总结
  • 原文地址:https://www.cnblogs.com/jade-91/p/8678037.html
Copyright © 2011-2022 走看看