zoukankan      html  css  js  c++  java
  • MySQL数据库---表的操作

    存储引擎

      表就是文件,表的存储引擎就是文件的存储格式,即数据的组织存储方式。

    字段类型

    1.整数类型

    • 整数类型:TINYINT SMALLINT MEDIUMINT INT BIGINT
    • 作用:存储年龄,等级,id,各种号码等
    • 表示范围:BIGINT(8字节) > INT(4字节) > MEDIUMINT(3字节) > SMALLINT(2字节) > TINYINT(1字节) 
    • 符号:默认整型是有符号的,使用unsigned就表示无符号
    • 注意:创建表时指定的字段宽度,对整型数据无效,表示的是数据的显示宽度

    2.浮点型

    浮点类型:FLOAT DOUBLE

    定点数类型:DEC等同于DECIMAL

    作用:存储薪资、身高、体重、体质参数等

    符号:默认浮点型是有符号的,使用unsigned就表示无符号

    精度:DOUBLE > FLOAT 

    3.日期类型

    • 日期类型:DATE TIME DATETIME TIMESTAMP YEAR
    • 作用:存储用户注册时间,文章发布时间,员工入职时间,出生时间,过期时间等
    year
    YYYY(1901/2155)
    
    date
    YYYY-MM-DD(1000-01-01/9999-12-31)
    
    time
    HH:MM:SS('-838:59:59'/'838:59:59')
    
    datetime
    YYYY-MM-DD HH:MM:SS(1000-01-01 00:00:00/9999-12-31 23:59:59 Y)
    
    timestamp
    YYYYMMDD HHMMSS(1970-01-01 00:00:00/2037 年某时)
    

     

    4.字符串类型

    • 字符串类型:char varchar
    • char类型:定长,简单粗暴,浪费空间,存取速度快
    • varchar类型:变长,精准,节省空间,存取速度慢

    5.枚举和集合类型

    • 说明:字段的值只能在给定范围中选择,如性别,单位
    • 枚举:enum 单选 只能在给定的范围内选一个值,如性别sex: 男male / 女female
    • 集合:et 多选 在给定的范围内可以选择一个或一个以上的值(爱好1,爱好2,爱好3...)

    字段约束类型 

    说明:约束条件与数据类型的宽度一样,都是可选参数

    作用:用于保证数据的完整性和一致性

    PRIMARY KEY (PK)    标识该字段为该表的主键,可以唯一的标识记录
    FOREIGN KEY (FK)    标识该字段为该表的外键
    NOT NULL            标识该字段不能为空
    UNIQUE KEY (UK)     标识该字段的值是唯一的
    AUTO_INCREMENT      标识该字段的值自动增长(整数类型,而且为主键)
    DEFAULT             为该字段设置默认值
    
    UNSIGNED            无符号
    ZEROFILL            使用0填充 
    • primary key:主键,具有唯一性,如果一张表中没有组件,数据库会创建一个默认的组件
    • foreign key:外键,用于描述两张表之间的关系
    • not null:表示不能为空
    • null:表示可以为空
    • unique key:唯一键,不能重复
    • auto_increment:自动增加,插入时无须插入该类型字段
    • default:默认值,插入数据时,如果没有指定就使用默认值
    • unsigned:表示无符号数
    • zerofill:显示宽度不足时,使用0填充

    表的操作

    1.创建表

    #语法:
    create table 表名(
    字段名1 类型[(宽度) 约束条件],
    字段名2 类型[(宽度) 约束条件],
    字段名3 类型[(宽度) 约束条件]
    );
    
    #注意:
    1. 在同一张表中,字段名是不能相同
    2. 宽度和约束条件可选
    3. 字段名和类型是必须的

    例子

    create table db1 (
        id int primary key,
        name char(10) not null,
        age int(4),
        sex enum('female', 'male') 
    );

    2.查看表

    show tables; #查看当前数据库下所有的表
    
    describe t1; #查看表结构,可简写为desc 表名

    3.修改表

    语法:
    1. 修改表名
    ALTER TABLE 表名 RENAME 新表名;
    
    2. 增加字段
    ALTER TABLE 表名 ADD 字段名  数据类型 [完整性约束条件…], ADD 字段名  数据类型 [完整性约束条件…];
    ALTER TABLE 表名 ADD 字段名  数据类型 [完整性约束条件…]  FIRST;
    ALTER TABLE 表名 ADD 字段名  数据类型 [完整性约束条件…]  AFTER 字段名;
    
    3. 删除字段
    ALTER TABLE 表名 DROP 字段名;
    
    4. 修改字段
    ALTER TABLE 表名 MODIFY  字段名 数据类型 [完整性约束条件…];
    ALTER TABLE 表名 CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…];
    ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];
    

      

    4.复制表

    • LIKE 方法:LIKE方法是专门复制表结构的方法,他只复制表结构和相关属性,并不复制里面的数据
    • SELECT 方法:严格来讲 SELECT 方法不能理解成复制表结构的方法,其实他只是执行了一个SELECT查询语句。其实复制的结果只包含了 SELECT 的字段和数据,其他表属性包括存储引擎默认字符集等都由系统的配置文件决定
    1.复制表结构和数据(key不会复制: 主键、外键和索引)
    create table db2 select * from db1;
    
    2.复制表结构
    create table db2 select * from db1 where 1=2;  
    
    3.复制表结构(包括key)
    create table db2 like db1;
    

      

    5.删除表

    DROP TABLE 表名;
    
    drop table db2
  • 相关阅读:
    LeetCode105 从前序遍历和中序遍历构造二叉树
    LeetCode61 扑克牌中的顺子
    LeetCode141 环形链表
    LeetCode103 二叉树的锯齿形层次遍历
    509 斐波那契数
    剑指29 顺时针打印矩阵
    malloc分配内存2种方式:brk和mmap
    Python学习第139天(Django的分页器(paginator))
    Python学习第138天(Django的用户认真组件)
    Python学习第137天(admin部分参数补充)
  • 原文地址:https://www.cnblogs.com/chusiyong/p/11404689.html
Copyright © 2011-2022 走看看