PHP[入门]P15-数据库 数据类型 字符集 存储引擎

这是我早期的 php 学习笔记,php 的学习版本版本是 5.6、7,🐟2020/05/06年从有道笔记导出至此。

day15 数据库 数据类型 字符集 存储引擎

1.数据类型

int 默认没有设置int字节 11位

char varchar 数据类型的区别:

timestamp: regtime timestamp default current_timestamp;

在增加数据的时候 没有给指定的时间类型字段值的时候,默认填充的值是当前时间的时间戳

enum:枚举类型 用于互斥的 单选项

新建字段时候

sex enum('w','m');

// sex enum(1,2,.....);

存储值时候:

insert into user values('w');

insert into user values('1');

set:集合类型

设置字段类型:love set('eat','play','sport','wan');

// ; 1 2, 4, 8;

insert into user values('eat,play');

insert into user values('6');

unsigned:无符号 规定 没有负数 int(10) unsigned eg:编号,年龄......

auto_increment:自增 常用于:id

修改起始值:alter table user auto_increment=起始值

default '值': 默认值 再给某个字段增加值的时候就是插入数据时没有给值 默认使用设置的默认值

not null :创建时在字段语句后接上:not null

2.字符集

utf8 GBK GB2312

3.存储引擎

show engines;可以查看到当前服务器支持的所有引擎。

myisam 和 innodb的区别

myisam 不支持事物 表锁 支持全文索引 查询的速度快

innodb 支持事物 行锁 支持外键 数据操作速度快 默认读取不加锁 处理大数据优先选择innodb

4.索引

普通索引:

格式:alter table 表 add index(字段);

唯一索引: 当前列值唯一

格式:alter table 表 add unique(字段);

主键索引:不允许有空值 也别重复 是特殊的唯一索引 【注】基本上每个表都有id 会给主键索引 自动递增

格式:alter table 表 add primary key(字段);

全文索引:

格式:alter table 表 add fulltext(字段);

删除索引:

格式:alter table 表 drop index字段;

删除主键索引:

格式: alter table money drop primary key;

5.DML(增,删,改)

增:

1.insert into tablename values(值1,值2,....);

:按照字段的顺序跟值一一对应 添加; 如果有默认值 不想给定值 可以用null

2.insert [into] 表 values(值1,值2,值n); 可以将into省略(知道就好,尽量不用)

3.insert into tablename(字段1,字段2,.....) values(值1,值2,.....);

:按照自己赋的字段 字段跟值一一对应;

4.insert into star(name, money, province, age, sex)

values('黄晓明', 2000000, '山东', 39, 0),

( 'angelababy', 3000000, '上海', 27, 1),

( '陈赫', 150000, '福建', 31, 0);

: 字段名和值要一一对应,每条数据用小括号括起来,每条数据用逗号分隔开 最后的使用分号结束;

插入数据时候可以不传值的情况

1.自增的字段 (默认+1)

2.有默认值的字段 default

3.可以为空的字段

删除:

delete from tablename where 条件;

:要写where条件 不然后果自负

修改:

update tablename set 字段1=值1, 字段2=值2 .. where 条件;

:要写where条件 不然就是修改全表数据了;

6.DQL(查)

1.select * from tablename;

:是执行效率最低的一种方式,会每天数据全部读一遍;

2.指定字段查询:

select 字段名,字段名 from star;

3.查询出不重复的记录

select distinct age, sex from star;

:两个字段查询的是组合起来不重复的记录。

一个字段 当前字段不重复的记录

4.有条件的查询

select 字段名,.... from star where age = 43;

select * from star where age = 43;

5.条件查询

select * from star where age>32 and sex=0;

select * from star where age>32 or sex=0;

select * from star where age between A and B; //区间 在A和B之间 包含A B

select * from star where age in(32,43);//在in值中的数据

like : '%'代表模糊查询 :效率很低 也是查询所有进行匹配

排序:

order by 字段名 desc/asc desc:倒序 asc :默认的正序

多字段排序:

order by 字段名1 desc, 字段名2 desc :多字段排序呢 先按照前边的字段进行排序,如果前边的都相等排序失败,就按照第二个字段进行排序

limit 限制查询结果集

limit 2; 取符合条件的数据的前两条

limit 0,3; 取符合条件的数据从0(第一条)开始取,取了三条数据以后结束

7.where条件

8.结果集排序

9.限制结果集

10.分组