zoukankan      html  css  js  c++  java
  • MySQL数据库之表相关

    阅读目录

    一、存储引擎介绍

    存储引擎即表类型,mysql根据不同的表类型会有不同的处理机制

    https://www.cnblogs.com/baicai37/p/12827274.html

    二、表介绍

    表相当于文件,表中的一条记录就相当于文件的一行内容,不同的是,表中的一条记录有对应的标题,称为表的字段

     id,name,qq,age称为字段,其余的,一行内容称为一条记录

    三、创建表

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

    create table t6(
        id int,
        name char,
    ); 报错

    创建表示例:

    mysql> create table t1(
        -> id int,
        -> name varchar(50),
        -> password varchar(50)
        -> );
    Query OK, 0 rows affected (0.02 sec)
    
    mysql> show tables;
    +-----------------------+
    | Tables_in_userinfo_db |
    +-----------------------+
    | baseinfo              |
    | t1                    |
    +-----------------------+
    2 rows in set (0.00 sec)
    
    mysql> desc t1;
    +----------+-------------+------+-----+---------+-------+
    | Field    | Type        | Null | Key | Default | Extra |
    +----------+-------------+------+-----+---------+-------+
    | id       | int(11)     | YES  |     | NULL    |       |
    | name     | varchar(50) | YES  |     | NULL    |       |
    | password | varchar(50) | YES  |     | NULL    |       |
    +----------+-------------+------+-----+---------+-------+
    3 rows in set (0.02 sec)
    
    mysql>
    """补充"""
    # 宽度
        一般情况下指的是对存储数据的限制
        create table t7(name char);  默认宽度是1
        insert into t7 values('jason');
        insert into t7 values(null);  关键字NULL
            针对不同的版本会出现不同的效果
                5.6版本默认没有开启严格模式 规定只能存一个字符你给了多个字符,那么我会自动帮你截取
                5.7版本及以上或者开启了严格模式 那么规定只能存几个 就不能超,一旦超出范围立刻报错 Data too long for ....
    """严格模式到底开不开呢?"""
    MySQL5.7之后的版本默认都是开启严格模式的
    使用数据库的准则:
        能尽量少的让数据库干活就尽量少 不要给数据库增加额外的压力
    
    # 约束条件 null  not null不能插入null
    create table t8(id int,name char not null);
    
    """
    宽度和约束条件到底是什么关系
        宽度是用来限制数据的存储
        约束条件是在宽度的基础之上增加的额外的约束
    """

    四、严格模式

    # 如何查看严格模式
    show variables like "%mode";
    也可以使用:
    select @@sql_mode;
    
    模糊匹配/查询
        关键字 like
            %:匹配任意多个字符
            _:匹配任意单个字符
    
    # 修改严格模式
        set session  只在当前窗口有效
        set global   全局窗口有效(重启MySQL后失效)
    要想永久有效要在my.ini配置文件中的mysqld下的sql_mode修改
      
    #启用严格模式 #NO_ENGINE_SUBSTITUTION非严格模式 set global sql_mode = 'STRICT_TRANS_TABLES'; 修改完之后 重新进入服务端即可

    五、数据类型以及枚举和集合用法

    https://www.cnblogs.com/baicai37/p/12828292.html

    六、完整性约束

    https://www.cnblogs.com/baicai37/p/12831515.html

    七、表相关操作

    对字段操作:

    语法:
    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 表名 
                              MODIFY  字段名 数据类型 [完整性约束条件…] first;   #将字段修改为第一字段
          ALTER TABLE 表名 
                              MODIFY  字段名 数据类型 [完整性约束条件…] after 字段名;  #将字段放在指定字段名之后 
          ALTER TABLE 表名 
                              CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…];
          ALTER TABLE 表名 
                              CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];

    对表本身的操作:

    #创建表
    create table 表名(
                 字段名1 类型[(宽度) 约束条件],
                 字段名2 类型[(宽度) 约束条件],
                 字段名3 类型[(宽度) 约束条件]
    );
    
    show tables;                                                          #查看当前数据库里有多少张表;
    desc t1;(describe)                                                   #查看t1表结构;
    
    flush  privileges;                                                     #刷新权限;
    drop  table t1;                                                       #删除表;
    
    show engines;查看MySQL存储引擎;
    show variables like '%storage_engine%'#查看MySQL默认的存储引擎;
    alter table t1  engine=innodb;                                  #修改MySQL t1表存储引擎;

     八、复制表

    复制表结构+记录 (key不会复制: 主键、外键和索引)
    create table 表名 select * from 旧表;  #只复制旧表内记录,以及表结构,不能复制主键 外键 ... mysql
    > create table new_service select * from service; #根据条件复制旧表 mysql> create table new1_service select * from service where id=1; #只复制旧表中id=1的记录以及表结构,不能复制主键、外键... Query OK, 0 rows affected (0.00 sec) Records: 0 Duplicates: 0 Warnings: 0
    create table 表名 like 旧表; #不能复制旧表记录、主键、外键,只复制旧表结构 mysql
    > create table t4 like employees;
  • 相关阅读:
    November 13th 2016 Week 47th Sunday The 1st Day
    November 12th 2016 Week 46th Saturday
    November 11th 2016 Week 46th Friday
    November 10th 2016 Week 46th Thursday
    November 9th 2016 Week 46th Wednesday
    November 8th 2016 Week 46th Tuesday
    windows 7文件共享方法
    Win7无线网络共享设置方法
    常量指针和指针常量
    如何查找局域网的外网ip
  • 原文地址:https://www.cnblogs.com/baicai37/p/12828489.html
Copyright © 2011-2022 走看看