zoukankan      html  css  js  c++  java
  • MySQL基础

    MySQL的端口:3306

    MySQL数据库中命令不区分大小写;

    每创建一个数据库就会在data目录下创建一个以此数据库名称命名的文件夹;

    在Windows下数据库名称也是不区分大小写的,但在Linux下数据库名称严格区分大小写;

    字符集:

      ①数据库服务器字符集

        在MySQL的配置文件my.ini中配置:default-character-set=utf8

      ②数据库字符集:继承数据库服务器字符集

      ③数据表字符集:继承数据库字符集

      ④数据表字段的字符集:继承数据表字符集

      ⑤校验字符集

        对中文进行排序:collate utf8_general_ci

      ⑥数据库客户端字符集

        如使用cmd客户端连接数据库时使用:set names utf8;

      ⑦连接字符集:set names utf8;

    数据表的引擎(ENGINE)及存储位置:

      MySQL支持的主要类型有 MyISAM、InnoDB:

        1.MyISAM数据表类型的特点是成熟、稳定和易于管理

        2.MyISAM表类型会产生碎片空间,要经常使用命令“optimize table table_name”去清理空间

        3.MyISAM不支持事务处理,InnoDB支持

        4.MyISAM不支持外键,InnoDB支持

        5.MyISAM产生3个文件:.frm(表结构)、.MYI(表索引)、.MYD(表数据);InnoDB只产生1个文件:.frm(表结构),“data/ibdata1”存储所有数据库中所有InnoDB表的索引和数据(共享表空间)

        6.MyISAM的效率高于InnoDB

    数值类数据列类型:

      tinyint:非常小的整数  -128~127;0~255  1字节

      smallint:较小的整数  0~65535  2字节

      mediumint:中等大小的整数  0~16777215  3字节

      int:标准整数  0~42亿  4字节

      bigint:大整数  8字节

      float:单精度浮点数

      double:双精度浮点数

      decimal:以字符串形式表示浮点数

      注:

        1、整型后面的数字如:int(3)中的3只是表示显示值的位数,配合 zerofill 使用;

        2、float(3,1)中3代表显示总长度,1代表小数长度;

    字符串类数据列类型:

      char(m):定长字符串,值为m字节

      varchar(m):可变字符串,值为m字节

      tinyblob、tinytext:非常小的blob(二进制大对象)和文本串

      blob、text:小blob和文本串

      mediumblob、mediumtext:中等的blob和文本串

      longblob、longtext:大blob和文本串

      enum('val1','val2'...):枚举

      set('val1','val2'...):集合

      注:

        1、char和varchar:当传入的实际值长度大于指定长度时,字符串会被截取至指定长度或报错;当传入值小于指定长度时,char会使用空格补至指定长度,而varchar不会;

        2、blob和text是可以存放任意大数据的数据类型;blob区分大小写,text不区分大小写;text不支持 not null或default属性;

        3、enum只能选择其中一个值,而set可以选择多个值;

        4、text后面不能写not null或default,否则会报错;

    时间和日期类数据类型:

      date:“YYYY-MM-DD”格式表示的日期

      time:“hh:mm:ss”格式表示的时间

      datetime:“YYYY-MM-DD hh:mm:ss”格式

      timestamp:“YYYYMMDDhhmmss”格式

      YEAR:“YYYY”格式的年份值

    字段属性:

      unsigned:非负/无符号,无“+”和“-”,只能用于设置数值型,不允许出现负数后最大存储长度增加了一倍

      zerofill:只能用于设置数值型,例:int(3)中数字3为整型的显示位数,当数值位数不足时在前面用0填充:001

      null:字段值允许为空,默认值为null(无插入值时)

      not null:值不允许为空

      default:默认值,配合 not null 使用

      primary key:主键,一个数据表只能有一个主键,主键代表唯一,而且被设置成主键的字段就自动不能为空

      auto_increment:自增长,对于整型字段有用,且该字段须为索引

      unique:唯一索引,值不能重复,一个表中可以有多个字段添加唯一索引

    索引分类:

      1.主键索引:primary key  唯一性

      2.唯一索引:unique  唯一性

      3.普通(常规)索引:index / key

      4.全文索引:fulltext

        用来进行全文数据的搜索;很少使用,可以用 sphinx 全文检索引擎来进行替代

      5.外键索引:foreign key

        通常情况下,配合一张表的主键使用;两表或多表关联时使用;但外键只能在InnoDB表中使用,不推荐使用,效率低

      数据表添加索引的三种方式:

        ①在创建数据表时,在每个字段属性之后添加该字段的索引

          create table `table_name`(

            `id` int unsigned auto_increment primary key,

            `username` varchar(32) not null unique,

            `phone` varchar(20) not null,

            `sex` enum('男','女','保密') not null default '保密'

          )engine=myisam default charset=utf8;

          注意:此时数据表中的`id`对应为主键索引,`username`对应为唯一索引,若要再添加普通索引,不可在字段属性后直接加“index/key”,否则会报错,须使用另外两种方式来添加普通索引

        ②在创建数据表时,编辑完所有字段的最后,再添加索引

          create table `table_name`(

            `id` int unsigned auto_increment,

            `username` varchar(32) not null,

            `phone` varchar(20) not null,

            `sex` enum('男','女','保密') not null default '保密',

            primary key(`id`),

            unique table_name_字段名(`字段名`),

            key table_name_字段名1(`字段名1`),

            key table_name_字段名2(`字段名2`)

          )engine=myisam default charset=utf8;

        ③用修改表结构的方式添加索引

          alter table table_name add primary key(id);

          alter table table_name add unique table_name_字段名(字段名);

          alter table table_name add index table_name_字段名_index(字段名);

  • 相关阅读:
    无约束梯度算法
    resp协议
    union和union all
    cgi和fastcgi
    证书认证原理
    HTTPS的实现原理
    redis消息队列优缺点有哪些?redis消息队列的优缺点
    cname是个什么东西
    CDN
    PHP 删除数组中的元素
  • 原文地址:https://www.cnblogs.com/zhouwanqiu/p/9084715.html
Copyright © 2011-2022 走看看