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> 
  • 相关阅读:
    Linux下sed,awk,grep,cut,find学习笔记
    Python文件处理(1)
    KMP详解
    Java引用详解
    解决安卓中页脚被输入法顶起的问题
    解决swfupload上传控件文件名中文乱码问题 三种方法 flash及最新版本11.8.800.168
    null id in entry (don't flush the Session after an exception occurs)
    HQL中的Like查询需要注意的地方
    spring mvc controller间跳转 重定向 传参
    node to traverse cannot be null!
  • 原文地址:https://www.cnblogs.com/shamao/p/11451749.html
Copyright © 2011-2022 走看看