zoukankan      html  css  js  c++  java
  • 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 |
          +-------+
  • 相关阅读:
    centos安装python
    【剑指Offer学习】【所有面试题汇总】
    内连接,外链接(左连接、右连接、全连接),交叉连接
    数据库三范式
    聚集索引与非聚集索引
    B树和B+树的区别
    TCP建立连接三次握手和释放连接四次握手
    HTTP协议详解
    常见的HTTP状态码(HTTP Status Code)说明
    归并排序的思想及递归运行步骤详解
  • 原文地址:https://www.cnblogs.com/Kobe10/p/5761958.html
Copyright © 2011-2022 走看看