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.分组