Sql语句基础要点总结


一、添加

    向stu表中添加一条学生信息
INSERT INTO stu VALUES(1008,'zhangsna12',12,'jining','123232465');

    另一种方式
INSERT INTO stu(stuid,name,age,tel,address) VALUES(1002,'lisi',13,'31315313','jining');-- 建议用这种

INSERT INTO stu(name,age,tel,address) VALUES('1',13,'31315313','jining'),-- 建议用这种
('2',13,'31315313','jining');

二、修改

SELECT * from stu;

一定要加where条件,修改多个列用逗号隔开

UPDATE stu SET name = '李文英',address='山东' WHERE stuid=1001;

三、删除

DELETE FROM stu WHERE stuid=1008;

四、单表查询
1.简单查询

-- 1.查询所有学生信息
SELECT *FROM student;
-- 1.查询学生信息,显示学生姓名,电话,性别
SELECT name,phone,sex FROM student;-- name为关键字,所以要加引号区分
-- 3.查询哪些班级有学生,显示班级编号(去重:DISTINCT)
SELECT DISTINCT cid FROM student;
-- 4.使用算术运算符,as关键字用于重新命名,可加可不加
SELECT socre as 加分前的成绩, socre+10 加分后的成绩 FROM score;

练习1

-- 1.查询所有员工信息
SELECT *FROM employee;
-- 1.查询所有员工的姓名及对应工资
SELECT ename,salary FROM employee;
-- 3.过滤员工表中的重复数据
SELECT DISTINCT *FROM employee;
-- 4.查询出每位员工的工资,并加一
SELECT salary , salary + 1 FROM employee;
-- 5.使用别名表示姓名,职位,电话,工资
SELECT ename 姓名,phone 电话,salary 工资 FROM employee;

2.WHERE

-- 1.查询学号为4的学生信息
SELECT * FROM student WHERE stuid=4;
-- 2.查询考试成绩满足给定条件的学生学号,分数
SELECT stuid,socre FROM score WHERE socre>=60 AND socre<=80;
SELECT stuid,socre FROM score WHERE socre BETWEEN 60 AND 80;
SELECT stuid,socre FROM score WHERE socre=69 OR socre=79;
SELECT stuid,socre FROM score WHERE socre in(69,79);

3.NOT 非

% 代表多个字符

SELECT stuid,socre FROM score WHERE socre NOT BETWEEN 60 AND 80;

4.LIKE 像

SELECT * FROM student WHERE name LIKE '张%';
SELECT * FROM student WHERE name LIKE '%三';
SELECT * FROM student WHERE name LIKE '%m%';

_代表单个字符

SELECT * FROM student WHERE name LIKE '张_';
SELECT * FROM student WHERE name LIKE '张__';

5.is NULL

SELECT * FROM score WHERE socre IS NULL;
SELECT * FROM score WHERE socre IS NOT NULL;

练习2

SELECT * FROM employee WHERE salary>=5000;
SELECT * FROM employee WHERE salary>=3000 AND salary<=5000;
SELECT * FROM employee WHERE salary in (5000,3000,8000);
SELECT * FROM employee WHERE hiredate BETWEEN '2016-02-01' AND '2016-03-01';
SELECT * FROM employee WHERE manager is NULL;
SELECT ename,job,phone FROM employee WHERE ename LIKE '王%';

6. 聚合函数

    avg():求平均值
-- 求 score 成绩表中科目编号为1的所有学生平均成绩
SELECT AVG(socre) 平均成绩 FROM score WHERE subid=1;

    COUNT():求多少条记录
-- 用*表示所有列
SELECT COUNT(*) FROM score WHERE subid=1;

    SUM():求和
-- 求score成绩表中所有学生成绩的总和
SELECT SUM(socre) FROM score;

    MAX()和 MIN():求最值
SELECT MAX(socre) 最高分,MIN(socre)最低分 FROM score WHERE subid=2;

求已出成绩的各科的平均成绩

不使用分组

SELECT DISTINCT subid FROM score;
SELECT AVG(socre) FROM score WHERE subid=1;
SELECT AVG(socre) FROM score WHERE subid=2;
SELECT AVG(socre) FROM score WHERE subid=3;

    GROUP BY语句

使用分组(含有 每, 各,或带有聚合函数的情况)

-- mysql中可单独使用,分组后的列可以不出现在select中
SELECT AVG(socre) FROM score GROUP BY subid;
-- SQLServer中不可单独使用,需要结合having语句,而且分组后的列必须出现在select中
SELECT AVG(socre),subid FROM score GROUP BY subid;

查询出所有成绩加5分后,成绩还是小于60分

HAVING针对查询结果

SELECT stuid,socre+5 加分后的成绩 FROM score HAVING 加分后的成绩 <60;

WHERE只能针对表中真正存在的列进行筛选

SELECT stuid, socre FROM score WHERE socre <60;
-- 平均分大于70的科目
SELECT subid,AVG(socre) FROM score GROUP BY subid HAVING AVG(socre)>70;

7. 排序

    ORDER BY语句

asc 升序 (默认)desc 降序

SELECT * FROM student;
SELECT * FROM student ORDER BY cid,birthday ASC;
SELECT * FROM student ORDER BY phone DESC;

    LIMIT 语句,用于分页
    LIMIT 数据的坐标,从0开始,显示的条数
SELECT * FROM student ORDER BY birthday ASC LIMIT 0,5;

练习3

SELECT * FROM employee ORDER BY salary ASC LIMIT 0,3;
SELECT * FROM employee ORDER BY did DESC, hiredate ASC, salary DESC;
SELECT * FROM employee ORDER BY salary DESC LIMIT 2,3;

五、多表查询

交叉连接

SELECT * FROM student, classinfo;

1.等值链接

-- 查询李四所在班级,显示李四所在班级编号,姓名,班级名
-- 1.=链接两个表
SELECT student.cid,name,cname FROM student, classinfo
-- 2.确定链接条件
where student.cid=classinfo.cid
-- 3.确定其他筛选条件
and name= '李四';

-- 查询张三c++考试成绩,显示学生姓名,班级名,学号,成绩,科目名
SELECT `name`,cname,student.stuid,socre,subname
FROM student, classinfo, `subject`,score
WHERE student.cid=classinfo.cid
AND `subject`.subid=score.subid
AND student.stuid=score.stuid
AND student.`name`= '张三'
AND subname = 'c++';

2.内链接

-- 查询李四所考科目的平均成绩,显示姓名,平均成绩
-- 1.把两个表连成大表
SELECT `name`,AVG(socre) FROM student INNER JOIN score
-- 2.链接条件
ON student.stuid=score.stuid
-- 3.筛选条件
WHERE `name`='李四';

-- 查询张三c++考试成绩,显示学生姓名,班级名,学号,成绩,科目名
SELECT `name`,cname,student.stuid,socre,subname
FROM student INNER JOIN classinfo
ON student.cid=classinfo.cid
INNER JOIN score
ON student.stuid=score.stuid
INNER JOIN `subject`
ON `subject`.subid=score.subid
WHERE student.`name`= '张三' AND subname = 'c++';

3.外连接

1.左外连接:(推荐使用左外连接替代右外连接)以左表为主,在右表找匹配数据,没有就用null填充,左表数据必须被查询出来

而内连接和等值链接是左右两个表的交集,如果匹配成功则查询出来,否则不显示

-- 查询所有学生课程的考试成绩,
-- 查询结果保留学生ID、姓名、性别、课程ID、成绩
SELECT student.stuid,`name`,sex,subid,socre FROM student LEFT JOIN score
ON student.stuid=score.stuid;

2.右外连接:以右表为主,在左表找匹配数据,没有就用null填充,左表数据必须被查询出来

-- 而内连接和等值链接是左右两个表的交集,如果匹配成功则查询出来,否则不显示
SELECT student.stuid,`name`,sex,subid,socre FROM student RIGHT JOIN score
ON student.stuid=score.stuid;

原创:https://www.panoramacn.com
源码网提供WordPress源码,帝国CMS源码discuz源码,微信小程序,小说源码,杰奇源码,thinkphp源码,ecshop模板源码,微擎模板源码,dede源码,织梦源码等。

专业搭建小说网站,小说程序,杰奇系列,微信小说系列,app系列小说

Sql语句基础要点总结

免责声明,若由于商用引起版权纠纷,一切责任均由使用者承担。

您必须遵守我们的协议,如果您下载了该资源行为将被视为对《免责声明》全部内容的认可-> 联系客服 投诉资源
www.panoramacn.com资源全部来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。 敬请谅解! 侵权删帖/违法举报/投稿等事物联系邮箱:2640602276@qq.com
未经允许不得转载:书荒源码源码网每日更新网站源码模板! » Sql语句基础要点总结
关注我们小说电影免费看
关注我们,获取更多的全网素材资源,有趣有料!
120000+人已关注
分享到:
赞(0) 打赏

评论抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

您的打赏就是我分享的动力!

支付宝扫一扫打赏

微信扫一扫打赏