SQL基础语句总结
核心提示:本节主要讲述1些基本的,常常使用的SQL语句,而非数据库方面的基本知识。数据库方面的知识留待以后再讲,现在就我们平经常常使用的1些SQL语句展开论述。
写在前面:本节主要讲述1些基本的,常常使用的SQL语句,而非数据库方面的基本知识。数据库方面的知识留待以后再讲,现在就我们平经常常使用的1些SQL语句展开论述。
本节会触及到SQL的基本句法,SQL的履行顺序,SQL之间的组合,动态SQL语句4个方面。这4个方面之间没有前后顺序之分,是相辅相成,其内在还是有很多联系的。
1. 4种基本的SQL语句
1. 查询
select * from table
2. 更新
update table set field=value
3. 插进
insert [into] table (field) values(value)
4. 删除
delete [from] table
2.语句的履行顺序
1.语法分析
分析语句中语法是否是符合规范,衡量语句中各表达式的意义。
2.语义分析
检查语句中触及的所有数据库对象是否是存在,且用户有相应的权限。
3.选择优化器
不同的数据库有不同的算法(这个触及到数据结构),数据库会根据自己的理解(数据库本身)为 SQL语句选择不同的优化器,不同的优化器会选择不同的“履行计划”
4.运行“履行计划”
根据“履行计划”履行SQL语句。
以上所述是数据履行时的大体线路。
5.select 语句的履行顺序
借用ItZik Ben-Gan、Lubor Kollar、Dejan Sarka所著的《Sql Server 2005 技术内幕:T-SQL查询》的1段话足以说明:
(8) select (9) distinct (11)
(1)from
(3)
(2) on
(4) where
(5)group by
(6) with {cube|rollup}
(7)having(having_condition)
(10) order by
从这个顺序可以看出,所有的查询语句都是从from开始履行的。在履行进程中,每个步骤都会为下1个步骤天生1个虚拟表,这个虚拟表将作为下1个履行步骤的基础。
第1步:from
首先对from子句中的前两个表履行1个笛卡尔乘积,此时天生虚拟表vt1 .
第2步:on
接下来便是利用on挑选器,on 中的逻辑表达式将利用到 vt1 中的各个行,挑选出满足on逻辑表达式的行,天生虚拟表 vt2 .
第3步:join
假设是outer join 那末这1步就将添加外部行,left outer jion 就把左表在第2步中过滤的添加进来,假设是right outer join 那末就将右表在第2步中过滤掉的行添加进来,这样天生虚拟表 vt3.
第4步:多表
假设 from 子句中的表数目过剩两个表,那末就将vt3和第3个表连接从而计算笛卡尔乘积,天生虚拟表,该进程就是1个重复1⑶的步骤,终极得到1个新的虚拟表 vt3.
第5步:where
利用where挑选器,对上1步生产的虚拟表援用where挑选器,天生虚拟表vt4,在这有个比较重要的细节不能不说1下,对包括outer join子句的查询,就有1个让人感到困惑的题目,到底在on挑选器还是用where挑选器指定逻辑表达式呢?on和where的最大辨别在于,假设在on利用逻辑表达式那末在第3步outer join中还可以把移除的行再次添加回来,而where的移除的终极的。
第6步:group by
分组,天生虚拟表 vt4
第7步:having
对vt4利用having挑选器,天生虚拟表 vt5
第8步:select
处理select 列表,天生虚拟表vt6
第9步:distinct
将vt6 中重复的行往掉,天生虚拟表vt7
第10步:order by
将vt7中的行按order by 子句中的列列表排序,天生1个游标vc8
第101步:top
从vc8的开始处选择指定数目或比例的行,天生虚拟表vt9,并返回给调用者
3. SQL语句扩大
1.select
1.1 选择性插进语句
1.1.1 Insert into table1 (field1 ) Select field2 from table2
要求table1必须存在。
1.1.2 select field1 into table1 from table2
要求table1不存在,在运行时会自动创建表名为table1,字段名为field1的1个表。
1 2 下1页
核心提示:本节主要讲述1些基本的,常常使用的SQL语句,而非数据库方面的基本知识。数据库方面的知识留待以后再讲,现在就我们平经常常使用的1些SQL语句展开论述。
1.2打开其它数据源
/* OracleSvr为链接服务器名 ,本示例假定已创建了1个名为 ORCLDB 的 Oracle 数据库别名。*/
EXEC sp_addlinkedserver 'OracleSvr', --链接服务器名OracleSvr,sysname类型
'MSDAORA', --provider_name数据源提供程序,此处为oracle
'ORCLDB' --数据源名称
GO
Select * from OPENQUERY(OracleSvr, 'SELECT name, id FROM joe.titles')
假设有多个sql server实例:
SELECT *FROM [servername\instancename.]pubs.dbo.authors.
留意:1个对象的完全名称包括4个标识符:服务器名称、数据库名称、所有者名称和对象名称。其格式以下:
[ [ [ server. ] [ database ] .] [ owner_name ] .] object_name
中间的名称可以省略,但是.不可以省略。如:server…object_name
2.update
2.1多表更新
Update table1 set table1.field 1=table2.field2 from
table1,table2 /*猜想下连接方式全联接 FULL [OUTER] JOIN */
where table1.field3= table2 .filed3
知识:SQL Server的update语句中from后可跟多个表,Oracle则不支持该用法
Oracle 中:Update table1 set table1.field1=
(select table2.field2 from table2 where .field3= table2 .filed3)
3.insert
3.1 插进语句的规范题目
在sql server 2000,sql server 2005中
标准语句:insert into table(field) values (value)
提示:在access中不正确,缘由sql语句不规范,因此在书写sql语句的进程中1定要按正规的语法来写。
4.delete
4.1标准删除
标准语句:delete from table where condition
提示:同insert
4.2其它删除
4.2.1 truncate
语法:truncate table table_name
删除表中所有行,不记录单个行删除操纵,不记录日志,,所有速度比Delete快。
4.2.2 drop
语句: Drop table table_name
删除表及相干,有fk束缚的不能删,先往年fk;系统表不能使用。
5.order by
功能:排序
技能:order by newid() 随机排序
4. 动态SQL语句
4.1基本原则
4.1.1预编译题目
在EXECUTE履行之前,数据库不会编译 EXECUTE 语句内的语句,动态SQL语句就是放到存储进程中,它也不会预先编译。
4.1.2甚么时候使用动态SQL语句
字段名,表名,数据库名作为变量时,必须用动态SQl语句
4.2.exec[ute]
4.2.1语法
exec (‘select * from table_name where name=’’’+@name+’’’’) --括号不能少
4.2.2传递参数
--假定存储进程test_sp中需要1个参数:类型nvarchar(50) 名称 @parm
Declare @parms nvarchar(50)
Set @parms=’测试变量’
Exec test_sp [@parm=]@parms –方括号内的可以省略
假设是批处理中的第1句,则可以省略Exec
4.2.3输出参数
declare @num int, @field int,
@sqls nvarchar(4000)
Set @field=1
set @sqls='select @a=count(*) from table_name where field=@field'
exec sp_executesql @sqls,N'@a int output,@field int',@num output ,@field
select @num
4.3.sp_executesql
语法:exec[ute] sp_executesql N’select * from table_name where field=@field’,N’@field int’,@field=1
使用sp_exexutesql比使用exec更有效率.
结束语:以上是SQL中常常使用的语句,及其履行时的顺序。不论是SQL Server系列,mysql,access,Oracle系列这些都基本相同。假设要在数据库方面做精深的研究,则多看1下其自带的帮助,多练习,多看1些数据库原理方面的书。(来源:风雨人生)
上1页 1 2 唐山网站建设www.fw8.netTAG:数据库,名称,语句,语法,表达式
评论加载中...
|