Mysql Sql使用二:数据操作(单表)

  • SQL-数据的操纵CRUD
    • 添加数据
    • 修改数据
    • 删除数据
    • 查询语句
      • 查询的列可以运算
      • 使用where条件过滤
      • 常用符号
      • 排序
      • 聚集函数
        • count 获取数量
        • sum 求和忽略null值 可以同ifnullxxx0
        • avg 平均数
        • max 最大值
        • min 最小值
        • group by 分组一起使用 条件过滤需要是having不能使用where
    • 总结

SQL-数据的操纵(CRUD)

添加数据

  • insert into 表名 (字段1,字段2,字段3..) values(值1,值2,值3…); 有几列就插入多少的值。
  • insert into 表名 values(值1,值2,值3…);插入所有的列
    注意:
    数据与字段的类型相同。
    字段长度需要控制。
    字符串或者日期类型需要使用”
    例:
insert into user values (1,'xiaofeng','1994-10-10','2011-1-1','HR',19000,'aaa','abc');
insert into user values (2,'美美','1994-10-10','2011-1-1','HR',19000,'aaa','abc');
insert into user values (3,'小风','1994-10-10','2011-1-1','WORKER',21000,'aaa','abc');
insert into user values (4,'芙蓉','1994-10-10','2011-1-1','HR',1000,'aaa','abc');
insert into user values (5,'班长','1994-10-10','2011-1-1','HR',100,'aaa','abc');

修改数据

  • update 表名 set 字段=值,字段=值… [where ]
    如果没有where条件,默认更新所有的记录。
    有where提交,选择某一条记录。

例:
将所有员工薪水修改为5000元。

update user set salary=5000;

将姓名为’班长’的员工薪水修改为3000元。

update user set salary=3000 where username='班长';

将姓名为’美美’的员工薪水修改为4000元,job改为BOSS。

update user set salary=4000,job='BOSS' where username='美美';

将班长的薪水在原有基础上增加1000元。

update user set salary = salary+1000 where username='班长';

删除数据

delete from 表名 [where ]; 删除数据
truncate 表名; 删除所有的数据
truncate 和 delete的区别:
- truncate删除数据,先删除整个表。再创建一个新的空的表。(效率)
- delete删除数据,一条一条删除的。
例:
删除表中名称为’班长’的记录。

delete from user where username='班长';

删除表中所有记录。

delete from user;

使用truncate删除表中记录。

truncate user;

查询语句

select * from 表名; 查询所有(字段)
select 字段名1,字段名2,字段名3 from 表名; 显示查询字段名
select DISTINCT 字段名 from 表名; 去除重复的数据。
例:
查询表中所有学生的信息。

select * from stu;

查询表中所有学生的姓名和对应的英语成绩。

select name,english from stu;

过滤表中重复数据。

select distinct english from stu;

查询的列可以运算

  • 可以使用别名:使用as 别名 并且as可以省略。

例:
在所有学生分数上加10分特长分。

select name,math+10,english+10,chinese+10 from stu;

统计每个学生的总分。

select name,math+english+chinese from stu;

使用别名表示学生分数。

select name,(math+english+chinese) as sum from stu;

使用where条件过滤

例:
查询姓名为班长的学生成绩

select * from stu where name='班长';

查询英语成绩大于90分的同学

select name,english from stu where english < 15;

查询总分大于200分的所有同学

select name,math+english+chinese from stu where (math+english+chinese) > 200;

常用符号

< <= >= = <>(不等于)
in(范围内取内容)
like – 模糊查询 写法:like ‘张或者%’; 和%区别:占位符。_只一个%可以有多个
%的写法 like ‘%张’; 结果XXX张
like ‘张%’; 结果张XXX
like ‘%张%’; 只要有张就行
is null – 判断是否为null
and – 并且
or – 或者
not – 不成立
例:
查询英语分数在 80-90之间的同学。

select * from stu where english >80 and english <90;
select * from stu where english between 80 and 90;

查询数学分数为18,78,46的同学。(in)

select * from stu where math in(18,78,46);

查询所有姓班的学生成绩。

select * from stu where name like '班%';

查询数学分>80,语文分>80的同学。

select * from stu where math >80 or chinese > 80;

排序

使用order by 升序默认的(asc)/降序(desc)
出现select的语句末尾。
例:
对数学成绩排序后输出。

select name,math from stu order by math;

对总分排序按从高到低的顺序输出

select name,math+english+chinese from stu order by (math+english+chinese) desc;

对学生成绩按照英语进行降序排序,英语相同学员按照数学降序

select * from stu order by english desc,math desc;

对姓美的学生成绩排序输出

select * from stu where name like '美%' order by english desc;

聚集函数

count 获取数量

例:
统计一个班级共有多少学生?

select count(*) from stu;

统计数学成绩大于90的学生有多少个?

select count(*) from stu where math > 90;

统计总分大于150的人数有多少?

select count(*) from stu where (math+english+chinese) > 150;

sum 求和(忽略null值) 可以同ifnull(xxx,0)

例:
统计一个班级数学总成绩?

select sum(math) from stu;

统计一个班级语文、英语、数学各科的总成绩

select sum(math),sum(english),sum(chinese) from stu;

统计一个班级语文、英语、数学的成绩总和

select sum(ifnull(math,0)+english+chinese) from stu;
select sum(math)+sum(english)+sum(chinese) from stu;

统计一个班级语文成绩平均分

select sum(chinese) / count(*) from stu;

avg 平均数

例:
求一个班级数学平均分?

select avg(math) from stu;

求一个班级总分平均分

select avg(ifnull(math,0)+english+chinese) from stu;

max 最大值

min 最小值

group by 分组(一起使用) 条件过滤需要是having,不能使用where

例:
对订单表中商品归类后,显示每一类商品的总价.

select product,count(*),sum(price) from orders group by product;

查询购买了几类商品,并且每类总价大于100的商品

select product,sum(price) from orders group by product having sum(price) > 100;

总结

select 语句 : select … from … where … group by… having… order by … ;
顺序不能改变

你可能感兴趣的:(sql,mysql)