Ⅰ sql语句里+lt;gt;是甚么意思
相当于!=都是不等于的意思,我师父说用比较不会跟等号混淆,由于!=如果粗心的话容易看成=
Ⅱ SQL中的符号^,!,$,#,&,各表示什么意思
^(位异或)
对两个整数值执行“位异或”运算。它会将第一个操作数的每一位与第二个操作数中对应的每一位进行比较。如果一位是 0,另一对应位是 1,则相应结果位设置为
1。如果两位都是 0 或两位都是 1,则相应结果位设置为 0。
两个条件必须都为有符号的整数数据类型,或都为无符号的整数数据类型。
!(逻辑非)! 运算符不能与其他运算符一起使用。例如,不能将 ! 和 > 运算符组合为 !>. 运算符。
&(位与)
对两个整数值执行“位与”运算。它会将第一个操作数的每一位与第二个操作数中对应的每一位进行比较。如果两位都是 1,则相应的结果位设置为
1。否则,相应的结果位设置为 0。
两个条件都必须是有符号整数类型,或者都必须是无符号整数类型。
$,# 这两个没有实际含义
Ⅲ SQL中的左外连接和+号的用法
SQL中的左外连接和+号的用法
Oracle 左连接、右连接、全外连接、(+)号作用
Oracle 外连接
(1)左外连接 (左边的表不加限制)
(2)右外连接(右边的表不加限制)
(3)全外连接(左右两表都不加限制)
外连接(Outer Join)
outer join则会返回每个满足第一个(顶端)输入与第二个(底端)输入的联接的行。它还返回任何在第二个输入中没有匹配行的第一个输入中的行。外连接分为三种: 左外连接,右外连接,全外连接。 对应SQL:LEFT/RIGHT/FULL OUTER JOIN。 通常我们省略outer 这个关键字。 写成:LEFT/RIGHT/FULL JOIN。
在左外连接和右外连接时都会以一张表为基表,该表的内容会全部显示,然后加上两张表匹配的内容。 如果基表的数据在另一张表没有记录。 那么在相关联的结果集行中列显示为空值(NULL)。
对于外连接, 也可以使用“(+) ”来表示。 关于使用(+)的一些注意事项:
1.(+)操作符只能出现在where子句中,并且不能与outer join语法同时使用。
2. 当使用(+)操作符执行外连接时,如果在where子句中包含有多个条件,则必须在所有条件中都包含(+)操作符
3.(+)操作符只适用于列,而不能用在表达式上。
4.(+)操作符不能与or和in操作符一起使用。
5.(+)操作符只能用于实现左外连接和右外连接,而不能用于实现完全外连接。
在做实验之前,我们先将dave表和bl里加一些不同的数据。 以方便测试。
SQL> select * from bl;
ID NAME
---------- ----------
1 dave
2 bl
3 big bird
4 exc
9 怀宁
SQL> select * from dave;
ID NAME
---------- ----------
8 安庆
1 dave
2 bl
1 bl
2 dave
3 dba
4 sf-express
5 dmm
2.1 左外连接(Left outer join/ left join)
left join是以左表的记录为基础的,示例中Dave可以看成左表,BL可以看成右表,它的结果集是Dave表中的数据,在加上Dave表和BL表匹配的数据。换句话说,左表(Dave)的记录将会全部表示出来,而右表(BL)只会显示符合搜索条件的记录。BL表记录不足的地方均为NULL.
示例:
SQL> select * from dave a left join bl b on a.id = b.id;
ID NAME ID NAME
--------- ---------- ---------- ----------
1 bl 1 dave
1 dave 1 dave
2 dave 2 bl
2 bl 2 bl
3 dba 3 big bird
4 sf-express 4 exc
5 dmm -- 此处B表为null,因为没有匹配到
8 安庆 -- 此处B表为null,因为没有匹配到
SQL> select * from dave a left outer join bl b on a.id = b.id;
ID NAME ID NAME
---------- ---------- ---------- ----------
1 bl 1 dave
1 dave 1 dave
2 dave 2 bl
2 bl 2 bl
3 dba 3 big bird
4 sf-express 4 exc
5 dmm
8 安庆
用(+)来实现, 这个+号可以这样来理解: + 表示补充,即哪个表有加号,这个表就是匹配表。所以加号写在右表,左表就是全部显示,故是左连接。
SQL> Select * from dave a,bl b where a.id=b.id(+); -- 注意: 用(+) 就要用关键字where
ID NAME ID NAME
---------- ---------- ---------- ----------
1 bl 1 dave
1 dave 1 dave
2 dave 2 bl
2 bl 2 bl
3 dba 3 big bird
4 sf-express 4 exc
5 dmm
8 安庆
2.2 右外连接(right outer join/ right join)
和left join的结果刚好相反,是以右表(BL)为基础的, 显示BL表的所以记录,在加上Dave和BL 匹配的结果。 Dave表不足的地方用NULL填充.
示例:
SQL> select * from dave a right join bl b on a.id = b.id;
ID NAME ID NAME
---------- ---------- ---------- ----------
1 dave 1 dave
2 bl 2 bl
1 bl 1 dave
2 dave 2 bl
3 dba 3 big bird
4 sf-express 4 exc
9 怀宁 --此处左表不足用Null 填充
已选择7行。
SQL> select * from dave a right outer join bl b on a.id = b.id;
ID NAME ID NAME
---------- ---------- ---------- ----------
1 dave 1 dave
2 bl 2 bl
1 bl 1 dave
2 dave 2 bl
3 dba 3 big bird
4 sf-express 4 exc
9 怀宁 --此处左表不足用Null 填充
已选择7行。
用(+)来实现, 这个+号可以这样来理解: + 表示补充,即哪个表有加号,这个表就是匹配表。所以加号写在左表,右表就是全部显示,故是右连接。
SQL> Select * from dave a,bl b where a.id(+)=b.id;
ID NAME ID NAME
---------- ---------- ---------- ----------
1 dave 1 dave
2 bl 2 bl
1 bl 1 dave
2 dave 2 bl
3 dba 3 big bird
4 sf-express 4 exc
9 怀宁
2.3 全外连接(full outer join/ full join)
左表和右表都不做限制,所有的记录都显示,两表不足的地方用null 填充。 全外连接不支持(+)这种写法。
示例:
SQL> select * from dave a full join bl b on a.id = b.id;
ID NAME ID NAME
---------- ---------- ---------- ----------
8 安庆
1 dave 1 dave
2 bl 2 bl
1 bl 1 dave
2 dave 2 bl
3 dba 3 big bird
4 sf-express 4 exc
5 dmm
9 怀宁
已选择9行。
SQL> select * from dave a full outer join bl b on a.id = b.id;
ID NAME ID NAME
---------- ---------- ---------- ----------
8 安庆
1 dave 1 dave
2 bl 2 bl
1 bl 1 dave
2 dave 2 bl
3 dba 3 big bird
4 sf-express 4 exc
5 dmm
最初由 ghc_x 发布
[B]有两个表T1和T2,两个表除了主键索引外均无其他索引,这两个表由T1.F1(主键),T2.F2(主键)进行左连接,SQL语句有两种写法:
1. SELECT * FROM T1,T2 WHERE T1.F1=T2.F2(+)
2. SELECT * FROM T1 LEFT JOIN T2 ON T1.F1=T2.F2
当查看1的执行计划时发现T1为全表扫描,T2为索引扫描。
当查看2的执行计划时发现两个表均为全表扫描。
有人知道这是为什么吗? [/B]
我一直以来也是认为这两种写法是一样的,没想到楼主特意去看了它们的执行计划,而且发现了它们的不同,这使得我比较惊讶。
按照书上的讲法,这两种写法是没有什么区别的,后一种写法只不过是前一种写法的新版本。
为什么两者的执行计划会不一样呢?
我仔细看了一下两者的执行计划,发现了为什么后一种要两个表都全表 扫描,而前一个表有一个索引扫描。
原来前者选择的优化器是RULE,而后者选择的优化器是CBO的ALL ROWS。
不过,似乎要后者的效率高。
1. SELECT /*+RULE*/ * FROM T1,T2 WHERE T1.F1=T2.F2(+)
2. SELECT /*+RULE*/ * FROM T1 LEFT JOIN T2 ON T1.F1=T2.F2
这样再看下执行计划吧
Ⅳ 在SQL中,连接条件中T1.XHamp;lt;amp;gt;T2.XH是什么意思
在SQL中一般不用你“amp;lt;amp;gt;”这种写法表示,它在SQL中用“!=”所代替。表示的意思是不等于。
Ⅳ sql 语句中 || 符号是什么意思
sql 语句中 || 符号是连接的意思,相当于字符串中的连接符。
SQL中常见的符号:
1、=表示 等于。
2、<> 表示不等于。
3、> 表示大于。
4、< 表示小于。
5、>= 表示大于等于。
6、<= 表示小于等于。
7、BETWEEN表示在某个范围内。
(5)sql中gt扩展阅读:
常用的SQL语句:
1、显示当前数据库服务器中的数据库列表:mysql> SHOW DATABASES。注意:mysql库里面有MYSQL的系统信息,我们改密码和新增用户,实际上就是用这个库进行操作。
2、进入数据库:mysql> USE 库名。
3、显示数据库中的数据表:mysql> SHOW TABLES。
4、显示数据表的结构:mysql> DESCRIBE 表名。
5、建立数据库:mysql> CREATE DATABASE 库名。
6、建立数据表:mysql> USE 库名;mysql> CREATE TABLE 表名 (字段名 VARCHAR(20), 字段名 CHAR(1))。
Ⅵ sql语句中的T,G啊什么的是什么意思
那个t相当于把
select 姓名,u_sub='语文', u_score=语文 from score2 union all
select 姓名,u_sub='数学', u_score=数学 from score2
这个起了个别名
当你要用倒这个里面的字段的时候 直接t.u_sub就能用了
Ⅶ SQL中的go、begin、end的用法
SQL中的go、begin、end的用法说明如下:
go向SQL Server实用程序发出一批Transact-SQL语句结束的信号。 Go分批执行t-sql语句 (如果该步骤成功,则执行下一步,即一次执行一个步骤)。
BEGIN和END语句用于将多个Transact-SQL语句组合为一个逻辑块。 BEGIN和END语句可用于控制流语句必须执行两个或多个Transact-SQL语句的块的情况。
BEGIN和END语句必须成对使用:不能单独使用。 BEGIN语句显示在一行上,然后是Transact-SQL语句块。 最后,END语句显示在单独的行上,指示语句块的结尾。
(7)sql中gt扩展阅读:
例如,当IF语句仅控制一个Transact-SQL语句的执行时,无需使用BEGIN或END语句:
IF (@@ERROR <> 0)
SET @ErrorSaveVariable = @@ERROR
如果@@ ERROR为0,则仅跳过SET语句。
当计算结果为FALSE时,使用BEGIN和END语句使IF语句跳过语句块:
IF (@@ERROR <> 0)
BEGIN
SET @ErrorSaveVariable = @@ERROR
PRINT 'Error encountered, ' +
CAST(@ErrorSaveVariable AS VARCHAR(10))
Ⅷ sql是什么意思
结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式。
所以具有完全不同底层结构的不同数据库系统,可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。
用途:更新表中原有数据
单独使用,使用where匹配字段。
例:
“Person”表中的原始数据:
LastName FirstName Address City。
Nilsen Fred Kirkegt 56 Stavanger。
Rasmussen Storgt 67。
运行下面的SQL将Person表中LastName字段为”Rasmussen”的FirstName更新为”Nina”。
UPDATE Person SET FirstName = 'Nina' WHERE LastName = 'Rasmussen'。