create table a (aid int,aname varchar(10))
create table b (bid int,bname varchar(10))
select * from a
aid aname
----------- ----------
1 wlg
2 ytu
3 hit
select * from b
bid bname
----------- ----------
1 java
2 python
4 php
Join, left join, right join, inner join的用法
select * from a left join b on a.aid = b.bid
//left join 取出 a 表全部数据,然后根据 on 匹配条件加上b表匹配的数据。
aid aname bid bname
----------- ---------- ----------- ----------
1 wlg 1 java
2 ytu 2 python
3 hit NULL NULL
select * from a inner join b on a.aid = b.bid
//只有a和b匹配的数据。
aid aname bid bname
----------- ---------- ----------- ----------
1 wlg 1 java
2 ytu 2 python
select * from a right join b on a.aid = b.bid
//首先取出b表的所有数据然后根据 on 匹配条件加上a表匹配的数据。
aid aname bid bname
----------- ---------- ----------- ----------
1 wlg 1 java
2 ytu 2 python
NULL NULL 4 php
select * from a,b where a.aid = b.bid
//只有a 和 b 匹配的数据。
aid aname bid bname
----------- ---------- ----------- ----------
1 wlg 1 java
2 ytu 2 python
Union, union all的用法
对于上表a, b而言:
Select * from a union select * from b与select * from a union all select * from b效果是相同的,union与union all的功能都是将两个结果集合并为一个,但是区别是union会将两个结果集中重复的记录筛选掉再合并,而union all只是重复的合并结果集。同时应注意如果union两端的查询结果数据类型不一样,例如一个为字符串,另外一个为数字,则返回的总结果会以BLOB返回,可以实现通过convert转换
Group by
主要实现分类聚合的功能
子查询与表连接
该类查询分为多种:
1. 子查询记录唯一,可用
select * from table_a where table_a.field=(select table_b.field from table_b)
2. 子查询属性唯一,记录不唯一
select * from table_a where table_a.field in (select table_b.field from table_b)
3. 较常用的,表连接
Select table_a.* from table_a, table_b where table_a.field=table_b.field
注意:如果table_b为空,即使查询条件中没有与table_b相关的项,结果仍然为空。
4. 复杂一点的为:
Select table_a.* from table_a, (select * from table_b) as tem where table_a.field1=tem.field1 and table_a.field2=tem.field2.
另外需要注意的一些细节:
1. SQL语句尽量写得严谨,防止注入式攻击。如select * from tablename where col=XX 这种写法尽量避免,可以写成select * from tablename where col=?。
2. SQL正则表达式中出现如element=XX时最好使用element=’XX’替代。当element为数字类型是前一种可能不会出问题,但是在字符串类型时会出现问题,而后一种是通用的,无论该element是数字类型还是字符串类型。
分享到:
相关推荐
【SQL 使用心得_资深总结】 在SQL Server的项目开发中,掌握SQL语言并理解其性能优化至关重要。本文将分享一些资深程序员的经验,帮助你避免常见的设计错误,提升数据库的效率。 1. **了解你的工具** 熟悉T-SQL...
本资源包“SQL数据库心得”聚焦于分享关于SQL数据库的一些重要概念、最佳实践和常见问题,旨在帮助用户提升SQL技能。 首先,SQL的基本操作包括数据的增、删、改、查(CRUD)。创建(Create)数据库和表结构,通过...
SQL(Structured Query Language)是用于管理和操作关系数据库的标准语言,其全称为构造化查询语言。在学习SQL的过程中,我们可以了解到其强大的功能,包括但不限于创建、修改和查询数据库中的数据。SQL使得用户无需...
SQL 学习心得 5 篇精选汇总(优秀 4 篇) 本文档是关于 SQL 学习心得的总结,涵盖了数据库管理、 SQL 试验、数据表创建、数据库约束、视图、查询、存储过程、触发器、SQL 管理、数据导入导出、备份和还原等方面的...
### SQL优化心得 在当前项目中,我们遇到了一个棘手的问题:需要对多个包含超过千万条记录的大表进行复杂的计算、连接(JOIN)以及其他高级查询操作。为了提高系统的响应速度和资源利用率,对SQL语句进行优化变得尤...
也就是说,不论你使用SQL Server 2000、SQL Server 7.0、Win2K还是NT进行验证都无关紧要,结果都一样。 如果使用SQL Server验证的登录,它最大的好处是很容易通过Enterprise Manager实现,最大的缺点在于 SQL ...
### SQL学习心得与技术要点解析 #### 一、SQL Server 中的数据类型改进 - **`nvarchar(max)` 和 `varchar(max)` 类型**:这两种类型的最大引入显著提升了编程效率,特别是对于处理大型文本数据(CLOB 类型)时,...
### SQL语句优化心得 #### 引言 在软件开发过程中,SQL语句的编写往往直接关系到应用程序的性能表现。特别是在系统初期阶段,由于数据量较小,即使编写了一些效率较低的SQL语句,也可能不会立即暴露出来。然而,...
### SQL Server 2008 安装心得 在IT领域中,数据库系统的稳定性和兼容性至关重要。SQL Server 2008作为一款成熟且功能强大的数据库管理系统,在企业级应用中有着广泛的应用场景。然而,在实际部署过程中,尤其是在...
本文将深入探讨SQL Server内存释放的相关知识点,基于“sqlserver内存释放心得”这一主题,结合《SQL-Server-2005-内存管理规则探秘.doc》文档内容,我们将详细了解SQL Server内存结构、内存分配策略以及如何有效...
SQL存储过程是数据库管理系统中一组为了完成特定功能的SQL语句集合,它们被预先编译并存储在数据库中,可以通过一个名称来调用执行。学习SQL存储过程是提升数据库管理和应用开发效率的关键步骤,它可以帮助我们更好...
SQL Server数据库使用心得.pdf
SQL99标准学习心得 SQL99标准对于我们理解各种不同数据库标准非常重要。SQL99是数据库的一个ANSI/ISO标准,定义了一种语言(SQL)以及数据库的行为(事务、隔离级别等)。下面对SQL99标准的知识点进行详细的解释: ...
在SQL编程中,触发器(Triggers)是一种特殊类型的存储过程,它会在特定的数据操作(如INSERT、UPDATE或DELETE)发生时自动执行。在本文中,我们将深入探讨两个与触发器紧密相关的临时表——Inserted和Deleted,以及...
sql个人心得,仅供个人学习
本文将结合标题“学习心得(C#,SQL,javascript,etc...)”和描述,深入探讨这三个领域的关键知识点,并分享工作中的实际应用和经验。 首先,我们来谈谈C#。C#是一种面向对象的编程语言,由微软开发,主要用于构建...
SQL,全称Structured Query Language,即结构化查询语言,是用于管理关系数据库系统的主要编程语言。从基础到深入,理解并掌握SQL对于任何IT从业者,尤其是数据分析师、数据库管理员和软件开发者来说,都是至关重要...
### SQL联查应用心得与总结 #### 一、SQL联查基本概念 在数据库操作中,经常需要从多个表中获取数据,这时就需要用到联查(Join)。联查是SQL语言中最常用也是最复杂的部分之一,它允许我们从两个或多个表中检索...
《SQL Server 精华集 心得与经验》是一份集合了众多SQL Server使用技巧、实战经验的宝贵资料,适合SQL Server初学者以及有一定基础的用户深入学习。该资源包含了许多实用的知识点,旨在帮助读者提升在数据库管理、...