zoukankan      html  css  js  c++  java
  • 掌握MySQL 2

    七、库相关操作

      7.1、系统数据库

        information_schema:虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息、列信息、权限信息、字符信息等。

        performance_schema:mysql 5.5 开始新增的一个数据库。主要用于收集数据库服务器性能参数,记录处理查询请求时发生的各种事件、锁等现象。  

        mysql:授权库,主要储存用户的权限信息。

        test:MySQL 数据库系统自动创建的测试数据库。

      7.2、数据库命名规则

        可以由字母、数字、下划线、@、#、$ 等组成

        区分大小写

        名字唯一

        不能使用关键字,如 create、select

        不能单独使用数字

        最长128位

      7.3、数据库相关操作

        1、查看数据库

    show databases;    # 查看所有数据库
    show create database db1;    # 查看指定数据库
    select database();    # 查看当前所在数据库

        2、选择数据库

    use db1;

        3、修改数据库

    alter database db1 charset utf8;

       4、删除数据库

    drop database db1;

    八、表相关操作

      8.1、储存引擎

        1、什么是存储引擎

          又称作表类型,根据表的不同类型,对应 MySQL 不同的存取机制。

          MySQL 数据库提供了多种储存引擎,用户可以根据不同需求为数据表选择不同储存引擎,也可自己编写一个存储引擎。

      8.2、MySQL的几个重要的存储引擎

        1、Innodb 存储引擎

          支持事务,行锁和外键。其设计目标主要面向联机事务处理(OLTP)的应用。并支持类似 Oracle 的非锁定

          读,即默认读取操作不会产生锁。是目前默认的存储引擎。

          

          建表的时候 innodb 会产生两个文件

            一个是表结构文件

            一个是存储数据文件

        2、myisam 存储引擎

          不支持事务、表锁设计,支持全文索引。它的缓冲池只缓存索引文件,而不缓存数据文件,这与大多数数据库都不相同。查询

          速度较 Innodb 快,但安全性不及 Innodb。

            

          建表的时候 innodb 会产生三个文件

            一个是表结构文件

            一个是索引文件

            一个是存储数据文件

        3、memory 存储引擎

          数据存放在内存中,数据库重启或崩溃,表中的数据都会消失。

          建表的时候仅仅生成一个表结构文件

        4、blackhole 存储引擎

          存入的数据都会消失

          建表的时候仅仅生成一个表结构文件

      8.3、使用存储引擎

    create table t1(id int) engine=innodb;
    create table t2(id int) engine=myisam;
    create table t3(id int) engine=memory;
    create table t4(id int) engine=blackhole;

    九、表介绍

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

      9.1、创建表

        1、语法     

    create table t1(
        字段名1 类型[(宽度) 约束条件],
        字段名2 类型[(宽度) 约束条件],
        字段名3 类型[(宽度) 约束条件]
        );

        2、注意

          在同一张表中,字段名不能相同

          宽度和约束条件可选

          字段名和类型必须写

    十、数据类型

      10.1、常用数据类型概览

        1、数字

          整型:tinyint  int  bigint

          小数:

            float:在位数比较短的情况下不精准

            double:在位数比较长的情况下不精准

            decimal:精准,内部原理是以字符串形式去存,推荐使用

        2、字符类型

          char(10):简单粗暴,浪费空间,存取速度快  # 将 root 存成 root000000

          varchar:精准,节省空间,存取速度慢

          sql 优化:创建表时,定长的类型往前放(不如性别),变长的往后放(比如地址)  

        3、时间类型

          datatime

        4、枚举类型和集合类型

      10.2、数值类型

        1七、库相关操作

      7.1、系统数据库

        information_schema:虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息、列信息、权限信息、字符信息等。

        performance_schema:mysql 5.5 开始新增的一个数据库。主要用于收集数据库服务器性能参数,记录处理查询请求时发生的各种事件、锁等现象。  

        mysql:授权库,主要储存用户的权限信息。

        test:MySQL 数据库系统自动创建的测试数据库。

      7.2、数据库命名规则

        可以由字母、数字、下划线、@、#、$ 等组成

        区分大小写

        名字唯一

        不能使用关键字,如 create、select

        不能单独使用数字

        最长128位

      7.3、数据库相关操作

        1、查看数据库    

    show databases; # 查看所有数据库
    
    show create database db1; # 查看指定数据库
    
    select database(); # 查看当前所在数据库

        2、选择数据库   

     use db1;

        3、修改数据库

    alter database db1 charset utf8;

       4、删除数据库

    drop database db1;

    八、表相关操作

      8.1、储存引擎

        1、什么是存储引擎

          又称作表类型,根据表的不同类型,对应 MySQL 不同的存取机制。

          MySQL 数据库提供了多种储存引擎,用户可以根据不同需求为数据表选择不同储存引擎,也可自己编写一个存储引擎。

      8.2、MySQL的几个重要的存储引擎

        1、Innodb 存储引擎

          支持事务,其设计目标主要面向联机事务处理(OLTP)的应用。其特点是行锁设计、支持外键,并支持类似 Oracle 的非锁定

          读,即默认读取操作不会产生锁。是目前默认的存储引擎。

        2、myisam 存储引擎

          不支持事务、表锁设计、支持全文索引。它的缓冲池只缓存索引文件,而不缓存数据文件,这与大多数数据库都不相同。查询

          速度较 Innodb 快,但安全性不及 Innodb。

        3、memory 存储引擎

          数据存放在内存中,数据库重启或崩溃,表中的数据都会消失。

        4、blackhole 存储引擎

          存入的数据都会消失

      8.3、使用存储引擎

    create table t1(id int) engine=innodb;
    
    create table t2(id int) engine=myisam;
    
    create table t3(id int) engine=memory;
    
    create table t4(id int) engine=blackhole;

    九、表介绍

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

      9.1、创建表

         1、语法     

    create table t1(
    
        字段名1 类型[(宽度) 约束条件].
    
        字段名2 类型[(宽度) 约束条件].
    
        字段名1 类型[(宽度) 约束条件].
    
        );

        2、注意

          在同一张表中,字段名不能相同

          宽度和约束条件可选

          字段名和类型必须写

    十、数据类型

      10.1、常用数据类型概览

        1、数字

          整型:tinyint  int  bigint

          小数:

            float:在位数比较短的情况下不精准

            double:在位数比较长的情况下不精准

            decimal:精准,内部原理是以字符串形式去存,推荐使用

        2、字符串

          char(10):简单粗暴,浪费空间,存取速度快 # 将 root 存成 root000000

          varchar:精准,节省空间,存取速度慢

          sql 优化ti:创建表时,定长的类型往前放(不如性别),变长的往后放(比如地址)  

        3、时间类型

          datatime

        4、枚举类型和集合类型

      10.2、整型

          整数类型默认有符号,可设置为无符号

    create table t1 (x int unsigned);

          对于整型来说,数据类型后的宽度并不是存储限制,而是显示限制,因此在创建表时,如果是整型类型,无需指定显示宽度。

          zerofill  用 0 填充不足的位数。

        10.3、浮点型

          字段限制特点 

            float(5,3)  前一位表示所有的位数,后一位表示小数个数

          float(单精度浮点数):

            m 最大为255,d 最大为30

          double(双精度浮点数):

            m 最大为255,d 最大为30

          decimal

            m 最大为65,d 最大为30

         10.4、字符串类型

          char(4)  定长:最大存储四个字符,超出报错,不足默认用空格占位

          varchar(4)  变长:最大存储四个字符,超出报错,不足有几位存几位

          char:

            存取速度快,浪费硬盘空间

          varchar:

            存取速度慢,节省硬盘空间

            

        10.5、时间类型

          分类:        

            date:2019-05-01

            time:11:11:11

            datetime:2019-01-02 11:11:11

            year:2019

        

        10.6、枚举与集合类型

          枚举:enum,多选一

          集合:set,多选多

    create table t1(
      id int,
      name char(16),
      gender enum('male','female','others')
    );
    insert into user values(1,'a','xxx')  # 报错
    insert into user values(2,'b','female')  # 正确!
    
    
    create table t2(
      id int,
      name char(16),
      gender enum('male','female','others'),
      hobby set('read','sleep','eat','dbj')
    );
    insert into t2 values(1,'a','male','read,sleep,dbj')  # 集合也可以只存一个

    十一、表完整性约束

      11.1、介绍 

        primary key(PK)  标识该字段为该表的主键,可以唯一的标识记录

        foreign key(FK)   标识该字段为该表的外键

        not null      标识该字段不能为空

        unique key(UK)   标识该字段的值时唯一的

        auto_increment   标识该字段的值自动增长(整数类型,且为主键)

        default       设置默认值

        unsigned      无符号

        zerofill        使用 0 填充

      

      11.2、not null + default 

    create table user(
        id int,
      name char(16)
    );
    insert into user values(1,null)  # 可以修改
    
    alter table user modify name char(16) not null;
    insert into user(name,id) values(null,2);  # 报错 插入数据可以在表名后面指定插入数据对应的字段
    
    create table student(
        id int,
      name char(16) not null,
      gender enum('male','female','others') default 'male'
    )
    insert into student(id,name) values(1,'n')  # 成功

      

      11.3、unique

        单列唯一,限制某一个字段是唯一的

    create table user1(
    id int unique,
    name char(16)
    );
    insert into user1 values(1,'a'),(1,'b') # 报错
    insert into user1 values(1,'a'),(2,'b') # 成功


        联合唯一,在语句的最后,用括号的形式,表示那几个字段组合的结果是唯一的
       
    create table server(
        id int,
      ip char(16),
      port int,
      unique(ip,port)
    )
    insert into server values(1,'127.0.0.1',8080);
    insert into server values(2,'127.0.0.1',8080);  # 报错
    insert into server values(1,'127.0.0.1',8081);

      

      11.4、primary key + auto_increment

        1、单从约束角度来说 primary key 等价于 not null unique

    create table t11(id int primary key);
    desc t11;
    insert into t11 values(1),(1);  # 报错
    insert into t11 values(1),(2);

        2、primary keys 也是 innodb 引擎查询必备的索引    

          2.1、innodb 引擎在创建表的时候,必须要有一个主键,如果没有设置主键

            1、那么会从上到下搜索直到遇到一个非空且唯一的字段,自动升级成主键

            2、当你的表中没有任何的约束条件,innodb 会采用自己的内部默认的一个主键字段,将其设置为主键。

              该主键字段在查询时无法使用。因此查询速度变慢。  

    create table t1(
        id int,
        name char(16),
        age int not null unique,
        addr char(16) not null unique
        )engine=innodb;
    desc t1;

        3、联合主键:多个字段联合起来作为表的一个主键,本质还是一个主键。      

    create table t1(
        ip char(16),
        port int,
        primary key(ip,port)
        );
    desc t1;

        4、 主键字段应该具备自动递增的特点,每次添加数据,不需要用户手动输入

    # auto_increment    自动递增,只能加载在设置成key的字段上。
    create table t1(
    id int primary key auto_increment,
    name varchar(16));
    
    desc t1;

          delete from  仅仅是删除数据,不会重置主键

          truncate     初始化表,会重置主键

          

          

        

        

        

  • 相关阅读:
    SQL Challenges靶机
    XSS靶机1
    djinn靶机
    Sunset靶机
    统计学 一 集中趋势
    测试
    测试
    统计学 一 集中趋势
    算法分析
    代码测试
  • 原文地址:https://www.cnblogs.com/binyuanxiang/p/11386648.html
Copyright © 2011-2022 走看看