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入门的主要内容,如果未能解决你的问题,请参考以下文章
PHP mysql_num_rows() 函数 返回结果集中行的数目。
如何实现监控mysql,并将有变动的数据表写入指定的文件夹?
MySQL表结构同步工具 mysql-schema-sync