知识扩展-SQL查询基础
由于公司项目原因,在生产项目中用到了SQL语句,尽管只是一些简单的查询语句,也算是自己前端生涯的技能拓展,所以专门对于SQL语句,作了一些基础练习。网上学习SQL语句教程非常的多,学习资料百度即可。作为一个SQL菜鸟,在这里分享,是为了巩固学习,希望可以帮助到大家。
SQL基础
SQL 是用于访问和处理数据库的标准的计算机语言。目前我接触的数据库有:MySQL、PostgreSQL、MongoDB,前两个是关系型数据库,后一个是非关系型数据库。它们给我的直观区别是:关系型支持SQL语句,非关系型不支持。MySQL
、PostgreSQL
都是支持SQL语句的,这里需要一点前提知识。
- 数据库: 数据库是一些关联表的集合
- 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格
- 列: 一列(数据元素) 包含了相同类型的数据, 例如邮政编码的数据
- 行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据
- 主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据,例如id
SQL查询
###1. 如何进行数据表的查询?
// 获取数据表中具体那几列的数据 select column_name1, column_name2 from PERSONS // 获取数据表全部的数据,*表示所有 select * from PERSONS
这个的PERSONS
就是数据表,column_name1
、column_name2
列的名称。
###2. 如何进行数据表的过滤查询?
// 查询符合 name为liuheng 的数据 select * from PERSONS where name='liuheng'; // 查询符合 name为liuheng和liuheng1 的数据 select * from PERSONS where name='liuheng' and name='liuheng1'; // 查询符合 age大于20 的数据 select * from PERSONS where age > 20; // 查询符合 age等于20,30 的数据 select * from PERSONS where age in (20, 30); // 查询符合 name首字母为'l' 的数据 select * from PERSONS where name like 'l%'; // 查询符合 name尾字母为'1' 的数据 select * from PERSONS where name like '%1';
where
子句用于提取那些满足指定条件的记录。like
操作符用于在 WHERE 子句中搜索列中的指定模式。in
操作符允许在 WHERE 子句中规定多个值。
###3. 如何多表查询数据?
// 查询PERSONS和DOGS两张表的全部数据 select * from PERSONS, DOGS; select p.id, p.name, p.age, d.owner dog_name from PERSONS p, DOGS d;
以上sql语句即可进行多表查询,这样的多表查询又称笛卡尔查询,使用笛卡尔查询时要非常小心,由于结果集是目标表的行数乘积,对两个各自有100行记录的表进行笛卡尔查询将返回1万条记录,对两个各自有1万行记录的表进行笛卡尔查询将返回1亿条记录。(谨慎使用)
即使配合where语句也要慎用,因为FROM X,Y是先做笛卡尔乘积,WHERE 再从乘积后的表中选出指定列。
4. 有更好的多表查询方法嘛?—— 连接查询
连接查询分为三种:内查询 INNER JOIN、左查询 LEFT OUTER JOIN、右查询 RIGHT OUTER JOIN;
内查询语句如下:
// 内查询 select p.id, p.name, p.gender, p.age, d.name dog_name from PERSONS p inner join DOGS d on s.name = d.owner;
- 确定主表,使用from <表1>的语法(这里的表1 即可以是特定的表,也可以是(select * from ROBOTS;) 这样的语句);
- 确定需要连接的表,使用inner join <表2>的语法;
- 确定连接条件,使用ON;可选。可选加上where子句、order by等子句;
内查询主要用来查询两表都存在的记录:
5. 左查询和右查询?
左查询语句如下:
// 左查询 select p.id, p.name, p.gender, p.age, d.name dog_name from PERSONS p left join DOGS d on s.name = d.owner;
left join
等价于left outer join
,左查询是选出左表存在的记录:
右查询语句如下:
// 右查询 select p.id, p.name, p.gender, p.age, d.name dog_name from PERSONS p right join DOGS d on s.name = d.owner;
right join
等价于right outer join
,右查询是选出左表存在的记录:
6. SQL语句支持函数嘛?
sql是有内建函数,sql的内建函数可以极大便利开发者。
// 返回指定列的最大值 select MAX(age) from PERSONS; // 返回表中的记录数 select COUNT(*) from PERSONS; // 返回文本字段中值的长度 select LEN(name) from PERSONS; // 返回指定的列中第一个记录的值 select FIRST(*) from PERSONS;
以上只是sql内建函数中的几个常用函数,还有更多的函数没有列出,例如:LAST、MIN、SUM、AVG等。
7.如何更新表数据或删除表数据?
// 更新表数据 update table_name set col1=values1, clo2=value2 where col3=value // 删除表数据 delete from table_name where col=value;
建议对于数据表中的必要数据的删除只是标记删除,保存数据记录。
这次分享到此为止,由于自己也是菜鸟的原因,会持续学习sql,后续也会继续分享相关学习。
本文来自博客园,作者:herryLo,转载请注明原文链接:https://www.cnblogs.com/liuheng/p/15883095.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理