312MYSQL公开课.docx
- 文档编号:30364966
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:19
- 大小:499.74KB
312MYSQL公开课.docx
《312MYSQL公开课.docx》由会员分享,可在线阅读,更多相关《312MYSQL公开课.docx(19页珍藏版)》请在冰豆网上搜索。
312MYSQL公开课
SQL语言
数据的操作字符集和校对规则PHP操作MYSQL数据库
数据操作
增加数据,insertinto
标准方式
Insertinto表名(字段的列表)values(数据列表)
使用set:
Insertinto表名set字段1=值1,……
从其它数据表取数据插入:
Insertinto表名(子段列表)select
标准方式
如果写了字段列表,则数据要与其一一对应,而且顺序也必须一致!
另外数据类型也要对应,字符串型,日期型都要加引号。
指定所有字段
我们可以只插入部分字段给值,其余字段数据库会用默认值,前提是定义数据表时,此字段有默认值。
指定部分字段
使用set语法
使用select从其它表调数据
如果其实表的表结构或者与之对应的字段类型完全一致,这时可以写成
Insertinto表名select*from其它表where..orderby..limit
如果其它表字段并不一致,可以取部分字段的内容插入,但要求类型要对应。
替换数据,replaceinto
和insertinto一样也是分在种,标准写法,set语法,从其它表取数据
标准方式
replaceinto表名(字段的列表)values(数据列表)
使用set:
replaceinto表名set字段1=值1,……
从其它数据表取数据插入:
replaceinto表名(子段列表)select
和insertinto的区别:
Insertinto是直接插入,replaceinto是先判断表中的主键或唯一索引字段是否有和插入数据相应字段的值一样的数据,它就会变成修改!
(它会先删除旧数据,然后再写入一条新数据)
如果没有一样的数据,它就会插入一条新数据。
如果准备插入数据的表没有任何主键或唯一索引,则repalceinto会直接插入新数据。
它就不判断了!
替换的例子
插入新数据的例子
影响多条数据的例子
发现有两个重复的记录,一个和id为6的记录,还有一个是username为新插入值的那条id为8的数据。
它怎么处理呢?
它会先删除重复的两条数据,再插入一条新数据。
因此影响了3行记录!
Replaceinto在数据有重复的时候,它不等同于update!
查询数据,select
格式:
select*或字段列表from表名where条件
查询是千变万化的。
查询所有数据:
select*fromt1;
查询部分数据,加条件
只查询部分字段的内容
修改数据,update
格式:
update表名set字段名=新值,…….Where条件orderby..limit..
思考一下:
如果不加where条件会出现什么结果呢?
结果是,把数据里所有的记录都进行了更新!
可以加whereorderbylimit
删除数据,delete
格式:
deletefrom表名where..orderby..limit..
如果你不是想把表中所有数据都删除,一定要记得写where条件!
不写where的情况,会删除所有数据
可以加更多条件
快速删除所有数据,truncate
格式:
truncate表名;
等同于,deletefrom表名;
区别:
1.Truncate是直接把表删除,然后再重建表结构。
优点是速度快。
比一行一行删除快。
2.不会返回受影响的行数。
3.Auto_increment自动增量的字段恢复初值。
字符集和校对规则
字符集:
一套符号和字符编码的集合。
Gbkutf8latin1
校对规则:
在字符集内用于比较字符的一套规则。
字符在数据库里有四个等级
服务器级:
安装数据库时指定的
数据库级:
建立database时指定或者继承服务器级
数据表级:
建立table时指定或者继承数据库级
字段级:
建立数据表时定义字段指定的字符集或者继承表的字符集
因此我们根据我们的项目或网站,安装数据库时最好用我们定好的编码。
比如utf8或gbk
创建表可以只指定表的字符集,这时字段会使用表指定的字符集
也可以同时指定表和字段的字符集
客户端的字符集
我们启动一个新客户端,查看数据表中的数据,结果是乱码!
我们查看一下关于编码的变量
Character_set_client客户端使用的编码
Character_set_connection数据库连接使用的编码
Character_set_results返回结果使用的编码
这三个变量的设置影响到数据是否是乱码
数据库返回的数据显示是乱码,怎么做?
方法:
设置character_set_results为客户端正确的编码
我们进行数据的插入,会不会有问题呢?
原因是什么?
就是客户端明明是gbk的编码,现在却告诉数据库编码是utf8
Character_set_client现在是utf8!
解决方法:
设置客户端编码变量为正确的值
Setcharacter_set_client=gbk;
结论:
因此如果客户的这两个变量设置正确,那么无论插入数据还是读数据,都不会乱码!
拿PHP来说,就是你的PHP文件保存成什么格式,你的客户端就是什么编码!
我们把这三个变量可以合成一个:
Setnamesgbk;
Setnamesutf8;
createtablet2
(
idintunsignedauto_incrementprimarykey,
usernamevarchar(20)notnulluniquekey,
nicknamevarchar(20)charactersetutf8
)defaultcharactersetgbk;
有的同学会不会有疑问,我数据表字段的编码会不会影响客户端的数据插入和显示?
客户端不会出现乱码的情况,原因是数据库会根据客户端的编码进行正确的转换。
总结:
1.首先我们要确认我们的客户端是什么编码。
命令行客户端看属性。
PHP文件在保存编码。
2.根据客户端编码,用setnamesgbk或utf8设置编码
就不会有乱码发生了!
PHP操作MYSQL数据库
1.配置php.ini支持mysql扩展
然后还要把扩展库的路径指定正确
2.然后重启apache
如何确定MYSQL函数可用?
用phpinfo()来查看
看到下面的内容,就证明配置正确
3.写程序连接操作数据库
//先连接数据库(并认证)
Mysql_connect(‘localhost:
3306’,‘root’,‘123456’);
//根据你的文件编码设置正确的编码,通知数据库
$conn=Mysql_query(“setnamesgbk”);//彻底搞定乱码!
Mysql_query(‘useitcast’);
Mysql_query(‘showdatabases’);
//………
$result=Mysql_query(‘select*fromt2’);
While($row=Mysql_fetch_assoc($result)){
Print_r($row);
}
Mysql_close($conn);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 312 MYSQL 公开