• MySQL 之 基础操作及创建表中的数据类型


    1、数据库(文件夹)的操作

    create database   数据库名;   # 增加数据库
    show databases;   # 查看当前所有的库
    use 数据库名       # 切换到对应的库中/实际上就是进入对应的文件夹
    select database();  # 查看当前所在的库
    alter database 数据库名 charset latin1;    # 修改数据库
    drop database 数据库名;   # 删除数据库
    

    2、 表(文件)的操作

     先切换到对应的文件夹下: use 数据库名;
     
     # 创建表
     #语法:
    	create table 表名(字段名1 类型[(宽度) 约束条件],字段名2 类型[(宽度) 约束条件],字段名3 类型[(宽度) 约束条件]);
    
    #注意:
    	1. 在同一张表中,字段名是不能相同
    	2. 宽度和约束条件可选
    	3. 字段名和类型是必须的
    	
    create table t1(id int,name char);  # 创建表t1(字段 数据类型)
    show tables;     # 查看当前数据库下有哪些表
    describe 表名;   # 查看表结构 可以简写为  desc 表名;
    alter table t1 modify name char(3);      # 修改t1表的name字段类型大小
    alter table t1 change name name1 char(2);  # 修改t1表的字段名
    drop table t1;   # 删除表t1
    

    3、数据(文件中的内容(记录))的操作

    insert into t1 values(1,'egon1'),(2,'egon2'),(3,'egon3');  # 往t1表中写数据
    select * from t1;   # 查看t1表中的所有内容
    update t1 set name='liang' where id=2;  # 修改t1表中的数据
    delete from t1 where id=1;   # 删除t1表中的数据
    
    清空表:
           delete from t1; #如果有自增id,新增的数据,仍然是以删除前的最后一样作为起始。
           truncate table t1; # 数据量大,删除速度比上一条快,且直接从零开始,
           
    *auto_increment 表示:自增
    *primary key 表示:约束(不能重复且不能为空);加速查找
    

    4、创建表中的数据类型

    (1)数字类型

    常用 : 整型 tinyint int

    create table t1(i1 tinyint,i2 int);   #默认创建的所有数据都是有符号的
    create table t2(i1 tinyint unsigned,i2 int unsigned);   # unsigned表示无符号
    

    小数 float double

    create table t3(f1 float,f2 double)
    create table t4(f1 float(7,2))
    

    MySQL支持所有标准SQL数值数据类型。

    ​ 这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。

    ​ 关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。

    ​ MySQL支持的整数类型有TINYINT、MEDIUMINT和BIGINT。下面的表显示了需要的每个整数类型的存储和范围。

    ​ 对于小数的表示,MYSQL分为两种方式:浮点数和定点数。浮点数包括float(单精度)和double(双精度),而定点数只有decimal一种,在mysql中以字符串的形式存放,比浮点数更精确,适合用来表示货币等精度高的数据。

    ​ BIT数据类型保存位字段值,并且支持MyISAM、MEMORY、InnoDB和BDB表。

    类型 大小 范围(有符号) 范围(无符号)unsigned约束 用途
    TINYINT 1 字节 (-128,127) (0,255) 小整数值
    SMALLINT 2 字节 (-32 768,32 767) (0,65 535) 大整数值
    MEDIUMINT 3 字节 (-8 388 608,8 388 607) (0,16 777 215) 大整数值
    INT或INTEGER 4 字节 (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整数值
    BIGINT 8 字节 (-9 233 372 036 854 775 808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值
    FLOAT 4 字节 float(255,30) (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 0,(1.175 494 351 E-38,3.402 823 466 E+38) 单精度 浮点数值
    DOUBLE 8 字节 double(255,30) (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 双精度 浮点数值
    DECIMAL 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 double(65,30) 依赖于M和D的值 依赖于M和D的值 小数值

    (2)字符串

    常用: char(255) 定长、节省时间、浪费空间

    varchar(65535) 变长、节省空间、浪费时间

    #  char(25)
        'abc            ' 浪费空间、节省时间
    #  varchar(25)
        '3abc'            节省空间、浪费时间
    create table t5(c1 char(5),c2 varchar(5));
    

    ​ 字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。该节描述了这些类型如何工作以及如何在查询中使用这些类型。

    类型 大小 用途
    CHAR 0-255字节 定长字符串
    VARCHAR 0-65535 字节 变长字符串
    TINYBLOB 0-255字节 不超过 255 个字符的二进制字符串
    TINYTEXT 0-255字节 短文本字符串
    BLOB 0-65 535字节 二进制形式的长文本数据
    TEXT 0-65 535字节 长文本数据
    MEDIUMBLOB 0-16 777 215字节 二进制形式的中等长度文本数据
    MEDIUMTEXT 0-16 777 215字节 中等长度文本数据
    LONGBLOB 0-4 294 967 295字节 二进制形式的极大文本数据
    LONGTEXT 0-4 294 967 295字节 极大文本数据

    ​ CHAR 和 VARCHAR 类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。

    ​ CHAR列的长度固定为创建表是声明的长度,范围(0-255);而VARCHAR的值是可变长字符串范围(0-65535)。

    ​ BINARY 和 VARBINARY 类似于 CHAR 和 VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值。

    ​ BLOB 是一个二进制大对象,可以容纳可变数量的数据。有 4 种 BLOB 类型:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。它们区别在于可容纳存储范围不同。

    ​ 有 4 种 TEXT 类型:TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。对应的这 4 种 BLOB 类型,可存储的最大长度不同,可根据实际情况选择。

    (3)时间类型

    ​ now() 函数表示当前时间

    create table t6(dt datetime,d date,t time,y year,ts timestamp);
    insert into t6 values(now(),now(),now(),now(),now());
    insert into t6(dt) values('2018-8-8 8:8:8');
    insert into t6(dt) values(20180808080808);
    insert into t6(d) values(20180808);
    insert into t6(t) values('8:8:8');
    
    create table t7(dt datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,y year);
    

    ​ 表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。

    ​ 每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。

    ​ TIMESTAMP类型有专有的自动更新特性,将在后面描述。

    类型 大小 (字节) 范围 格式 用途
    DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 年月日
    TIME 3 '-838:59:59'/'838:59:59' HH:MM:SS 时分秒
    YEAR 1 1901/2155 YYYY 年份值
    DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 年月日时分秒
    TIMESTAMP 4 1970-01-01 00:00:00/2038 结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07 YYYYMMDD HHMMSS 混合日期和时间值,时间戳

    (4)enum 和 set

    create table t8(username char(12),gender enum('male','female'));
    create table t9(username char(12),hobby set('抽烟','喝酒','烫头','洗脚'));
    

    ​ ENUM中文名称叫枚举类型,它的值范围需要在创建表时通过枚举方式显示。ENUM只允许从值集合中选取单个值,而不能一次取多个值

    ​ SET和ENUM非常相似,也是一个字符串对象,里面可以包含0-64个成员。根据成员的不同,存储上也有所不同。set类型可以允许值集合中任意选择1或多个元素进行组合。对超出范围的内容将不允许注入,而对重复的值将进行自动去重。

    类型 大小 用途
    ENUM 对1-255个成员的枚举需要1个字节存储; 对于255-65535个成员,需要2个字节存储; 最多允许65535个成员。 单选:选择性别
    SET 1-8个成员的集合,占1个字节 9-16个成员的集合,占2个字节 17-24个成员的集合,占3个字节 25-32个成员的集合,占4个字节 33-64个成员的集合,占8个字节 多选:兴趣爱好
  • 相关阅读:
    组件之间通信(父传子)
    flex布局
    ffmpeg解析TS流(转)
    swift之?和!的含义(转)
    Swift之画圆角添加多个枚举值方法
    swift之singleton
    swift之闭包
    Swift之fallthrough
    Selector
    Settings Bundle
  • 原文地址:https://www.cnblogs.com/caiyongliang/p/13853710.html
Copyright © 2020-2023  润新知