增加操作:insert into
一条 insert into 语句可以插入多条记录
insert into insert_student values (11,‘Jet Lee‘,‘male‘,23), (34,‘Buruce Lee‘,male‘,23), (44,‘Jacky Chen‘,‘male‘,25), (45,‘crystal‘,‘famale‘,26);
insert into 支持判断主键(唯一)是否冲突,从而执行更新
insert into inert_student values (44,‘Dragon girl‘,‘female‘,23);
insert into 表名 (字段列表) values (值列表) on duplicate key update 字段=值,字段=值;
insert into insert_student values(44,‘Dragon girl‘,‘female‘,23) on duplicate key update stu_name=‘Dragon girl‘,gender=‘female‘,class_id=23;
注意:update后面没有 set !
insert into 表名 select 语句
insert into insert_student select * from foreign_student;
//插入与表 foreign_student 一样的全部数据
insert into insert_student select null,sut_name,gender,class_id from foreign_student;
//从表 foreign_student 复制部分字段数据
注意:并不是一定要字段数一致才可以完成操作,只要是字段数量与字段类型一致就可以完成插入!
查询 select 的用法:
基本的查询语句的结构:
select 字段表达式列表 [from 子句] [where 子句] [group by 子句] [order by 子句] [limit 子句];
字段表达式:
1:如果为字段名,那么字段名就是一个变量的概念,可以参与运算
select md5(class_id) from insert_student;
因此,可以利用各种运算符,来形成sql中的表达式!
可以是一个列表:
每一个表达式,都可以有一个别名:
select 结果内以表达式本身来命名的!
但是有两个典型的问题:
1:表达式直接做名字不容易识别
2:如果名字冲突,不能区分
select 1+1 as a, now() as b,abs(-10) as c,1+1 as d;
as 关键字可以省略,但不建议省略!
from子句:
表示查询的来源,就是表!
可以写表名列表,使用逗号分割!
select * from select_student,select_class;
如果此时没有条件,相当于形成了一个笛卡尔积!
笛卡尔积:A集合的每个元素,都与B集合的每个元素之间有个关联!
A表记录所有记录,都与B表的所有记录之间存在关联!
此时结果中会将所有的字段都列出来,包括重名的(如上图中的 id 字段)
可以为相应的字段名起别名:
此时访问到某个字段需要使用 表名.字段名的形式!
select select_student.id as s_id,select_class.* from select_student, select_class;
select select_student.id as s_id,stu_name,gender,class_id,select_class.*from select_student,select_class;
如查多次出现 表名.字段名的情况,可以为表名起别名!
dual的问题:
虚拟表名问题,使语法更加规范而已!
where子句,查询条件子句
where 条件表达式
where找到每条记录并依次执行条件表达式,根据条件结果返回数据!
形成条件表达式的基本要素:数据,(变量),运算符,函数调用!
典型的运算符:
关系:>,<,=,>=,<=,<>,!=
关系运算符 like: 模糊查询
not like : like取反
between 3 and 5 : 在3与5之间 (包含3与5)
in / not in : 在/不在 某个集合之内(有限的元素在一起叫集合)
留心:在做批量操作时,in / not in 的出镜率很高!
null值的判断:不能使用普通的运算符,因为运算的结果都是null,而且不能作为运算条件!
应该使用 is null 或者 is not null 来判断!
函数 isnull() 也可以完成判断
select * from select_student where isnull(class_id);
Mysql数据操作语言DML(data management language)
原文地址:http://ginvip.blog.51cto.com/8092345/1717907