数据库 CURD

操作表记录CRUD

1、insert 增加数据

使用insert语句向表中插入顾客的信息
insert into customer (id,name,gender,birthday,entry_date,job)values (null,'小明','男','1265-2-03','老板');
insert into customer values (null,'小红',女,'1238-03-03','学生');

2、select 查询语句

select * from  customer;
select name as '姓名',gender from  customer;
查询表中所有学生的信息。
        select * from exam;
查询表中所有学生的姓名和对应的英语成绩。
        select name,english from exam;
过滤表中重复数据
        select distinct english from exam;
在所有学生分数上加10分特长分显示。
        select name , math+10,english+10,chinese+10 from exam;
统计每个学生的总分。
        select name ,english+math+chinese from exam;
使用别名表示学生总分。
        select name as 姓名 ,english+math+chinese as 总成绩 from exam;
        select name 姓名 ,english+math+chinese 总成绩 from exam;
        select name english from exam;
使用where子句进行过滤查询
查询姓名为小明的学生成绩
        select * from exam where name='小明';
查询英语成绩大于90分的同学
        select * from exam where english > 90;
查询总分大于230分的所有同学
        select name 姓名,math+english+chinese 总分 from exam where math+english+chinese>230;
查询英语分数在 80100之间的同学。
        select * from exam where english between 80 and 100;
查询数学分数为75,76,77的同学。
        select * from exam where math in(75,76,77);
查询所有姓王的学生成绩。
        select * from exam where name like '王%';
        select * from exam where name like '王__';
查询数学分>70,语文分>80的同学。
        select * from exam where math>70 and chinese>80;
使用order by关键字对查询结果进行排序操作
asc 升序 -- 默认就是升序  desc 降序
对语文成绩排序后输出。
        select name,chinese from exam order by chinese desc;
对总分排序按从高到低的顺序输出
        select name 姓名,chinese+math+english 总成绩 from exam order by 总成绩 desc;
对姓王的学生成绩排序输出
        select name 姓名,chinese+math+english 总成绩 from exam where name like '王%' order by 总成绩 desc;
%代表匹配任意的多个字符
        select * from customer where user_name like '王%' or user_name like '_王%' or user_name like '%王';
聚合函数

um() max() min() avg() count()

    select avg(id) from customer where id >7 ;
    select sum(id)/count(id) as '均值' from customer where id >7 ;
    select count(id) from customer where id >7 ;

1、Count -- 用来统计符合条件的行的个数
统计一个班级共有多少学生?
        select count(*) from exam;
统计数学成绩大于90的学生有多少个?
        select count(*) from exam where math>70;
统计总分大于230的人数有多少?
        select count(*)from exam where math+english+chinese > 230;
2、SUM -- 用来将符合条件的记录的指定列进行求和操作
统计一个班级数学总成绩?
        select sum(math) from exam;
统计一个班级语文、英语、数学各科的总成绩
        select sum(math),sum(english),sum(chinese) from exam;
统计一个班级语文、英语、数学的成绩总和
        select sum(ifnull(chinese,0)+ifnull(english,0)+ifnull(math,0)) from exam;
3、AVG -- 用来计算符合条件的记录的指定列的值的平均值
求一个班级数学平均分?
        select avg(math) from exam;
求一个班级总分平均分?
        select avg(ifnull(chinese,0)+ifnull(english,0)+ifnull(math,0)) from exam;
4MAX/MIN -- 用来获取符合条件的所有记录指定列的最大值和最小值
求班级最高分和最低分
        select max(ifnull(chinese,0)+ifnull(english,0)+ifnull(math,0)) from exam;
        select min(ifnull(chinese,0)+ifnull(english,0)+ifnull(math,0)) from exam;
5、分组查询
对订单表中商品归类后,显示每一类商品的总价
        select product,sum(price) from orders group by product;
询购买了几类商品,并且每类总价大于100的商品
        select product 商品名,sum(price)商品总价 from orders group by product having sum(price)>100;
where子句和having子句的区别:
    where子句在分组之前进行过滤having子句在分组之后进行过滤
    having子句中可以使用聚合函数,where子句中不能使用
    很多情况下使用where子句的地方可以使用having子句进行替代
查询单价小于100而总价大于150的商品的名称
        select product from orders where price<100 group by product having sum(price)>150;          

sql语句书写顺序: 
        select from where groupby having orderby
sql语句执行顺序:
        from where select group by having order by 
备份恢复数据库
备份: 在cmd窗口下 mysqldump -u root -p dbName>c:/1.sql
恢复: 方式1:在cmd窗口下 mysql -u root -p dbName<c:/1.sql
      方式2:在mysql命令下, source c:/1.sql
要注意恢复数据只能恢复数据本身,数据库没法恢复,需要先自己创建出数据后才能进行恢复.

你可能感兴趣的:(MySQL)