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)是最重要的关系数据库操作语言,并且它的影响已经超出数据库领域, 得到其他领域的重视和采用,如人工智能领域的数据检索,第四代软件 ...
随机推荐
- 第 18 章 高可用设计之 MySQL 监控
前言: 一个经过高可用可扩展设计的 MySQL 数据库集群,如果没有一个足够精细足够强大的监控系统,同样可能会让之前在高可用设计方面所做的努力功亏一篑.一个系统,无论如何设计如何维护,都无法完全避免出 ...
- nrm是什么?以及nrm的安装与命令
nrm的作用与安装使用 一.nrm是什么? 这是官方的原话: 开发的npm registry 管理工具 nrm, 能够查看和切换当前使用的registry, 最近NPM经常 down 掉, 这个还是很 ...
- Lambda应用场景和使用实例
Java 8已经推出一段时间了,Lambda是其中最火的主题,不仅仅是因为语法的改变,更重要的是带来了函数式编程的思想.这篇文章主要聊聊Lambda的应用场景及其相关使用示例. Java为何需要Lam ...
- Hibernate与Jpa的关系(1)
[转自:http://freewind.me/blog/20111129/588.html ] 我知道Jpa是一种规范,而Hibernate是它的一种实现.除了Hibernate,还有EclipseL ...
- 基于R语言的梯度推进算法介绍
通常来说,我们可以从两个方面来提高一个预测模型的准确性:完善特征工程(feature engineering)或是直接使用Boosting算法.通过大量数据科学竞赛的试炼,我们可以发现人们更钟爱于Bo ...
- reshape: from long to wide format(转)
This is to continue on the topic of using the melt/cast functions in reshape to convert between long ...
- 【WPF】用三角形网格构建三维图形
虽然WPF只能支持部分三维模型,不过从应用功能开发的角度看,也已经够用了(非游戏开发).WPF 的三维图形,说得简单一点,也就两种而已. 1.把二维对象放到三维空间中,这个应该较为好办,像 Image ...
- javascript痛点之三闭包
先来看看第一节的例子 'use strict'; function num(){ //用var声明一个变量num1 var num1 = 15; } alert(num1);//num1 is not ...
- datagrid 添加、修改、删除(转载)
原链接:JQueryEasyUI学习笔记(十)datagrid 添加.修改.删除 基于datagrid框架的删除.添加与修改: 主要是批量删除,双击表单修改.选中行修改,增加行修改,再有就是扩展edi ...
- 测序分析软件-phred的安装
1.进入phred官网,给作者写信,获得所需的软件,大约需要两三天的时间即可收到回信. 2.根据作者的指示下载,解压相应软件. 3.以笔者本人的安装为例unbuntu系统(phred自带的instal ...