SQL语言-----数据操作
数据操作
增加数据,insert into
标准格式
insert into 表名 (字段的列表)value(数据列表);
使用set
insert into 表名 set 字段1=值,2.....;
从其他数据表取数据插入
insert into 表名 (字段列表)select;
和insert into一样也是分在种,标准写法,set语法,从其它表取数据
标准方式
replace into 表名 (字段的列表) values (数据列表)
使用set:
replace into 表名 set 字段1=值1, ……
从其它数据表取数据插入:
replace into 表名 (子段列表) select
和insert into的区别:
Insert into是直接插入,replace into是先判断表中的主键或唯一索引字段是否有和插入数据相应字段的值一样的数据,它就会变成修改!(它会先删除旧数据,然后再写入一条新数据)
如果没有一样的数据,它就会插入一条新数据。
如果准备插入数据的表没有任何主键或唯一索引,则repalce into会直接插入新数据。
它就不判断了!
替换的例子
插入新数据的例子
影响多条数据的例子
发现有两个重复的记录,一个和id为6的记录,还有一个是username为新插入值的那条id为8的数据。
它怎么处理呢?
它会先删除重复的两条数据,再插入一条新数据。因此影响了3行记录!
Replace into在数据有重复的时候,它不等同于update!
查询数据,select
格式:select *或字段列表 from 表名 where 条件
查询是千变万化的。
查询所有数据:
select * from t1;
查询部分数据,加条件
只查询部分字段的内容
修改数据,update
格式:update 表名 set 字段名=新值, ……. Where 条件 order by .. limit ..
思考一下:如果不加where条件会出现什么结果呢?
结果是,把数据里所有的记录都进行了更新!
可以加where order by limit
删除数据,delete
格式:delete from 表名 where .. order by .. limit ..
如果你不是想把表中所有数据都删除,一定要记得写where条件!
不写where的情况,会删除所有数据
可以加更多条件
快速删除所有数据,truncate
格式:truncate 表名;
等同于,delete from 表名;
区别:
- Truncate是直接把表删除,然后再重建表结构。优点是速度快。比一行一行删除快。
- 不会返回受影响的行数。
- Auto_increment自动增量的字段恢复初值。
字符集和校对规则
字符集:一套符号和字符编码的集合。
Gbk utf8 latin1
校对规则:在字符集内用于比较字符的一套规则。
字符在数据库里有四个等级
服务器级:安装数据库时指定的
数据库级:建立database时指定或者继承服务器级
数据表级:建立table时指定或者继承数据库级
字段级:建立数据表时定义字段指定的字符集或者继承表的字符集
因此我们根据我们的项目或网站,安装数据库时最好用我们定好的编码。比如utf8或gbk
创建表可以只指定表的字符集,这时字段会使用表指定的字符集
也可以同时指定表和字段的字符集
客户端的字符集
我们启动一个新客户端,查看数据表中的数据,结果是乱码!
我们查看一下关于编码的变量
Character_set_client 客户端使用的编码
Character_set_connection 数据库连接使用的编码
Character_set_results 返回结果使用的编码
这三个变量的设置影响到数据是否是乱码
数据库返回的数据显示是乱码,怎么做?
方法:设置character_set_results为客户端正确的编码
我们进行数据的插入,会不会有问题呢?
原因是什么?
就是客户端明明是gbk的编码,现在却告诉数据库编码是utf8
Character_set_client现在是utf8!
解决方法:设置客户端编码变量为正确的值
Set character_set_client=gbk;
结论:因此如果客户的这两个变量设置正确,那么无论插入数据还是读数据,都不会乱码!
拿PHP来说,就是你的PHP文件保存成什么格式,你的客户端就是什么编码!
我们把这三个变量可以合成一个:
Set names gbk;
Set names utf8;
create table t2
(
id int unsigned auto_increment primary key,
username varchar(20) not null unique key,
nickname varchar(20) character set utf8
) default character set gbk;
有的同学会不会有疑问,我数据表字段的编码会不会影响客户端的数据插入和显示?
客户端不会出现乱码的情况,原因是数据库会根据客户端的编码进行正确的转换。
总结:
- 首先我们要确认我们的客户端是什么编码。命令行客户端看属性。PHP文件在保存编码。
- 根据客户端编码,用set names gbk或utf8设置编码
就不会有乱码发生了!
PHP操作MYSQL数据库
- 配置php.ini支持mysql扩展
然后还要把扩展库的路径指定正确
- 然后重启apache
如何确定MYSQL函数可用?
用phpinfo()来查看
看到下面的内容,就证明配置正确
- 写程序连接操作数据库
//先连接数据库(并认证)
Mysql_connect(‘localhost:3306’, ‘root’, ‘123456’);
//根据你的文件编码设置正确的编码,通知数据库
$conn = Mysql_query(“set names gbk”); //彻底搞定乱码!
Mysql_query(‘use itcast’);
Mysql_query(‘show databases’);
//………
$result = Mysql_query(‘select * from t2’);
While($row = Mysql_fetch_assoc($result)) {
Print_r($row);
}
Mysql_close($conn);
SQL语言-----数据操作的更多相关文章
- SQL大数据操作统计
SQL大数据操作统计 1:select count(*) from table的区别SELECT object_name(id) as TableName,indid,rows,rowcnt FROM ...
- ODPS SQL <for 数据操作语言DML>
基本操作: 查询: SELECT [ALL | DISTINCT] select_expr, select_expr, ... FROM table_reference [WHERE where_co ...
- MySQL SQL DML (数据操作语言)
包括 SELECT, UPDATE, DELETE, INSERT SELECT 从数据库表中获取数据 用法 SELECT name FROM students; SELECT name,age FR ...
- 使用SQL实现数据操作
SQL和RDBMS的区别:用SQL操作RDBMS 一.数据的完整性 一个汉字占多少长度与编码有关: UTF-8:一个汉字=3个字节 GBK:一个汉字=2个字节 二.数据库基本操作 1. 登录数据库 首 ...
- SQL语句 - 数据操作
表中数据的变化牵一发而动全身,会同时导致到索引中数据的变化.因此如果查询语句不需要索引,就应该删除无用的索引以提高效率. 一.INSERT语句 1.基本插入语句 insert用于向表中输入数据,其具体 ...
- orcale 之 SQL 语言基础
SQL 全称是结构化查询语句(Structure Query Language),是数据库操作的国际化语言,对所有的数据库产品都要支持. SQL 语言的分类 我们按照其功能可以大致分为四类: 数据定义 ...
- 数据库_8_SQL基本操作——数据操作
SQL基本操作——数据操作 一.新增数据(两种方案) 方案1: 给全表字段插入数据,不需要指定字段列表,要求数据的值出现的顺序必须与表中设计的字段出现的顺序一致,凡是非数值数据,都需要使用引号(建议是 ...
- [SQL]SQL语言入门级教材_SQL数据操作基础(二)
SQL数据操作基础(初级) netnova 于 -- :: 加贴在 数据库探讨: 为了建立交互站点,你需要使用数据库来存储来自访问者的信息.例如,你要建立一个职业介绍服务的站点,你就需要存储诸如个人简 ...
- sql数剧操作语言
结构化查询语言SQL(STRUCTURED QUERY LANGUAGE)是最重要的关系数据库操作语言,并且它的影响已经超出数据库领域, 得到其他领域的重视和采用,如人工智能领域的数据检索,第四代软件 ...
随机推荐
- Java生成二维码--QRGen
最近公司需求需要生成一个二维码 , 由于之前没有接触过 , 故此做个记录 . 在网上找到了不少二维码生成工具,都蛮好用的. 不过要集成二维码生成功能到应用开发中,就要选择最好用成熟的库了,最终决定采用 ...
- mysql之 日志体系(错误日志、查询日志、二进制日志、事务日志、中继日志)
一. mysql错误日志:错误日志记录的事件:a).服务器启动关闭过程中的信息b).服务器运行过程中的错误信息c).事件调试器运行一个事件时间生的信息d).在从服务器上启动从服务器进程时产生的信息lo ...
- canvas动画——粒子系统(1)
这个动画在很早之前就见过,当时就没迷住了.最近在学canavs动画,动手实现了一下.代码在这里.展示效果在这里. 这属于粒子系统的一种,粒子系统就是需要管理一堆粒子嘛,动画实现的关键在于,遍历这些粒子 ...
- 一个想法照进现实-《IT连》创业项目:直觉型面试招聘的漏洞
前言: 创业转眼又过去了一个月,是时候抽时间写写文向大伙继续汇报进度了. 还记得上一篇创业文章,我还在说:创业时该不该用新手程序员. 嗯,然后,然后,报应就来了:所以这篇要写写自己在新人招聘上出现的问 ...
- Java文件流之练习
1 )将"今年是反法西斯胜利70周年,举国欢庆,所以要放假啦" 字符串 使用文件字符输出流 写入到oldhappy.txt文件中,复写10000行, 要求换行 在文件的开头写入当前 ...
- 关于log4.net 错误,求解
1.上结果 能生成文件 ,但是文件中无内容 2.配置文件 <configSections> <section name="log4net" type=" ...
- Cordova各个插件使用介绍系列(六)—$cordovaDevice获取设备的相关信息
详情请看:Cordova各个插件使用介绍系列(六)—$cordovaDevice获取设备的相关信息 在项目中需要获取到当前设备,例如手机的ID,联网状态,等,然后这个Cordova里有这个插件可以用, ...
- loadrunner11的移动端性能测试之脚本录制
以前使用LR11录制过一个app的登录操作,这里记录一下 测试准备 硬件要求 1, 负载测试机一台(内存8G以上,cpu 1.5GHZ以上,存储空间20G以上)或两台以上(控制机和多个负载机). 2 ...
- 原生js二级联动
今天说的这个是原生js的二级联动,在空白页面里动态添加并作出相对应的效果. 1 //创建两个下拉列表 select标签 是下拉列表 var sel = document.createElement(& ...
- arcgis api for js入门开发系列十一地图统计图
上一篇实现了demo的叠加SHP图层,本篇新增地图统计图,截图如下: 地图统计图实现的思路如下:利用拓展arcgis api的js文件(MapChartGraphic.js以及MapChartGrap ...