Mysql--数据表

  • 数据表
    •   必须要有表结构,一定要有列.help +关键字   查找帮助


  • 创建数据表
    •   CREATE TABLE [IF NOT EXISTS ] tbl_name(字段名称 字段类型 [完整的约束条件]...)ENGINE=引擎名称 CHARSET='编码方式';
    •   mysql中的数据类型
      •   整数类型:TINYINT :1. SMALLINT :2.MEDIUMING:3.INT:4.BIGINT:8.   BOOL,BOOLEAN.
      •   浮点数:FLOAT;DOUBLE;DECIMAL;
      •   字符串:CHAR(M);定长;         VARCHAR(M):变长      ;,TINYEXT,TEX,ENUM('' '' ,'' '');SET("  ","   ");//集合
      •   日期时间:TIME;DATA;YEAR;
      •   二进制类型。


  • Mysql存储引擎
    •   就是表的类型
    •   查看存储引擎
      •   查看存储引擎:SHOW ENGINES
      •   查看显示支持的存储引擎:SHOW VARIABLES LIKE 'have%'
      •   查看默认的存储引擎:SHOW VARIABLES LIKE 'storage_engine'   Inno_db
        mysql> SHOW ENGINES;
        +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
        | Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
        +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
        | InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
        | MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
        | MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
        | BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
        | MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
        | CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
        | ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
        | PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
        | FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
        +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
        9 rows in set (0.00 sec)
        
        mysql> SHOW VARIABLES LIKE 'have%';
        +------------------------+----------+
        | Variable_name          | Value    |
        +------------------------+----------+
        | have_compress          | YES      |
        | have_crypt             | NO       |
        | have_dynamic_loading   | YES      |
        | have_geometry          | YES      |
        | have_openssl           | DISABLED |
        | have_profiling         | YES      |
        | have_query_cache       | YES      |
        | have_rtree_keys        | YES      |
        | have_ssl               | DISABLED |
        | have_statement_timeout | YES      |
        | have_symlink           | YES      |
        +------------------------+----------+
        11 rows in set, 1 warning (0.00 sec)
        
        mysql> SHOW VARIABLES LIKE 'storage_engine';
        Empty set, 1 warning (0.00 sec)
        View Code
    •   mysql常用的存储引擎
      •   InnoDB(默认)
        •   事物,并发控制的安全,支持频繁删除,回滚
        •   支持外键约束
        •   创建表结构存储在一个.fim文件中
        •   读取,读写效率低,占用空间大
      •   MyISAM(用于插入和读取,不支持事物)
        •   表会变成三个文件。fim存储表结构,mid存储数据,myi存储索引。
        •   支持动态,静态(默认的),压缩型。
        •   占用存储空间小,处理速度快;没有事物处理,没有innode的第一个优点
      •   MEMORY(一般不用)

  • 创建数据表
    • 创建数据表,首先得有一个数据库,然后再在里面建表


      #注释 创建麦子数据库 mysql
      > CREATE DATABASE IF NOT EXISTS maizi DEFAULT CHARACTER SET 'UTF8'; Query OK, 1 row affected (0.02 sec)

      --创建学员表
      --编号id
      --用户名username
      --年龄age
      --性别sex
      --邮箱email
      --地址addr
      --生日birth
      --薪水salary
      --电话tel
      --是否结婚
      --注意:当需要输入中文的时候,需要临时转换客户端的编码方式
      -- SET NAMES GBK;从当前连接开始到关闭时都有效,这个编码方式

      --字段注释 :通过COMMENT+注释内容 给字段添加注释



      USE maizi; Database changed mysql> CREATE TABLE IF NOT EXISTS user( -> id SMALLINT, -> username VARCHAR(20), -> age TINYINT, -> sex ENUM('','','保密'), -> email VARCHAR(50), -> addr VARCHAR(200), -> birth YEAR, -> salary FLOAT(8,2), -> tel INT, -> married TINYINT(1) COMMENT '0代表未结婚 非0代表结婚' -> )ENGINE=INNODB CHARSET=UTF8; Query OK, 0 rows affected, 1 warning (0.30 sec)
    • 查看数据表
    • mysql> SHOW TABLES;
      +-----------------+
      | Tables_in_maizi |
      +-----------------+
      | user            |
      +-----------------+
    • USE maizi;//首先必须使用一个数据库来建立一个表
      
      
      CREATE TABLE IF NOT EXISTS course(
      cid TINYINT,
      couseName VARCHAR(50),
      courseDesc VARCHAR(200)
      );
  • 查看数据库中的数据表以及表结构
    •   查看数据库下的表:SHOW TABLES
    •   查看指定表的表结构
      •   三种方式:

        DESC cms_news;
        DESCRIBE cms_news;
        SHOW COLUMNS FROM cms_news;

        mysql> SHOW COLUMNS FROM cms_news;
        +----------+-------------+------+-----+---------+-------+
        | Field    | Type        | Null | Key | Default | Extra |
        +----------+-------------+------+-----+---------+-------+
        | id       | int(11)     | YES  |     | NULL    |       |
        | title    | varchar(50) | YES  |     | NULL    |       |
        | content  | text        | YES  |     | NULL    |       |
        | pubTime  | int(11)     | YES  |     | NULL    |       |
        | clickNum | int(11)     | YES  |     | NULL    |       |
        | isTop    | tinyint(1)  | YES  |     | NULL    |       |
        +----------+-------------+------+-----+---------+-------+



  • 测试
    •   测试整型
      mysql> CREATE TABLE test1(--测试整型
          -> num1 TINYINT,
          -> num2 SMALLINT,
          -> num3 MEDIUMINT,
          -> num4 INT,
          -> num5 BIGINT
          -> );
      Query OK, 0 rows affected (0.38 sec)
      
      mysql> DESC test1;--显示表结构
      +-------+--------------+------+-----+---------+-------+
      | Field | Type         | Null | Key | Default | Extra |
      +-------+--------------+------+-----+---------+-------+
      | num1  | tinyint(4)   | YES  |     | NULL    |       |
      | num2  | smallint(6)  | YES  |     | NULL    |       |
      | num3  | mediumint(9) | YES  |     | NULL    |       |
      | num4  | int(11)      | YES  |     | NULL    |       |
      | num5  | bigint(20)   | YES  |     | NULL    |       |
      +-------+--------------+------+-----+---------+-------+
    • 插入数据检测数据
      mysql> INSERT test1 VALUES(-128,-32768,-8388608,-213124124,-213123);--插入数据
      Query OK, 1 row affected (0.19 sec)
      
      mysql> DESC test1;--查看表结构
      +-------+--------------+------+-----+---------+-------+
      | Field | Type         | Null | Key | Default | Extra |
      +-------+--------------+------+-----+---------+-------+
      | num1  | tinyint(4)   | YES  |     | NULL    |       |
      | num2  | smallint(6)  | YES  |     | NULL    |       |
      | num3  | mediumint(9) | YES  |     | NULL    |       |
      | num4  | int(11)      | YES  |     | NULL    |       |
      | num5  | bigint(20)   | YES  |     | NULL    |       |
      +-------+--------------+------+-----+---------+-------+
      5 rows in set (0.00 sec)
      
      mysql> INSERT test1 VALUES(-129,-32768,-8388608,-213124124,-213123);--数据范围超出,失败
      ERROR 1264 (22003): Out of range value for column 'num1' at row 1
      mysql> SELECT * FROM test1;--搜索表数据
      +------+--------+----------+------------+---------+
      | num1 | num2   | num3     | num4       | num5    |
      +------+--------+----------+------------+---------+
      | -128 | -32768 | -8388608 | -213124124 | -213123 |
      +------+--------+----------+------------+---------+
    • 无符号和有符号笔较
      CREATE TABLE test2(--无符号  UNSIGNED
          -> num1 TINYINT UNSIGNED,
          -> num2 TINYINT
          -> );
      
       INSERT  test2 VALUES(0,-12);
      
       SELECT * FROM test2;
      +------+------+
      | num1 | num2 |
      +------+------+
      |    0 |  -12 |
      +------+------+
    • 零填充  ZEROFILL   tinyint(4)括号中的表示显示长度,我们在一个类型后面加上一个零填充,就会让该数据变成无符号的,而且它会自动的补充0
      > CREATE TABLE test3(
          -> num1 TINYINT ZEROFILL,
          -> num2 SMALLINT ZEROFILL,
          -> num3 MEDIUMINT ZEROFILL,
          -> num4 INT ZEROFILL,
          -> num5 BIGINT ZEROFILL
          -> );
      
      INSERT test3 VALUES(1,1,1,1,1);
      
      mysql> SELECT * FROM test3;
      +------+-------+----------+------------+----------------------+
      | num1 | num2  | num3     | num4       | num5                 |
      +------+-------+----------+------------+----------------------+
      |  001 | 00001 | 00000001 | 0000000001 | 00000000000000000001 |
      +------+-------+----------+------------+----------------------+
    • 浮点数的测试
      •   都是四舍五入的数据。
        > CREATE  TABLE test4(
            -> num1 FLOAT(6,2),--前面两个都是四舍五入的
            -> num2 DOUBLE(6,2),
            -> num3 DECIMAL(6,2)--这个是精度很高的,是用字符串保存的
            -> );
        
        INSERT test4 VALUES(3.1415,3.1415,3.1415);
        
        SELECT * FROM test4;
        +------+------+------+
        | num1 | num2 | num3 |
        +------+------+------+
        | 3.14 | 3.14 | 3.14 |
        +------+------+------+
    • 字符串的测试
      •   CHAR(M):M表示的字符的存储数,范围0-255  定长字符串(占用大小固定),速度比较快
        VARCHAR(M):变长的字符串(占用的空间小,速度比较慢)
        CREATE TABLE IF NOT EXISTS test5(
        str1 CHAR(5),5表示字符的长度,定长
        str2 VARCHAR(5)  这是变长
        );
        INSERT test5 VALUES('1','1');
        
        INSERT test5 VALUES('12345','12345');
        
        INSERT test5 VALUES('123456','123456');
        
        INSERT test5 VALUES('1  ','1  ');CHAR后面的空格会被去掉,VARCHAR会被去掉
        
        INSERT test5 VALUES('  a  ','  a  ');字符串开始的空格都会被留下
        
        INSERT test5 VALUES('  付志强  ','  哈哈哈  ');插入字符串
        
        mysql> SELECT * FROM test5;
        +-------------+-------------+
        | str1        | str2        |
        +-------------+-------------+
        | 1           | 1           |
        | 12345       | 12345       |
        | 1           | 1           |
        |   a         |   a         |
        |   付志强    |   哈哈      |
        |   付志强    |   哈哈哈    |
        +-------------+-------------+
      •   TEXT不怎么使用,速度是最慢的和上面两个进行比较。


      • CREATE TABLE IF NOT EXISTS test8(--枚举可以有多个值,但是只能最多存储64个值
        fav SET('a','b','c','d')
        );
        INSERT test8 VALUES('a,b,c');
        INSERT test8 VALUES('a,d,c');
        
        mysql> SELECT * FROM test8;
        +-------+
        | fav   |
        +-------+
        | a,b,c |
        | a,b,c |
        | a,c,d |
        +-------+
原文地址:https://www.cnblogs.com/Kobe10/p/5761958.html