mysql入门

Posted 浴盆

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql入门相关的知识,希望对你有一定的参考价值。

整型

mysql的整数型按照存储范围和存储占用字节数主要分为这几种

  • TINYINT
  • SMALLINT
  • MEDIUMINT
  • INT(INT大于MEDIUMINT)
  • BIGINT

无符号位存储会是有符号存储数目的大致两倍(有符号位包括负数)。如果没有选择合适的数据类型存储,数据占据的字节就会大大增多。

浮点型

浮点型分为FLOAT和DOUBLE。这两种类型除了存储范围的不同之外,保留小数点的数目也是不一样的。FLOAT[(M,D)]中的M表示数字总位数,D是小数点后面的位数,如果M和D被省略,则根据硬件能存储的最大长度来存储。

日期类型

日期类型分为

  • YEAR
  • TIME
  • DATE
  • DATETIME
  • TIMESTAMP

字符型

字符型存在CHAR(M)和VARCHAR(M),M代表字符串长度。CHAR是定长类型,VARCHAR是不定长类型。比如存储test在CHAR(5)中,多出的一位会自动补齐。

创建数据表

create table[if not exists] table_name (
	column_name data_type
)

data_type为上述数据类型中的一种,if not exists表示如果表不存在则创建,如果表存在则取消。
举个栗子

create table tb (
	username varchar(20),
	age tinyint unsigned,
	salary float(8,2) unsigned
);

空值与非空

create table tb (
	username varchar(20) not null,
	age tinyint unsigned null
);

null表示字段写入时可以为空,not null表示字段写入时不能为空

自动编号

auto_increment自动编号用来区分不同的记录,保证记录唯一性

  • 自动编号,必须和主键组合使用
  • 默认情况下,起始值为1,每次的增量为1
create table tb (
	id smallint unsigned auto_increment
);

这样会报错,因为id列没有指定为主键

主键

主键有这几个特点

  • 每张数据表只能存在一个主键
  • 主键保证记录的唯一性
  • 主键自动为not null
create table tb (
	id smallint unsigned auto_increment primary key
);

唯一约束

唯一约束unique key同样是来保证唯一性

  • 唯一约束可以保证记录唯一性
  • 唯一约束的字段可以为空值(NULL)
  • 每张数据表可以存在多个唯一约束
create table tb (
	id smallint unsigned auto_increment primary key,
	username varchar(20) not null unique key
);

默认值default

create table tb (
	id smallint unsigned auto_increment primary key,
	sex enum('1','2','3') default '3'
);

约束

约束用来保证数据的完整性和一致性。约束分为列级约束和表级约束,如果一个约束只涉及单列,那么为列级约束。
外键约束主要用来保证数据表的一致性,实现一对一或者一对多的关系。

create table province (
	id smallint unsigned auto_increment primary key,
	pname varchar(20) not null
);
create table users (
	id smallint unsigned auto_increment primary key,
	username varchar(20) not null,
	pid smallint,
	foreign key (pid) references province (id)
);

在user表中pid通过外键约束关联到了表province,有外键的表称之为子表,这里users为子表,province为父表。外键列和参照列必须创建索引,如果没有创建,mysql将自动创建索引。
创建时可以对父表中数据变动时在子表中相应的处理进行设置。

索引

创建索引时,需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。
实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。建立索引会占用磁盘空间的索引文件。
先假设有一张表,表的数据有10W条数据,其中有一条数据是name=‘yupen’,如果要拿这条数据的话需要些的sql是select * from tb where name = ‘yupen’。
所谓索引就是为特定的mysql字段进行一些特定的算法排序,比如二叉树的算法和哈希算法,哈希算法是通过建立特征值,然后根据特征值来快速查找。

存储过程

当sql命令提交后,mysql引擎分析sql命令,如果语法正确,则编译成可识别命令,执行后将执行结果返回客户端。而存储过程是sql语句和控制语句的预编译集合,以一个名称存储并作为一个单元处理。

以上是关于mysql入门的主要内容,如果未能解决你的问题,请参考以下文章

数据库mysql转为postgresql变动

PHP mysql_num_rows() 函数 返回结果集中行的数目。

如何实现监控mysql,并将有变动的数据表写入指定的文件夹?

MySQL表结构同步工具 mysql-schema-sync

调整innodb redo log files数目和大小的具体方法和步骤

igntie实现数据同步