查询:
1、考点:查询账号s_01在所有学科的成绩
select id,pin from student where pin='s_01'
select sid,gid,fenshu from student_group where sid=222
select id,name from group where id=333
账号肯定存在,账号-学科关系存在,则分数一定存在,账号-组关系不存在的,就不用显示,则:
根据左连接特性,左边的表的所有列都会列出,sql语句为:
selct XX from A left join B on A.XX=B.XX where XXX;
select s.pin as 学生,g.name as 学科,sg.fenshu as 分数 from student as s left join student_group as sg on s.id=sg.sid left join group as g on sg.gid=g.id where s.pin='s_01'
2、查询分组的数据,比如查询所有学生的总分, 考点:sum函数、max、min、avg、group by
select s.pin as 学生,sum(sg.fenshu) as 分数 from student as s left join student_group as sg on s.id=sg.sid where s.pin in('s_01','s_02') group by s.pin
sum()一般要与group by一起用。
3、select count(distinct A)from XXX,计算总数时,有重复项,将有重复项的A去重,用此语法。
4、select distinct A from XXX,查询结果时,有重复项,将有重复项的A去重,用此语法。
5、having语法:
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value
order by XXX
eg:
SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer
HAVING SUM(OrderPrice)<2000
order by Customer desc
新增:
INSERT INTO 表名称 VALUES (值1, 值2,....)
eg:INSERT INTO Persons VALUES ('Gates', 'Bill', 'Xuanwumen 10', 'Beijing')(Persons表有4个列)
我们也可以指定所要插入数据的列:
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
eg:INSERT INTO Persons (LastName, Address) VALUES ('Wilson', 'Champs-Elysees')
修改:
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
删除:
DELETE FROM 表名称 WHERE 列名称 = 值