MySQL(3)-----DML数据库操作(上)

1. DML语句

DML:数据库操作语言。

操作对象:数据库中表记录(行),

关键字:insert(插入)、update(修改/更新)、delete(删除)和select(查询)

1.1 插入记录

格式1insert into 表名values (字段值1,字段值2,...,字段值n);

语法:->INSERT INTO tablename(field1,field2...fieldn) VALUES(value1,value2...valuen);

例如:->insert into r720 values (1,‘tom’);

->insert into r720 values (2,‘tom’);

注意:

默认插入全部字段/列

必须保证values后面的内容的类型和顺序表结构中的字段顺序一致;

若字段类型为数字,可以省略引号

格式2insert into 表名(字段1,字段2,....,字段n) values (字段值1,字段值2,...,字段值n);

语法:->INSERT INTO tablename(field1,field2...fieldn) VALUES(value1,value2...valuen);

注意:

插入指定字段;

必须保证values后面的内容的类型和顺序表结构中的字段类型和顺序一致;

例如:->insert into r720('id','cpu',) values (12,50);

 

1.2 修改记录

修改单个表中的数据:

格式:update 表名 set 字段名1=字段值1[where 条件];

语法:mysql>UPDATE tablename SET field1=value1 [WHERE CONDITION]

如:mysql>update t_user set sal=400 where t_user='lisa';

 

可以同时修改多个表中的数据:

语法:mysql>UPDATE t1,t2,....tn SET t1.field1=value1,t2.field2=value2,..,tn.fieldn=valuen[WHERE CONDITION]

如:mysql>update emp a, dept b set a.sal=a.sal*b.deptno,b.deptname=a.ename where a.deptno=b.deptno;

 

1.3 删除记录

格式:delete from 表名 [where 条件]

语法:mysql>delete from tablename [WHERE CONDITION]

如:mysql>delete from emp where ename='dony';

注:不管是单表还是多表,不加where条件将会把表的所有记录删除。

1.4 查询记录

语法:mysql>SELECT * FROM tablename[WHERE CONDITION]

如:mysql>select * from r720;---------mysql>select * from r720 where id<10 and cpu=45;

(1)查询不重复记录

有需要将表中的记录去掉重复后显示出来,可以用dinstinct关键字来实现

mysql> select ename hiredate,sal,id from emp;

mysql> select dintinct id from emp

(2)条件查询

在多数情况下,我们并不需要查询所有的记录,只是需要根据条件来查询一部分数据,用where关键字来实现这样的操作

如:查询temperature为20的记录

where后面的条件是一个字段的=比较,出了=之外,还可以使用>、<、>=、<=、!=等比较运算符;多个条件之间还可以使用or、and等逻辑运算符进行多条件联合查询。

如:使用多字段条件查询

(3)排序和限制

去除某个字段进行排序后的记录结果集,用关键字ORDER BY来实现,语法如下:

mysql>SELECT * FROM tablename [WHERE CONDITION] [ORDER BY field1[DESC\ASC],field2[DESC\ASC],....,fieldn[DESC\ASC]]

【注】DESC和ASC是排序顺序关键字,DESC表示按照字段进行降序排列,ASC表示升序表示,如果不写此关键字默认是升序排列。ORDER BY后面可以跟不同的排序顺序,并且每个排序字段可以有不同的顺序。

如:把r720表内cpu的记录按照从高到低顺序进行显示:

对于CPU中字段相同的记录,如果要按照traffic由高到低排序,如下:

【注】对于排序后的记录,如果希望只显示一部分,而不是全部,此时可以使用LIMIT关键字来实现,LIMIT的语法如下: mysql>SELECT....[LIMIT offset_start,row_count]

其中,offset_set表示记录的起始偏移量,row_count表示显示的行数。在默认情况下,只需要记录行数即可,此时,实时显示的就是排序后的前n条记录。如下示例:

【注】如果要显示表按照某字段后的第二条记录开始的3条记录。limit常和order by配合使用来进行记录的分页显示。

(4)聚合

在多数情况下,我们有时需要进行一个汇总操作,比如统计公司人数或者统计每个部门人数,用到SQL的聚合操作。聚合操作的语法如下:

mysql>

SELECT[field1,field2,...,fieldn]fun_name

FROM tablename

[WHERE where_contition]

[GROUP BY field1,field2,...,fieldn

[WITH ROLLUP]]

[HAVING where_contition]

参数说明:

fun_name表示要做的聚合操作,也就是聚合函数,常用的有sum(求和)、count(*)(记录数)、max(最大值)、min(最小值)。

GROUP BY关键字表示要进行分类聚合的字段,比如要按照部门分类统计员工数量,部门就应该写在group by后面。

WITH ROLLUP是可选语法,表明是否对分类聚合后的结果进行再汇总。

HAVING关键字表示对分类后的结果再进行条件的过滤。【先分类在过滤】

【注】having和where的区别在于:having是对聚合后的结果记性条件的过滤,而where是在聚合前就对记录进行过滤,如果逻辑允许,我们尽可能用where先过滤记录,这样因为结果集减小,将对聚合的效率大大提高,最后再根据逻辑看是否用having进行再过滤。

如:要在表r720总统计记录条数,共17条记录。

mysql>select count(1) from r720;

在此基础上,要统计各个字段的记录条数

mysql>select cpu,count(1) from r720 group by cpu;

更细一些,即要统计CPU记录数,又要统计总记录数

mysql>select cpu,count(1) from r720 group by cpu with rollup;

统计CPU中数值小于55的记录

mysql>selec cpu,count(1) from r720 group by cpu having count(1)<55;

最后统计r720中所有字段的记录总额、最高和最低。

mysql>select * from r720;

mysql>select sum(cpu),max(cpu),min(cpu) from r720;


人的一生中,最光辉的一天并非是功成名就那天,而是从悲叹与绝望中产生对人生的挑战,以勇敢迈向意志那天。愿你就像早晨八九点钟的太阳,活力十足,永远年轻。

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洒家肉山大魔王

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值