Sql Server 的链接,查询,添加
来源:互联网 发布:淘宝产品拍摄技巧 编辑:程序博客网 时间:2024/06/06 03:16
链接
自然链接
是一种特殊的等值连接,它要求两个关系进行比较的分量必须是相同的属性组,并且在结果集中将重复属性列去掉。
内链接
内联接(典型的联接运算,使用像 = 或 <> 之类的比较运算符)。包括相等联接和自然联接。
内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行。
例如,检索 students和courses表中学生标识号相同的所有行。
外链接
外联接可以是左向外联接、右向外联接或完整外部联接
下面用实验来表示一下
1.首先建立一个用于试验的两个表A,B;
CREATE TABLE A(id INT NOT NULL PRIMARY KEY,name CHAR(30) NOT NULL,);CREATE TABLE B(id INT NOT NULL PRIMARY KEY,class INT NOT NULL,text INT NOT NULL);
2.添加一些内容
USE student;INSERT INTO dbo.A(id,name)VALUES(1,'Tom');INSERT INTO dbo.A(id,name)VALUES(2,'Jack');INSERT INTO dbo.A(id,name)VALUES(3,'Mary');INSERT INTO dbo.B(id,class,text)VALUES(1,'001',1);INSERT INTO dbo.B(id,class,text)VALUES(2,'002',2);INSERT INTO dbo.B(id,class,text)VALUES(3,'003',4);
下面就开始链接实验;
对照表
1) 内连接
SELECT A.*,B.* FROM A INNER JOIN B ON A.id=B.text;
结果是
2)左连接
SELECT A.*,B.* FROM A LEFT JOIN B ON A.id=B.text;这里写代码片
结果是
3) 右连接
SELECT A.*,B.* FROM A RIGHT JOIN B ON A.id=B.text;
结果是
4) 完全连接
SELECT A.*,B.* FROM A FULL JOIN B ON A.id=B.text;
结果是
备注:
1.在做链接时,如果不加限制赋,展现出来的时两个表的笛卡尔集;
2.当在SQL Server 上进行sql语句操作时,要注意,有些名词报错是因为同框上一条语句还也没有执行,所以建议逐条执行;
多表查询
复合条件链接,多表联合查询(注意对应关系)
SELECT A.*,B.* FROM A,B WHERE A.id=B.id;
sql标准 in () 为 集合
SELECT A.*,B.* FROM A,B WHERE A.id=B.id AND A.id IN (1,3);
嵌套查询
工作方式是:先处理内查询,由内向外处理。
举例:
SELECT student.name,class.grade FROM student,class WHERE student.id=class.id AND grade=(SELECT MAX(grade) FROM class)//这是在查询成绩最好的学生的姓名和成绩
实例 不相关嵌套
SELECT A.name,B.text FROM A,B WHERE A.id=B.id AND text=(SELECT MAX(text) FROM B);
实例 多层嵌套
SELECT id,name FROM student WHERE Sno IN ******
SELECT * FROM A WHERE //3.第三步进行将选了这门课程的学生列出id IN(SELECT id FROM B WHERE//2.第二步,将课程id所对应的学生id传给最外层text = (SELECT id FROM C WHERE subject='physics')//1.第一步选出physics所对应的课程id)
注意
多层嵌套,如同递归,剥茧抽丝,利用多表嵌套查询,从而层层对应得到需要的答案,在使用时会有许多表中其他元素做干扰,要注意!!!
实例 相关子查询
复习:别名的使用
SELECT id,name FROM A XWHERE id <=(SELECT AVG(text)FROM B YWHERE Y.id=X.id);SELECT AVG(text)FROM B;
当我们把sql语句进行修改,去掉了联合查询,此时id=2
SELECT id,name FROM A WHERE id =(SELECT AVG(text)FROM B);
在进行相关子查询时,要注意使用表的联查,否则会导致查询范围出错。
同时注意查询思路,以及对应括号的数量。
带有ANY(SOME)或ALL谓词修饰,需要比较运算符
SELECT FROM student *********
EXISTS 子查询中存在谓词
插入数据
使用INSERT INTO 语句,语句有两种,
将所有的列全部列出
INSERT INTO B(id,class,text)VALUES (1,001,1);/*当要插入的数据为字符型的时候,需要在数据上加单引号*/INSERT INTO A(id,name)VALUES(4,'Jack');INSERT INTO A(id,name)VALUES(5,'Mak');INSERT INTO A(id,name)VALUES(6,'Bob');
将所需添加的数据列出即可
INSERT INTO D(id,name)VALUES(1,'JARY');INSERT INTO D(id,age)VALUES(2,15);
1.要注意顺序问题,插入值与前方的列对应
2. 当列的规范性约束可以为空时,才能选择不添加
按照表的顺序将数据写入
当然在与表进行全部按顺序添加数据的时候,可以直接简便的写成
INSERT INTO D VALUES(3,'JARY',14);INSERT INTO D VALUES(4,'Tom',15);
总结 INSERT INTO
- 1.注意顺序
2.字符型要加单引号
3.当约束条件有 NOT NULL
就不能令其为空
- Sql Server 的链接,查询,添加
- 【SQL Server】链接查询
- sql server链接查询
- Sql Server数据库的添加、查询、修改功能
- MS SQL server分布式查询(链接数据库)
- SQL SERVER链接查询ACCESS数据
- SQL Server 链接服务器查询慢?
- sql server 使用链接服务器远程查询
- sql server 添加、查询 字段、表注释
- 关于sql的链接查询
- sql 数据库,左外链接和查询结果某一项添加自定义字符串的情况
- C#链接Sql Server的Sql Helper
- sql-server 错误7405错误的解决办法(链接服务器查询)
- sql-server 错误7405错误的解决办法(链接服务器查询)
- SQL Server 2008使用链接服务器访问Oracle 10g,查询速度超级慢的解决方案
- 在SQL Server 2000中添加Oracle链接服务器
- 在SQL Server 2000中添加Oracle链接服务器
- 查询 SQL SERVER 的版本号
- GDAL读入多波段遥感影像方法以及输出的影像变成了多块的原因
- 基础知识点
- 基础总结知识点-第一章:web技术的基础知识
- 回滚revert和reset区别
- 身份证号码校验 java校验
- Sql Server 的链接,查询,添加
- 申请github账户,托管代码到github全套教程来了(依据github2017最新版界面)
- [leetcode]16. 3Sum Closest
- 推荐几款实用的Android Studio 插件
- Android中ExpandableListView的使用
- redis内存数据的持久化方式
- LsInventorySession failed: Unable to create patchObject
- 为什么新生代内存需要有两个Survivor区
- 第一篇BLOG—Hello world!