mysql基础知识点复习

 整形数字的宽度

如tinyint(3)中的3代表宽度,只有在有zerofill时才起作用。

tinyint signed : -128 ~ 127

tinyint unsigned : 0 ~ 255

(1):宽度,当你添加 zerofill时这个宽度才起作用,例子:

ad_type tinyint(3) unsigned zerofill not null default ‘0’,

1 -->    001

12 -->   012

123 -->  123

tinyint(2)

1 -->   01

12 -->  12

123 --> 123

tinyint(1)

1  -->     1

12 -->     12

123  --->  123

注意这个宽度只有在有zerofill时才有效。

外键

 只有InnoDB支持外键

 MyISAM不支持 : 不会出现语法错误,但没有任何实际的效果

日志系统:

create table user

(

    idint unsigned not null,

    usernamevarchar(100) not null,

primary key (id)

)engine=InnoDB;


create table blog

(

    idint unsigned not null,

    titlevarchar(100) not null,

    user_idint unsigned not null comment ”发表日志的用户ID”,

keyuser_id(user_id),

foreign key (user_id) references user(id) on UPDATE RESTRICT

)engine=InnoDB;

 

RESTRICT :限制主表数据的删除:

CASCADE : 从表的数据也跟着删除

SET NULL : 设置值为NULL

NO ACTION : 什么也不做

注意:如果不是innodb引擎,那么这个语法不会出错,但是没有任何实际效果。

数字类型字段的宽度

tinyint signed        -128~127

tinyint unsigned       0~255

smallint signed       -32768~32767

smallint unsigned      0~65535

mediumint signed      -200多万~200多万

mediumint unsigned    0 ~ 400多万

int     signed       -20多亿~20多亿

int     unsigned      0 ~ 40多

 Char 、varchar和text三种字符串类型

Char(255)   :    255 个字符  a中国(3个字符)

Varchar     :    65535个字节

Utf8:汉字=3个字节 所以varchar最多能存 65535/3个汉字

gbk/gb2312:汉字=2个字节所以最多能存 65535/2个汉字

Text        :     65535 个字符

char(15)(15个字符)与varchar(15)(15个字节)有什么区别

Char(15)    :   abc -->     占用15个硬盘位置     --> 速度快

Varchar(15) :  abc\0  -->  占用4个硬盘位置。   --> 更节省硬盘空间

性能:char >varchar > text

事务

只有InnoDB引擎支持:

意思:多个SQL语句,要不都成功,否则就都失败。保持一致性。

典型应用:

转账:

 1.我A用户减去100元

UPDATE user SET account=account-100 WHERE id=1;

  2.给B用户加上100元

UPDATE user SET account=account+100 WHERE id=2;

mysql基础知识点复习_第1张图片

 锁表

共享锁: 其他人可以读数据,但不能修改  lock table 表名 read

排它锁: 其他不能读也不能写            lock table 表名 write

释放表:unlocktables;

注意:MYSQL的锁的阻塞的。

文件锁:

写PHP代码可以多个进程安全的同时操作一个文件。

Mysql中常用的引擎

MyISAM

全文索引(不支持中文)要使用sphinx(全文索引引擎)

表级锁定

一张表生成三个文件(表结构文件.MYF,表索引文件.MYI,表中数据文件.MYD)

InnoDB(更占空间)

行级锁定

支持事务、外键

一张表一个文件(也可以设置为两个文件,把索引单独拿出来一个文件)

什么时候是表锁:在事务如果要操作多张表中的多条记录时。

Myisam引擎和innodb引擎哪个更强空间:InnoDB更占空间。

Heap/memeroy:内存表(表在内存中,重启之后数据就丢失,因为中内存中所以操作速度非常快!)

你可能感兴趣的:(Mysql)