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(字段名);

原文地址:https://www.cnblogs.com/zhouwanqiu/p/9084715.html