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)是最重要的关系数据库操作语言,并且它的影响已经超出数据库领域, 得到其他领域的重视和采用,如人工智能领域的数据检索,第四代软件 ...
随机推荐
- vmvare虚拟机经验
关于网络连接:如果宿主机网络类型:如果是无线网络网络适配器选择桥接模式:如果是物理网线选择NAT模式: 关于刚装完系统apt-get update出现could not lock /var/lib/l ...
- 010一对一 主键关联映射_双向(one-to-one)
² 两个对象之间是一对一的关系,如Person-IdCard(人—身份证号) ² 有两种策略可以实现一对一的关联映射 主键关联:即让两个对象具有相同的主键值,以表明它们之间的一一对应的关系:数据库 ...
- struts2.1.6教程六、使用标签
1.基础表单标签 准备工作:建立struts2tag项目,搭建好struts2的开发环境.在html我们常用的基础表单标签主要有文本域.密码域.提交.重置四种.它们在strust2中可以通过标签来生成 ...
- PATH menu
先上效果图 主界面布局文件 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" ...
- PC端网页的基本构成
首先,一个前端最基本的就是排网页,有人会看不起拍页面,认为不就是排一个页面嘛,有啥的,分分钟的事,可是他不知道的是,一个网页中也包含了很多内容,像我们如果不理解margin,padding,会经常对我 ...
- Mac下配置Nginx负载均衡
1.首先在Mac下安装Nginx(可参考我的另一篇随笔http://www.cnblogs.com/malcolmfeng/p/6896703.html). 2.安装Tomcat,下载后,解压,bin ...
- Django学习报错记录
1. 运行manage.py任务 makemigrations时,报错: doesn't declare an explicit app_label and isn't in an applicat ...
- Oracle CDC简介及异步在线日志CDC部署示例
摘要 最近由于工作需要,花时间研究了一下Oracle CDC功能和LogMiner工具,希望能找到一种稳定.高效的技术来实现Oracle增量数据抽取功能.以下是个人的部分学习总结和部署实践. 1. O ...
- oracle配置odbc数据源
今天配置oracle数据源心得: 1.需安装oracle客户端,若校验报错,将杀毒软件全部退出之后再重新安装: 2.安装完成后,运行odbcad32(64位),在odbc界面可找到相应驱动: 3.客户 ...
- Java之进程与线程练习
1.设计一个线程类:创建3个子线程,每个线程分别打印数字,分别睡眠100,200,300ms ->每个执行都是20次 代码: package Homework; //1.设计一个线程类:创建3个 ...