zoukankan      html  css  js  c++  java
  • MySQL学习——操作表

    MySQL学习——操作表

    摘要:本文主要学习了使用DDL语句操作表的方法。

    创建表

    语法

    1 create table 表名 [表定义选项] [表选项];

    表定义选项

    用来创建定义表的结构,由列名(col_name)、列的定义(column_definition)以及可能的空值说明、完整性约束或表索引组成。

    实例

     1 mysql> create table test (
     2     ->   id int(11) not null comment '编号',
     3     ->   name varchar(50) default null comment '姓名',
     4     ->   address varchar(50) default null comment '地址',
     5     ->   status int(2) default null comment '状态',
     6     ->   createtime date default null comment '创建时间',
     7     ->   updatetime date default null comment '修改时间',
     8     ->   primary key (id)
     9     -> ) engine=innodb default charset=utf8mb4 comment='测试';
    10 Query OK, 0 rows affected (0.01 sec)
    11 
    12 mysql> 

    复制表

    语法

    1 create table 新表名 as select * from 旧表名;

    实例

    1 Database changed
    2 mysql> create table grade as select * from score;
    3 Query OK, 12 rows affected (0.01 sec)
    4 Records: 12  Duplicates: 0  Warnings: 0
    5 
    6 mysql> 

    查看表的列

    语法

    1 show columns from 表名;

    实例

     1 mysql> show columns from test;
     2 +------------+-------------+------+-----+---------+-------+
     3 | Field      | Type        | Null | Key | Default | Extra |
     4 +------------+-------------+------+-----+---------+-------+
     5 | id         | int(11)     | NO   | PRI | NULL    |       |
     6 | name       | varchar(50) | YES  |     | NULL    |       |
     7 | address    | varchar(50) | YES  |     | NULL    |       |
     8 | status     | int(2)      | YES  |     | NULL    |       |
     9 | createtime | date        | YES  |     | NULL    |       |
    10 | updatetime | date        | YES  |     | NULL    |       |
    11 +------------+-------------+------+-----+---------+-------+
    12 6 rows in set (0.00 sec)
    13 
    14 mysql> 

    说明

    Field:列名。

    Type:类型。

    Null:表示该列是否可以存储NULL值。

    Key:表示该列是否已编制索引。PRI表示该列是主键的一部分,UNI表示该列是UNIQUE索引的一部分,MUL表示在列中某个给定值允许出现多次。

    Default:表示该列是否有默认值,如果有,值是多少。

    Extra:表示可以获取的与给定列有关的附加信息,如:AUTO_INCREMENT等。

    查看表结构

    语法

    1 desc 表名;

    实例

     1 mysql> desc test;
     2 +------------+-------------+------+-----+---------+-------+
     3 | Field      | Type        | Null | Key | Default | Extra |
     4 +------------+-------------+------+-----+---------+-------+
     5 | id         | int(11)     | NO   | PRI | NULL    |       |
     6 | name       | varchar(50) | YES  |     | NULL    |       |
     7 | address    | varchar(50) | YES  |     | NULL    |       |
     8 | status     | int(2)      | YES  |     | NULL    |       |
     9 | createtime | date        | YES  |     | NULL    |       |
    10 | updatetime | date        | YES  |     | NULL    |       |
    11 +------------+-------------+------+-----+---------+-------+
    12 6 rows in set (0.00 sec)
    13 
    14 mysql> 

    说明

    Filed:列名。

    Type:类型。

    Null:表示该列是否可以存储NULL值。

    Key:表示该列是否已编制索引。PRI表示该列是表主键的一部分,UNI表示该列是UNIQUE索引的一部分,MUL表示在列中某个给定值允许出现多次。

    Default:表示该列是否有默认值,如果有,值是多少。

    Extra:表示可以获取的与给定列有关的附加信息,如:AUTO_INCREMENT等。

    查询所有的表

    语法

    1 show tables;

    实例

    1 mysql> show tables;
    2 +----------------+
    3 | Tables_in_demo |
    4 +----------------+
    5 | test           |
    6 +----------------+
    7 1 row in set (0.00 sec)
    8 
    9 mysql> 

    查看表的创建

    语法

    1 show create table 表名 G;

    实例

     1 mysql> show create table test G;
     2 *************************** 1. row ***************************
     3        Table: test
     4 Create Table: CREATE TABLE `test` (
     5   `id` int(11) NOT NULL COMMENT '编号',
     6   `name` varchar(50) DEFAULT NULL COMMENT '姓名',
     7   `address` varchar(50) DEFAULT NULL COMMENT '地址',
     8   `status` int(2) DEFAULT NULL COMMENT '状态',
     9   `createtime` date DEFAULT NULL COMMENT '创建时间',
    10   `updatetime` date DEFAULT NULL COMMENT '修改时间',
    11   PRIMARY KEY (`id`)
    12 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='测试'
    13 1 row in set (0.00 sec)
    14 
    15 ERROR: 
    16 No query specified
    17 
    18 mysql> 

    查看表的状态

    语法

    1 show table status like from 数据库 [like '模糊查询表名'] G;

    实例

     1 mysql> show table status from demo G ;
     2 *************************** 1. row ***************************
     3            Name: test
     4          Engine: InnoDB
     5         Version: 10
     6      Row_format: Compact
     7            Rows: 0
     8  Avg_row_length: 0
     9     Data_length: 16384
    10 Max_data_length: 0
    11    Index_length: 0
    12       Data_free: 0
    13  Auto_increment: NULL
    14     Create_time: 2019-09-02 17:21:06
    15     Update_time: NULL
    16      Check_time: NULL
    17       Collation: utf8mb4_general_ci
    18        Checksum: NULL
    19  Create_options: 
    20         Comment: 测试
    21 1 row in set (0.00 sec)
    22 
    23 ERROR: 
    24 No query specified
    25 
    26 mysql> 

    查看表索引

    语法

    show index from 表名;

    示例

     1 mysql> show index from user;
     2 +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
     3 | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
     4 +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
     5 | user  |          0 | PRIMARY  |            1 | Host        | A         |        NULL |     NULL | NULL   |      | BTREE      |         |               |
     6 | user  |          0 | PRIMARY  |            2 | User        | A         |           3 |     NULL | NULL   |      | BTREE      |         |               |
     7 +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
     8 2 rows in set (0.00 sec)
     9 
    10 mysql>

    修改表

    添加列

    1 alter table 表名 add column 新列名 [数据类型] [约束条件] [first | after 已存在的列名];

    实例

    1 mysql> alter table test add column age int(3) null comment '年龄' after name;
    2 Query OK, 0 rows affected (0.01 sec)
    3 Records: 0  Duplicates: 0  Warnings: 0
    4 
    5 mysql> 

    修改列

    1 alter table 表名 change column 旧列名 新列名 [新数据类型];

    实例

    1 mysql> alter table test change column username name varchar(30) not null default 'none' comment '姓名';
    2 Query OK, 0 rows affected (0.01 sec)
    3 Records: 0  Duplicates: 0  Warnings: 0
    4 
    5 mysql> 

    删除列

    1 alter table 表名 drop 列名;

    实例

    1 mysql> alter table test drop age;
    2 Query OK, 0 rows affected (0.01 sec)
    3 Records: 0  Duplicates: 0  Warnings: 0
    4 
    5 mysql> 

    删除表

    语法

    1 drop table [if exists] 表名;

    实例

    1 mysql> drop table demo;
    2 Query OK, 0 rows affected (0.01 sec)
    3 
    4 mysql> 

    清空表

    语法

    1 truncate table 表名;

    实例

    1 mysql> truncate table demo;
    2 Query OK, 0 rows affected (0.01 sec)
    3 
    4 mysql> 
  • 相关阅读:
    oc-autorelease
    oc-循环引用问题
    oc-内存管理总结
    tomcat-各文件夹作用解析
    oc-多对象内存管理
    oc-arc(Automatic Reference Counting 自动引用机制) 与 内存管理
    tomcat-context.xml
    oc-set方法内存管理 和 @property的参数
    【转载】java学习线路
    一段shell脚本
  • 原文地址:https://www.cnblogs.com/shamao/p/11451749.html
Copyright © 2011-2022 走看看