zoukankan      html  css  js  c++  java
  • MySQL学习笔记(二)


    MySQL学习笔记(二)

    一.数据表

    1.创建表

    • DREATE =TABLE [IF NOOT EXISTS] `tbl_name`(
      `字段名称` 字段类型 [完整性约束条件] [COMMENT '注释'],
      `字段名称` 字段类型 [完整性约束条件] [COMMENT '注释'],
      ...
      )ENGINE = 存储引擎 CHARSET = 编码方式;

    2.查看数据表

    • SHOW TABLES;
    • SHOW [FULL] TABLES [{FROM|IN}db_name];

    3.查看指定数据表的详细信息

    • SHOW CREATE TABLE tbl_name;

    4.查看表结构

    • DESC tbl_name;
    • DESCRIBE tbl_name;
    • SHOW COLUMNS FROM tbl_name;

    5.删除数据表

    • DROP TABLE [IF EXISTS] tbl_name;

    6.向数据表中插入记录

    • INSERT [INTO] tbl_name(field1,field2,...) VALUES(value1,value2,...);

    7.查询数据表中的记录

    • SELECT * FROM tbl_name;

    8.添加字段

    • ALTER TABLE tbl_name
      ADD 字段名称 字段属性 [完整性约束条件] [FIRST|AFTER 字段名称];

    9.删除字段

    • ALTER TABLE tbl_name
      DROP 字段名称;

    10.添加默认值

    • ALTER TABLE tbl_name
      ALTER 字段名称 SET DEFAULT 默认值;

    11.删除默认值

    • ALTER TABLE tbl_name
      ALTER 字段名称 DROP DEFAULT;

    12.修改字段(名称、)类型、属性

    • ALTER TABLE tbl_name
      MODIFY 字段名称 字段类型 [字段属性] [FIRST|AFTER 字段名称];
    • ALTER TABLE tbl_name
      CHANGE 原字段名称 新字段名称 字段类型 字段属性 [FIRST | AFTER 字段名称];

    13.添加主键

    • ALTER TABLE tbl_name
      ADD PRIMARY KEY(字段名称);

    14.删除主键

    • ALTER TABLE tbl_name
      DROP PRIMARY KEY;

    如果有AUTO_INCREMENT,要先去掉才能删除主键

    15.添加唯一

    • ALTER TABLE tbl_name
      ADD UNIQUE KEY|INDEX [index_name] (字段名称);

    16.删除唯一

    • ALTER TABLE tbl_name
      DROP index_name;

    17.修改数据表名称

    • ALTER TABLE tbl_name
      RENAME [TO|AS] new_tbl_name;
    • RENAME TABLE tbl_name TO|AS new_tbl_name;

    18.修改AUTO_INCREMENT的值

    • RENAME TABLE tbl_name TO new_tbl_name;

    二、数据类型

    1.数值型

    • 整数型

      数据类型 有符号型存储范围 无符号型存储范围 字节
      TINYINT $-2^7$ ~ $2^7-1$ $0$ ~ $2^8-1$ 1
      SMALLINT $-2^{15}$ ~ $2^{15}-1$ $0$ ~ $2^{16}-1$ 2
      MEDIUMINT $-2^{23}$ ~ $2^{23}-1$ $0$ ~ $2^{24}-1$ 3
      INT $-2^{31}$ ~ $2^{31}-1$ $0$ ~ $2^{32}-1$ 4
      BIGINT $-2^{63}$ ~ $2^{63}-1$ $0$ ~ $2^{64}-1$ 8
      BOOL,BOOLEAN 0为false,其他为true 1

      超过指定长度要求时自动截断

    • 浮点数

      数据类型 存储范围 字节
      FLOAT[M,D] $-3.2010^{38}$ ~ $-1.1710^{-38}$ & $0$ & $1.17510^{-38}$ ~ $3.4010^{38}$ 4
      DOUBLE[M,D] $-1.7910^{308}$ ~ $-2.2210^{-308}$ & $0$ & $2.2210^{-308}$ ~ $1.7910^{308}$ 8

      其中,M表示总长度,D表示小数部分长度
      超过指定长度要求时自动四舍五入

    • 定点型

      数据类型 存储范围 字节
      DECIMAL[M,D] 和DOUBLE相同,以字符串形式存储 8

      超过指定长度要求时自动截断
      DECIMAL比FLOAT和DOUBLE精度高

    2.字符串类型

    • 数据类型 存储需求
      CHAR(M) M个字节,$0 <=M<= 255$
      VARCHAR(M) L+1个字节,$L<=M,0 <=M<= 65535$
      TINYTEXT L+1个字节,$L<2^8$
      TEXT L+2个字节,$L<2^{16}$
      MIDUMTEXT L+3个字节,$L<2^{24}$
      LONGTEXT L+4个字节,$L<2^{32}$
      ENUM('value1','value2',...) 1或2个字节,取决于枚举值的个数,最多65535个值
      SET('value1','value2',...) 1、2、3、4或8个字节,取决于set成员的数目,最多64个

      CHAR一般比VARCHAR存储空间大,但查询速度更快
      在字符串长度达不到CHAR的要求时,会在后面自动填充空格,但查询时不会去掉空格;VARCHAR不会自动填充,尾部如有空格会保留
      TEXT列不能有默认值,检索时不存在大小写转换
      ENUM类型自动过滤空格,下标从1开始,下表越界时不能添加

    3.日期时间类型

    • 数据类型 存储范围 存储需求
      TIME -838:59:59 ~ 838:59:59 3
      DATE 1000-01-01 ~ 9999-12-31 3
      DATETIME 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 8
      TIMESTAMP 1970-01-01 00:00:01 UTC ~ 2038-01-19 03:14:07 4
      YEAR 1901-2155 1

    三、完整性约束条件

    1.unsigned

    • 无符号,没有负数,从0开始

    2.ZEROFILL

    • 零填充,显示长度不够时前补0填充,同时非负

    3.NOT NULL

    • 非空

    4.DEFAULT

    • 默认值,输入数据没有赋值时使用默认值

    5.PRIMARY KEY

    • 主键,标识记录的唯一性,不能重复,一个表只能有一个主键,自动禁止为空

    6.UNIQUE KEY

    • 唯一性,一个表可以有多个,除null外不能重复

    7. AUTO_INCREMENT

    • 自动增长,智能用于数值列,配合索引使用,从1开始

    8.FOREIGN KEY

    • 外键约束
  • 相关阅读:
    Thinking in Java,Fourth Edition(Java 编程思想,第四版)学习笔记(六)之Initialization & Cleanup
    ValidForm.js的使用注意点
    我的第一个敏捷项目总结
    七月在线机器学习项目
    吴恩达机器学习
    emoji情感分类器
    序列模型实践工程
    序列模型-NLP和词嵌入
    吴恩达深度学习
    序列模型
  • 原文地址:https://www.cnblogs.com/lxy764139720/p/12190026.html
Copyright © 2011-2022 走看看