(1)插入记录:`INSERT INTO tablename(field1,field2,...,fieldn) VALUES(value1,value2,...,valuen)`;
(2)批量插入:`INSERT INTO tablename(field1,field2,...,fieldn)
VALUES
(record1_value1,...,record1_valuen),
(record2_value1,...,record2_valuen)`;
(3)更新记录:`UPDATE tablename SET field1=value1,field2=value2,...,fieldn=valuen[WHERE CONDITION]`;
(4)同时更新多个表中数据:`UPDATE t1,t2,...,tn set t1.field1=expr1,tn.fieldn=exprn [WHERE CONDITION]`;
(5)删除记录:`delete from tablename [where condition]`;
(6)删除多表记录:`delete t1,t2,...,tn from t1,t2,...,tn [where condition]`; 注意:如果from后面的表用别用名,则delete后面也要用相应的别名,否则会提示语法错误。
(7)查询记录:`select * from tablename [where condition]`;
(8)去掉重复:用distinct关键字实现;
(9)排序和限制: order by ,DESC 降序 , ASC 升序 ,limit;
(10)聚合:`select [filed1,field2,...,fieldn] fun_name from tablename [where where_condition] [group by field1,filed2,...,filedn [with rollup]] [having where_condition]`; 说明:fun_name:表示要做的聚合操作(聚合函数),如sum,count(*) ,max,min; group by:表示要进行分类聚合的字段;with rollup:表明是否对分类聚合后的结果进行再汇总; 注意:having 和 where 的区别在于,having 是对聚合后的结果进行条件的过滤,而where是在聚合前就对记录进行过滤。
(11)表连接:当需要同时显示多个表中的字段时,就可以用表连接实现这样的功能。表连接分为内连接和外连接,它们之间最主要的区别是,内连接仅选出两张表中相互匹配的记录,而外连接会选出其他不匹配的记录。外连接又分为左连接和右连接,左连接包含所有的左边表中的记录甚至是右边表中没有和它匹配的记录;右连接包含所有的右边表中的记录甚至是左边表中没有和它匹配的记录。
(12)子查询:某些情况下,当进行查询的时候,需要的条件是另外一个select语句的结果,这个时候,就要用到子查询。用于子查询的关键字包括in,not in,=,!=,exists,not exists;
(13)记录联合:我们经常会碰到这样的应用,将两个表的数据按照一定的查询条件查询出来后,将其结果合并到一起显示出来。语法如下:`select * from t1 union|union all select * from t2 ... union|union all select * from tn `; 注意:union 和 union all 的主要区别是 union all 是把结果集直接合并到一起,而 union 是将 union all 后的结果进行一次distinct,去重后的结果。
1.2.3 DCL语句
DCL语句主要是DBA用来管理系统中的对象权限时使用。简单介绍如下:
(1)创建一个数据库用户z1,具有对sakila 数据库中所有表的select/insert权限:`grant select,insert on sakila.* to 'z1'@'localhost' identified by '123'`;
(2)由于权限变更,需要将z1的权限变更,收回insert,只能对数据进行select操作:`revoke insert on sakila.* from 'z1'@'localhost'`;