• mysql-数据表的基本操作


    mysql-数据表的基本操作

    创建数据表

    1. 语法格式

      CREATE TABLE <表名> ([表定义选项])[表选项][分区选项];
      1. CREATE TABLE:用于创建给定名称的表,必须拥有表CREATE的权限。
      2. <表名>:指定要创建表的名称,在 CREATE TABLE 之后给出,必须符合标识符命名规则。表名称被指定为
      3. db_name.tbl_name,以便在特定的数据库中创建表。无论是否有当前数据库,都可以通过这种方式创建。在当前数据库中创建表时,可以省略 db-name。如果使用加引号的识别名,则应对数据库和表名称分别加引号。例如,'mydb'.'mytbl' 是合法的,但 'mydb.mytbl' 不合法。
      4. <表定义选项>:表创建定义,由列名(col_name)、列的定义(column_definition)以及可能的空值说明、完整性约束或表索引组成。
      5. 默认的情况是,表被创建到当前的数据库中。若表已存在、没有当前数据库或者数据库不存在,则会出现错误
      6. 要创建的表的名称不区分大小写,不能使用SQL语言中的关键字,如DROP、ALTER、INSERT等。
      7. 数据表中每个列(字段)的名称和数据类型,如果创建多个列,要用逗号隔开。
      
    2. 实例

      mysql> create table tb_emp1 (id int(11),name varchar(25),depID int(11),salary float);
      

    数据表添加字段

    1. 在末尾添加字段

      1. 语法格式

        ALTER TABLE <表名> ADD <新字段名><数据类型>[约束条件];
        - <表名> 为数据表的名字;
        - <新字段名> 为所要添加的字段的名字;
        - <数据类型> 为所要添加的字段能存储数据的数据类型;
        - [约束条件] 是可选的,用来对添加的字段进行约束
        
      2. 实例

        mysql> ALTER TABLE student ADD age INT(4);
        
    2. 在开头添加字段

      1. 语法格式

        ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] FIRST;
        
      2. 实例

        mysql> ALTER TABLE student ADD id INT(4) FIRST;
        
    3. 在中间添加字段

      1. 语法格式

        ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] AFTER <已经存在的字段名>;
        
      2. 实例

        mysql> ALTER TABLE student ADD name VARCHAR(25) AFTER id;
        

    查看表结构

    在 MySQL 中,查看表结构可以使用 DESCRIBE 和 SHOW CREATE TABLE 语句

    1. DESCRIBE

      1. 语法格式

        DESCRIBE <表名>;
        DESC <表名>;
        - Null:表示该列是否可以存储 NULL 值。
        - Key:表示该列是否已编制索引。PRI 表示该列是表主键的一部分,UNI 表示该列是 UNIQUE 索引的一部分,MUL 表示在列中某个给定值允许出现多次。
        - Default:表示该列是否有默认值,如果有,值是多少。
        - Extra:表示可以获取的与给定列有关的附加信息,如 AUTO_INCREMENT 等
        
    2. SHOW CREATE TABLE

      1. 语法格式

        SHOW CREATE TABLE <表名>G;
        - 使用 SHOW CREATE TABLE 语句不仅可以查看创建表时的详细语句,而且可以查看存储引擎和字符编码。如果不加“G”参数,显示的结果可能非常混乱,加上“G”参数之后,可使显示的结果更加直观,易于查看
        

    修改数据表

    修改表名

    1. 语法格式

      ALTER TABLE <旧表名> RENAME [TO] <新表名>;
      
    2. 实例

      msyql> ALTER TABLE stu RENAME TO students;
      

    修改表字符集

    1. 语法格式

      ALTER TABLE 表名 [DEFAULT] CHARACTER SET <字符集名> [DEFAULT] COLLATE <校对规则名>;
      
    2. 实例

      ALTER TABLE tb_stu CHARACTER SET gb2312 DEFAULT COLLATE gb2312_chinese_ci;
      

    修改字段名字

    1. 语法格式

      ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>;
      - 旧字段名:指修改前的字段名;
      - 新字段名:指修改后的字段名;
      - 新数据类型:指修改后的数据类型,如果不需要修改字段的数据类型,可以将新数据类型设置成与原来一样,但数据类型不能为空
      
    2. 实例

      使用 ALTER TABLE 修改表 tb_emp1 的结构,将 col1 字段名称改为 col3,同时将数据类型变为 CHAR(30)
      ALTER TABLE tb_stu CHANGE col1 col3 CHAR(30);
      

    修改字段数据类型

    1. 语法格式

      ALTER TABLE <表名> MODIFY <字段名> <数据类型>
      - 表名:指要修改数据类型的字段所在表的名称;
      - 字段名:指需要修改的字段;
      - 数据类型:指修改后字段的新数据类型
      
    2. 实例

      ALTER TABLE tb_stu MODIFY name VARCHAR(30);
      

    删除数据表

    1. 语法格式

      DROP TABLE [IF EXISTS] 表名1 [ ,表名2, 表名3 ...]
      - 表名1, 表名2, 表名3 ...表示要被删除的数据表的名称。DROP TABLE 可以同时删除多个表,只要将表名依次写在后面,相互之间用逗号隔开即可
      - IF EXISTS 用于在删除数据表之前判断该表是否存在。如果不加 IF EXISTS,当数据表不存在时 MySQL 将提示错误,中断 SQL 语句的执行;加上 IF EXISTS 后,当数据表不存在时 SQL 语句可以顺利执行,但是会发出警告(warning)
      - 用户必须拥有执行 DROP TABLE 命令的权限,否则数据表不会被删除。
      - 表被删除时,用户在该表上的权限不会自动删除。
      
    2. 实例

      DROP TABLE tb_stu;
      

    删除字段

    1. 语法格式

      ALTER TABLE <表名> DROP <字段名>; #字段名是需要从表中删除的字段的名称
      
    2. 实例

      ALTER TABLE tb_stu DROP name;
      

    删除被其它表关联的主表

    删除父表的两种方法:

    • 先删除与它关联的字表,再删除父表;但是这样会同时删除两个表中的数据

    • 将关联表的外键约束取消,再删除父表;适用于需要保留子表的数据,只删除父表的情况

      1. 先创建两个关联表

        mysql> CREATE TABLE tb_stu (id INT(11) PRIMARY KEY,name VARCHAR(22),location VARCHAR(50));
        mysql> CREATE TABLE tb_tea (id INT(11) PRIMARY KEY,name VARCHAR(25),depid INT(11),salary FLOAT,CONSTRAINT cn_stu_tea FOREIGN KEY (depid) PEFERENCES tb_stu(id));
        
      2. 删除父表测试是否可以删除

        mysql> DROP TABLE tb_stu;
        ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails
        
      3. 解除外键约束

        mysql> ALTER TABLE tb_stu DROP FOREIGN KEY cn_stu_tea;
        
      4. 再次删除父表测试是否成功

        mysql> DROP TABLE tb_stu;
        
  • 相关阅读:
    Leetcode 92. Reverse Linked List II
    Leetcode 206. Reverse Linked List
    Leetcode 763. Partition Labels
    Leetcode 746. Min Cost Climbing Stairs
    Leetcode 759. Employee Free Time
    Leetcode 763. Partition Labels
    搭建数据仓库第09篇:物理建模
    Python进阶篇:Socket多线程
    Python进阶篇:文件系统的操作
    搭建数据仓库第08篇:逻辑建模–5–维度建模核心之一致性维度2
  • 原文地址:https://www.cnblogs.com/wanwz/p/13354671.html
Copyright © 2020-2023  润新知