1.插入一条记录
语法:INSERT INTO tbname (field1,field2...fieldn)VALUES(value1,value2...valuen);
也可以不用指定字段名,但是values后面的顺序应该和字段的排列顺序一致;
可空字段,或有默认值的字段,自增字段,可以不写对应的value值,会默认取NULL,或者默认值,自增的下一个数字。
如下图,增加了一条空记录:
2.插入多条记录
语法:
INSERT INTO tbname (field1,field2...fieldn)VALUES
(record1_value1,record1_value2...record1_valuen),
(record2_value1,record2_value2...record2_valuen)
...
(recordn_value1,recordn_value2...recordn_valuen);
更新记录
语法1:UPDATE tbname SET field1=expr1,field2=expr2...fieldn=exprn [WHERE condition]
语法2:UPDATE t1,t2...tn SET t1.field1=expr1,tn.fieldn=exprn [WHERE condition]
注意:1.如果不加where条件,将会把表的所有记录修改;
2.如果表名用别名,则后面也要用相应的别名,否则会提示语法错误;
删除记录
语法1:DELETE FROM tbname [WHERE condition];
语法2:DELETE t1,t2...tn FROM t1,t2...tn [WHERE condition];
查询记录
语法:SELECT * FROM tbname [WHERE condition];查询去重时,使用distinct关键字来实现;
排序时,用关键字 order by 来实现,DESC表示降序,ASC表示升序;order by后面可以跟多个不同的排序字段,作为第二、第三排序依据;
如果只想取部分结果显示时,可以用limit关键字来实现;
聚合查询
语法:
SELECT [field1,field2,...fieldn] fun_name
FROM tbname
[WHERE condition]
[GROUP BY field1,field2,...fieldn [WITH ROLLUP]]
[HAVING where condition]fun_name:聚合函数,常用 的有sum(),count(),max(),min();
group by:表示要进行分类聚合的字段;
with rollup:可选语法,表示是否对分类聚合后的结果进行再汇总;
having:表示对分类后的结果再进行条件的过滤。having与where的区别在于,having是对聚合后的结果进行条件的过滤,而where是在聚合前就对记录进行过滤;
表连接-内连接
从大类上分,表连接分为内连接和外连接,它们之间的主要区别是:内连接仅选出两张表中互相匹配的记录,而外连接会选出其他不匹配的记录,常用的是内连接。
内连接(INNER JOIN)语法:
SELECT *
FROM tbname1
INNER JOIN tbname2 ON tbname1.column=tbname2.column
与内连接等价效果
表连接-外连接
外连接分为左连接和右连接:
左连接:包含所有的左边表中的记录甚至是右边表中没有和它匹配的记录;
右连接:包含所有的右边表中的记录甚至是左边表中没有和它匹配的记录;
左连接
右连接
子查询
当进行查询的时候,需要的条件是另一个select语句的结果,这时候,就要用到子查询,用于子查询的关键字主要包括in,not in,=,!=,exists,not exists等。