标准格式
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 表名;
区别:
字符集和校对规则
字符集:一套符号和字符编码的集合。
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操作MYSQL数据库
然后还要把扩展库的路径指定正确
如何确定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语言-----数据操作
标签:继承 select 原因 char 证明 res 行数据 close 语言
小编还为您整理了以下内容,可能对您也有帮助:
搜集SQL常用的操作语句
结构化查询语言(Structured Query Language)简称SQL(发音:/ˈes kjuː ˈel/ "S-Q-L"),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
一、插入(复制)表数据
1、INSERT INTO 语句:
(1)插入新的一行数
[sql] view plain copy;
INSERT INTO Persons VALUES ('Gates', 'Bill', 'Xuanwumen 10', 'Beijing');
(2)在指定的列中插入数据
[sql] view plain copy;
INSERT INTO Persons (LastName, Address) VALUES ('Wilson', 'Champs-Elysees');
2、SQL SELECT INTO 语句可用于创建表的备份复件
(1)在建表时复制所有数据
[sql] view plain copy;
create table userinfo_new as select * from userinfo;
(2)在建表时复制部分数据
[sql] view plain copy;
create table userinfo_new1 as select id,username from userinfo;
(3)在添加时复制所有数据
[sql] view plain copy;
insert into userinfo_new select * from userinfo;
(4)在添加时复制部分数据
[sql] view plain copy;
insert into userinfo_new(id,username) select id,username from userinfo;
二、修改表数据
Update 语句
(1)无条件更新
[sql] view plain copy;
update userinfo set userpwd='111',email='111@126.com';
(2)有条件更新
[sql] view plain copy;
update userinfo set userpwd='123456' where username='xxx';
三、删除表数据
1、DELETE 语句
(1)无条件删除
[sql] view plain copy;
dalete from userinfo;
(2)有条件删除
[sql] view plain copy;
delete from userinfo where username='yyy';
四、查询表数据
1、SELECT 语句:
(1)查询所有字段
[sql] view plain copy;
select * from users;
(2)查询指定字段
[sql] view plain copy;
select username,salary from users;
2、SELECT DISTINCT 语句
从 Company" 列中仅选取唯一不同的值,需要使用 SELECT DISTINCT 语句:
[sql] view plain copy;
SELECT DISTINCT Company FROM Orders;
SQL语言的数据操纵动词是 A.select B.drop C.insert D.grant
A,C
SQL语言的数据操纵动词 ,主要包括select、insert、delete和update。
语言特点:
1,SQL风格统一
SQL可以完成数据库生命周期中的全部活动,包括定义关系模式、录入数据、建立数据库、査询、更新、维护、数据库重构、数据库安全性控制等一系列操作,这就为数据库应用系统开发提供了良好的环境,在数据库投入运行后,还可根据需要随时逐步修改模式,且不影响数据库的运行,从而使系统具有良好的可扩充性。
2,高度非过程化
非关系数据模型的数据操纵语言是面向过程的语言,用其完成用户请求时,必须指定存取路径。而用SQL进行数据操作,用户只需提出“做什么”,而不必指明“怎么做”,因此用户无须了解存取路径,存取路径的选择以及SQL语句的操作过程由系统自动完成。这不但大大减轻了用户负担,而且有利于提高数据性。
扩展资料:
SQL既是自含式语言,又是嵌入式语言。作为自含式语言,它能够地用于联机交互的使用方式,用户可以在终端键盘上直接输入SQL命令对数据库进行操作。作为嵌入式语言,SQL语句能够嵌入到高级语言(如C、 C#、JAVA)程序中,供程序员设计程序时使用。
而在两种不同的使用方式下,SQL的语法结构基本上是一致的。这种以统一的语法结构提供两种不同的操作方式,为用户提供了极大的灵活性与方便性
参考资料来源:百度百科-SQL语言
sql语言包含哪些部分
sql语言包含:数据查询语言,数据操作语言,事务处理语言,数据控制语言,数据定义语言以及指针控制语言
1、数据查询语言(DQL)
其语句,也称为"数据检索语句",用以从表中获得数据,确定数据怎样在应用程序给出。保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDER BY ,GROUP BY和HAVING。这些DQL保留字常与其他类型的SQL语句一起使用。
2、数据操作语言(DML)
其语句包括INSERT,UPDATE和DELETE。分别用于添加,修改和删除表中的记录。也称为动作查询语言。
3、事务处理语言(TPL)
它的语句能够确保被DML语句影响的表的所有行及时得以更新。TPL语句包括BEGIN TRANSACTION,COMMIT和ROLLBACK。
4、数据控制语言(DCL)
它的语句通过GRANT或REVOKE获得许可,确定单个用户和用户组对数据库对象的访问。某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。
5、数据定义语言(DDL)
其语句包括动词CREATE和DROP、ALTER。在数据库中创建新表或删除表(CREATE TABLE 或DROP TABLE或 ALTER TABLE);对表的结构进行操作,为表加入索引。
6、指针控制语言(CCL)
它的语句,像DECLARE CURSOR, FETCH INTO 和UPDATE WHERE CURRENT用于对一个或多个表单独行(记录)的操作。
SQL语言集数据查询、数据操纵、数据定义和数据控制功能于一体,其中,CREATE、DROP、ALTER语句是实现哪种功
其中 CREATE 、DROP 和 ALTER 是实现数据定义功能的语句。
SQL语言集主要由数据定义、数据查询、数据操纵、数据控制四部分组成。
1、数据定义语言用于定义数据的结构,比如创建、修改或者删除数据库对象,相应的语句是CREATE、ALTER 和 DROP;
2、数据查询语言用于检索,检索数据使用 SELECT 语句;
3、数据操纵语言用于修改数据,修改数据包括插入、更新和删除,对应的语句是 INSERT、UPDATE 和 DELETE;
4、数据控制语言用于定义数据库用户的权限,其中授予权限使用 GRANT 语句,收回权限使用 REVOKE 语句等等。
扩展资料
结构化查询语言 SQL 四个组成部分的详细介绍:
1、数据定义语言(DDL)
数据定义语言 (Data Definition Language,DDL)是SQL语言集中负责数据结构定义与数据库对象定义的语言。
用于定义数据库的结构,包括外模式、概念模式、内模式及其相互之间的映像,定义数据的完整性、安全控制等约束。DDL不需要commit。
2、数据操作语言(DML)
数据操纵语言DML(Data Manipulation Language),用户通过它可以实现对数据库的基本操作。由DBMS提供,用于让用户或程序员使用,实现对数据库中数据的操作。
DML分成交互型DML和嵌入型DML两类。依据语言的级别,DML又可分成过程性DML和非过程性DML两种。DML需要commit。
3、数据查询语言(DQL)
数据查询语言DQL(Data Query Language),主要包括数据表记录的查询。
4、数据控制语言(DCL)
数据控制语言(Data Control Language)是用来设置或者更改数据库用户或角色权限的语句,包括对基本表和视图的授权,完整性规则的描述,事务控制等内容。
参考资料来源:百度百科-结构化查询语言