今天是学习mysql的第三天
数据插入 insert into
insert into test (id,name) values(1,'张三'); \\正常方式插入数据
insert into test set id=2,name='lishi'; \\set方式插入数据
insert into test(id,name) select id,names from test2; \\查询结果集插入数据 查询的结果集字段名可以和表字段名不一样但是字段类型和数量要一一对应。
替换数据 replace into
和insert into一样 有三种插入方式 正常、set 、查询结果集插入
replace into test (id,name) values(4,'张三');
replace into test set id=5,name='lishi';
replace into test(id,name) values(1,'王武'); \\当插入数据时 id=1的数据已经有了 就会先删除掉id等于一的数据然后在插入
replace into test(id,name) values(4,'赵'); \\当插入的数据与已有的数据不冲突就直接插入数据
\\ 当插入数据时如果有主键或唯一索引
\\ 就会先检查插入的数据与已有的数据是否冲突
\\ 如果冲突就把冲突的数据删除 然后插入新的数据
\\ 如果既有主键又有唯一索引 可能会与多条数据产生冲突 会删除多条有冲突的数据
修改数据
update test set name='秦' where id>2 order by id asc limit 2; \\可以使用 order by 和 limit
删除数据
delete from test where id>2 order by id asc limit 2; \\delete 同样可以使用 order by 和 limit
快速删除所有数据
truncate test; \\效果和 delete from test; 效果差不多
工作方式:记录表结构-》删除表 -》重新建一个新表
特点: 速度快 自增字段计数回复初值 不返回收影响的行数
字符集
show variables like 'character_set%'; \\查看关于字符集的变量
character_set_client \\客户端使用的字符集编码
character_set_connection \\连接数据库使用的字符集编码
character_set_results \\返回结构使用的字符集编码
当这三个变量的值 和 客户端使用的字符集编码一致时 就不会存在乱码的问题了
set character_set_client=gbk;
set character_set_connection=gbk; //设置使用编码为gbk
set character_set_results=gbk;
set names gbk; \\快速设置三个变量的值为gbk
php连接mysql时 设置的值与php文件保存时的编码一致就不会出现乱码
列类型
char(L) \\定长字符串
L表示字符数 (不是字节数) 如果L等于一 可以插入 一个数字或字母 也可以插入一个汉字
char 最大可以保持255个字节(不是字符数)的数据
varchar(L) \\可变长度字符串
和char一样 L代表字符数
varchar 最大可以保持65535个字节的数据。
数据库设计三范式
第一范式 字段的原子性 就是表中的每个字段不可重复不可分割
第二范式 消除部分依赖 就是找到可以确定每条记录的唯一标识
第三范式 消除传递依赖 就是将一类实体放入一张表中