• MySQL学习笔记 -- 数据表的基本操作


      

      数据库是一个可以存放数据库对象的容器,数据库对象包括:表、视图、存储过程、函数、触发器、事件。其中,表是数据库最基本的元素,是其他数据库对象的前提条件。

      表中的一列称为一个字段,一行称为一条记录。

      1.数据表的创建、查看数据表、查看数据表结构

    mysql> CREATE DATABASE test1;
    Query OK, 1 row affected (0.02 sec)
    mysql> USE test1; Database changed
    mysql
    > CREATE TABLE table1( -> id SMALLINT UNSIGNED, -> username VARCHAR(20), -> age TINYINT -> ); Query OK, 0 rows affected (0.40 sec) mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | | test1 | +--------------------+ 5 rows in set (0.00 sec) mysql> SELECT DATABASE(); +------------+ | DATABASE() | +------------+ | test1 | +------------+ 1 row in set (0.00 sec) mysql> SHOW TABLES; +-----------------+ | Tables_in_test1 | +-----------------+ | table1 | +-----------------+ 1 row in set (0.00 sec) mysql> SHOW COLUMNS FROM table1; +----------+----------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+----------------------+------+-----+---------+-------+ | id | smallint(5) unsigned | YES | | NULL | | | username | varchar(20) | YES | | NULL | | | age | tinyint(4) | YES | | NULL | | +----------+----------------------+------+-----+---------+-------+ 3 rows in set (0.00 sec) mysql> DESCRIBE table1; +----------+----------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+----------------------+------+-----+---------+-------+ | id | smallint(5) unsigned | YES | | NULL | | | username | varchar(20) | YES | | NULL | | | age | tinyint(4) | YES | | NULL | | +----------+----------------------+------+-----+---------+-------+ 3 rows in set (0.00 sec)

      2.数据表的删除 DROP TABLE table_name;

    mysql> USE test1;
    Database changed
    mysql
    > SHOW TABLES; +-----------------+ | Tables_in_test1 | +-----------------+ | table1 | | tb2 | +-----------------+ 2 rows in set (0.00 sec) mysql> DROP TABLE tb2; Query OK, 0 rows affected (0.20 sec) mysql> DESCRIBE tb2; ERROR 1146 (42S02): Table 'test1.tb2' doesn't exist

      3.插入记录、查看记录  INSERT table_name [(col_name, ...)] VALUES(...);

    mysql> SHOW COLUMNS FROM table1;
    +----------+----------------------+------+-----+---------+-------+
    | Field    | Type                 | Null | Key | Default | Extra |
    +----------+----------------------+------+-----+---------+-------+
    | id       | smallint(5) unsigned | YES  |     | NULL    |       |
    | username | varchar(20)          | YES  |     | NULL    |       |
    | age      | tinyint(4)           | YES  |     | NULL    |       |
    +----------+----------------------+------+-----+---------+-------+
    3 rows in set (0.00 sec)
    
    mysql> INSERT table1 VALUES(5,'Tom',22);
    Query OK, 1 row affected (0.05 sec)
    
    mysql> INSERT table1 (id,username) VALUES(5,'Tom');
    Query OK, 1 row affected (0.10 sec)
    
    mysql> SELECT * FROM table1;
    +------+----------+------+
    | id   | username | age  |
    +------+----------+------+
    |    5 | Tom      |   22 |
    |    5 | Tom      | NULL |
    +------+----------+------+
    2 rows in set (0.00 sec)

      

      4.字段的空值与非空  NULL,NOT NULL

    mysql> CREATE TABLE table2(
        -> username VARCHAR(20) NOT NULL,
        -> #NULL可加可不加,不加默认可以为空#
        -> age TINYINT
        -> );
    Query OK, 0 rows affected (0.25 sec)
    
    mysql> SHOW COLUMNS FROM table2;
    +----------+-------------+------+-----+---------+-------+
    | Field    | Type        | Null | Key | Default | Extra |
    +----------+-------------+------+-----+---------+-------+
    | username | varchar(20) | NO   |     | NULL    |       |
    | age      | tinyint(4)  | YES  |     | NULL    |       |
    +----------+-------------+------+-----+---------+-------+
    2 rows in set (0.00 sec)
    
    mysql> INSERT table2 VALUES(NULL,25);
    ERROR 1048 (23000): Column 'username' cannot be null

      

      5.主键约束与自动编号  PRIMARY KEY,AUTO_INCREMENT

        ※ 一张数据表只能存在一个主键

        ※ 主键能保证记录的唯一性

        ※ 主键自动为NOT NULL

        ※ AUTO_INCREMENT只能配合PRIMARY KEY使用,不能单独使用。PRIMARY KEY可以单独使用。

    mysql> CREATE TABLE table3(
        -> id SMALLINT PRIMARY KEY AUTO_INCREMENT,
        -> username VARCHAR(20)
        -> );
    Query OK, 0 rows affected (0.32 sec)
    
    mysql> DESCRIBE table3;
    +----------+-------------+------+-----+---------+----------------+
    | Field    | Type        | Null | Key | Default | Extra          |
    +----------+-------------+------+-----+---------+----------------+
    | id       | smallint(6) | NO   | PRI | NULL    | auto_increment |
    | username | varchar(20) | YES  |     | NULL    |                |
    +----------+-------------+------+-----+---------+----------------+
    2 rows in set (0.00 sec)
    
    mysql> INSERT table3 (username) VALUES('XingyaZhao');
    Query OK, 1 row affected (0.05 sec)
    
    mysql> INSERT table3 (username) VALUES('XuebiBaby');
    Query OK, 1 row affected (0.06 sec)
    
    mysql> INSERT table3 VALUES(4,'David');
    Query OK, 1 row affected (0.07 sec)
    
    mysql> INSERT table3 (username) VALUES('Somebody');
    Query OK, 1 row affected (0.09 sec)
    
    mysql> SELECT * FROM table3;
    +----+------------+
    | id | username   |
    +----+------------+
    |  1 | XingyaZhao |
    |  2 | XuebiBaby  |
    |  4 | David      |
    |  5 | Somebody   |
    +----+------------+
    4 rows in set (0.00 sec)
    mysql> CREATE TABLE table4(
        -> id SMALLINT UNSIGNED PRIMARY KEY,
        -> username VARCHAR(20)
        -> );
    Query OK, 0 rows affected (0.30 sec)
    
    mysql> SHOW COLUMNS FROM table4;
    +----------+----------------------+------+-----+---------+-------+
    | Field    | Type                 | Null | Key | Default | Extra |
    +----------+----------------------+------+-----+---------+-------+
    | id       | smallint(5) unsigned | NO   | PRI | NULL    |       |
    | username | varchar(20)          | YES  |     | NULL    |       |
    +----------+----------------------+------+-----+---------+-------+
    2 rows in set (0.00 sec)
    
    mysql> INSERT table4 VALUES(6,'ChuanDao');
    Query OK, 1 row affected (0.07 sec)
    
    mysql> INSERT table4 VALUES(3,'Pigiu');
    Query OK, 1 row affected (0.04 sec)
    
    mysql> INSERT table4 VALUES(3,'York');
    ERROR 1062 (23000): Duplicate entry '3' for key 'PRIMARY'
    mysql> SELECT * FROM table4;
    +----+----------+
    | id | username |
    +----+----------+
    |  3 | Pigiu    |
    |  6 | ChuanDao |
    +----+----------+
    2 rows in set (0.00 sec)

       

      6.唯一约束 UNIQUE KEY

        ※ 唯一约束可以保证某个字段中每个记录的唯一性

        ※ 唯一约束的字段可以为空值

        ※ 每张数据表可以存在多个唯一约束

    mysql> CREATE TABLE table5(
        -> id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
        -> username VARCHAR(20) NOT NULL UNIQUE KEY,
        -> age TINYINT UNSIGNED NOT NULL
        -> );
    Query OK, 0 rows affected (0.60 sec)
    
    mysql> SHOW COLUMNS FROM table5;
    +----------+----------------------+------+-----+---------+----------------+
    | Field    | Type                 | Null | Key | Default | Extra          |
    +----------+----------------------+------+-----+---------+----------------+
    | id       | smallint(5) unsigned | NO   | PRI | NULL    | auto_increment |
    | username | varchar(20)          | NO   | UNI | NULL    |                |
    | age      | tinyint(3) unsigned  | NO   |     | NULL    |                |
    +----------+----------------------+------+-----+---------+----------------+
    3 rows in set (0.02 sec)
    
    mysql> INSERT table5 (username,age) VALUES('XingyaZhao',22);
    Query OK, 1 row affected (0.05 sec)
    
    mysql> INSERT table5 (username,age) VALUES('XuebiBaby',21);
    Query OK, 1 row affected (0.07 sec)
    
    mysql> INSERT table5 (username,age) VALUES('XingyaZhao',18);
    ERROR 1062 (23000): Duplicate entry 'XingyaZhao' for key 'username'
    
    mysql> SELECT * FROM table5;
    +----+------------+-----+
    | id | username   | age |
    +----+------------+-----+
    |  1 | XingyaZhao |  22 |
    |  2 | XuebiBaby  |  21 |
    +----+------------+-----+
    3 rows in set (0.00 sec)

        

      7.默认约束 DEFAULT

    mysql> CREATE TABLE table6(
        -> id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
        -> username VARCHAR(20) NOT NULL UNIQUE KEY,
        -> age TINYINT UNSIGNED DEFAULT 20
        -> );
    Query OK, 0 rows affected (0.29 sec)
    
    mysql> DESCRIBE table6;
    +----------+----------------------+------+-----+---------+----------------+
    | Field    | Type                 | Null | Key | Default | Extra          |
    +----------+----------------------+------+-----+---------+----------------+
    | id       | smallint(5) unsigned | NO   | PRI | NULL    | auto_increment |
    | username | varchar(20)          | NO   | UNI | NULL    |                |
    | age      | tinyint(3) unsigned  | YES  |     | 20      |                |
    +----------+----------------------+------+-----+---------+----------------+
    3 rows in set (0.00 sec)
    
    mysql> INSERT table6 (username) VALUES('Xingya');
    Query OK, 1 row affected (0.08 sec)
    
    mysql> INSERT table6 (username) VALUES('Jude');
    Query OK, 1 row affected (0.05 sec)
    
    mysql> INSERT table6 (username,age) VALUES('Tom',21);
    Query OK, 1 row affected (0.08 sec)
    
    mysql> SELECT * FROM table6;
    +----+----------+------+
    | id | username | age  |
    +----+----------+------+
    |  1 | Xingya   |   20 |
    |  2 | Jude     |   20 |
    |  3 | Tom      |   21 |
    +----+----------+------+
    3 rows in set (0.00 sec)

      8.外键约束 FOREIGN KEY

        ※ 父表和子表必须使用相同的存储引擎 InnoDB

        ※ 外键列和参照列必须具有相似的数据类型。其中数字的长度和是否有符号位必须相同;而字符的长度可以不同。

        ※ 外键列和参照列必须创建索引。如果外键列不存在索引的话,MySQL将自动创建索引。

    mysql> CREATE TABLE provinces(
        -> id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
        -> pname VARCHAR(20) NOT NULL
        -> );
    Query OK, 0 rows affected (0.49 sec)
    
    mysql> CREATE TABLE users(
        -> id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
        -> username VARCHAR(20) NOT NULL,
        -> pid SMALLINT UNSIGNED,
        -> FOREIGN KEY (pid) REFERENCES provinces (id)
        -> );
    Query OK, 0 rows affected (0.34 sec)
    
    mysql> SHOW INDEXES FROM provincesG
    *************************** 1. row ***************************
            Table: provinces
       Non_unique: 0
         Key_name: PRIMARY
     Seq_in_index: 1
      Column_name: id
        Collation: A
      Cardinality: 0
         Sub_part: NULL
           Packed: NULL
             Null:
       Index_type: BTREE
          Comment:
    Index_comment:
    1 row in set (0.00 sec)
    
    mysql> SHOW INDEXES FROM usersG
    *************************** 1. row ***************************
            Table: users
       Non_unique: 0
         Key_name: PRIMARY
     Seq_in_index: 1
      Column_name: id
        Collation: A
      Cardinality: 0
         Sub_part: NULL
           Packed: NULL
             Null:
       Index_type: BTREE
          Comment:
    Index_comment:
    *************************** 2. row ***************************
            Table: users
       Non_unique: 1
         Key_name: pid
     Seq_in_index: 1
      Column_name: pid
        Collation: A
      Cardinality: 0
         Sub_part: NULL
           Packed: NULL
             Null: YES
       Index_type: BTREE
          Comment:
    Index_comment:
    2 rows in set (0.00 sec)
  • 相关阅读:
    spring boot 启动后执行初始化方法
    Linux CentOS 7 下 JDK 安装与配置
    Linux rpm 命令参数使用详解[介绍和应用]
    异常处理: 重载Throwable.fillInStackTrace方法已提高Java性能
    dubbo 配置属性
    centos7 操作防火墙
    springBoot 打包 dubbo jar包
    直播中聊天场景的用例分享
    解决在安装Fiddler4.6版本后,在手机上安装证书出现的问题解决方法
    系统调优方案思路分享
  • 原文地址:https://www.cnblogs.com/xingyazhao/p/6070269.html
Copyright © 2020-2023  润新知