数据库基本操作


参考: 廖雪峰讲解的

查询

基本查询:

SELECT * FROM <表名>

条件查询:

SELECT * FROM <表名> WHERE <条件表达式>
例如:SELECT * FROM students WHERE score >= 80;

投影查询:

SELECT 列1, 列2, 列3 FROM …
例如:SELECT id, score, name FROM students;

排序:

ORDER BY

分页查询:

SELECT id, name, gender, score
FROM students
ORDER BY score DESC
LIMIT 3 OFFSET 0;//从第0行开始查,最多查3行

聚合查询:

SELECT COUNT(*) num FROM students;//使用聚合查询并设置结果集的列名为num:
聚合函数说明
SUM计算某一列的合计值,该列必须为数值类型
AVG计算某一列的平均值,该列必须为数值类型
MAX计算某一列的最大值
MIN计算某一列的最小值
例如:SELECT AVG(score) average FROM students WHERE gender = ‘M’;//使用聚合查询计算男生平均成绩
特别注意:如果聚合查询的WHERE条件没有匹配到任何行,COUNT()会返回0,而SUM()、AVG()、MAX()和MIN()会返回NULL

分组查询:

SELECT COUNT() num FROM students GROUP BY class_id;//按class_id分组:
SELECT class_id, COUNT(
) num FROM students GROUP BY class_id;//按class_id分组,并看出class_id

多表查询:

SELECT * FROM students, classes;//是students表和classes表的“乘积”,即students表的每一行与classes表的每一行都两两拼在一起返回。结果集的列数是students表和classes表的列数之和,行数是students表和classes表的行数之积。

连接查询:

SELECT s.id, s.name, s.class_id, s.gender, s.score FROM students s;
//选出所有学生
SELECT s.id, s.name, s.class_id, c.name class_name, s.gender, s.score
FROM students s
INNER JOIN classes c
ON s.class_id = c.id;
//选出所有学生,同时返回班级名称class_name
注意INNER JOIN查询的写法是:
先确定主表,仍然使用FROM <表1>的语法;
再确定需要连接的表,使用INNER JOIN <表2>的语法;
然后确定连接条件,使用ON <条件…>,这里的条件是s.class_id = c.id,表示students表的class_id列与classes表的id列相同的行需要连接;
可选:加上WHERE子句、ORDER BY等子句。
INNER JOIN只返回同时存在于两张表的行数据,由于students表的class_id包含1,2,3,classes表的id包含1,2,3,4,所以,INNER JOIN根据条件s.class_id = c.id返回的结果集仅包含1,2,3。
RIGHT OUTER JOIN返回右表都存在的行。如果某一行仅在右表存在,那么结果集就会以NULL填充剩下的字段。
LEFT OUTER JOIN则返回左表都存在的行。
**FULL OUTER JOIN,**它会把两张表的所有记录全部选择出来,并且,自动把对方不存在的列填充为NULL

修改数据

INSERT:

INSERT INTO <表名> (字段1, 字段2, …) VALUES (值1, 值2, …);
例如
INSERT INTO students (class_id, name, gender, score) VALUES (2, ‘大牛’, ‘M’, 80);
INSERT INTO students (class_id, name, gender, score) VALUES
(1, ‘大宝’, ‘M’, 87),
(2, ‘二宝’, ‘M’, 81);
//一次添加多条

UPDATA:

UPDATE <表名> SET 字段1=值1, 字段2=值2, … WHERE …;
例如:UPDATE students SET name=‘大牛’, score=66 WHERE id=1
//更新id=1的记录
UPDATE students SET name=‘小牛’, score=77 WHERE id>=5 AND id<=7;
//更新id=5,6,7的记录
注意:UPDATE语句可以没有WHERE条件,整个表被更新

DELETE:

DELETE FROM <表名> WHERE …;
例如:DELETE FROM students WHERE id=1;//删除id=1的记录
注意:不带WHERE条件的DELETE语句会删除整个表的数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值