数据库SQL语句~四表连接

数据库SQL语句~四表连接,第1张

1、如图所示,打开了SQL Server 2008,并创建好了数据库。然后看当前是否是在自己要创建表的数据库中。

2、如图,选中好LX数据库,练习数据库。

3、或者在新建窗口中输入代码,USE LX,然后选中后运行它,一样进入到LX数据库中。如图所示。

4、之前有教过不用代码设计数据库的表,这里只讲用语句创建表。如图所示,创建表的代码格式如下。

5、创建一个员工表的实际代码,如图所示,简单的员工表,有员工号、员工姓名、员工所在部门构成。

6、接着,输入好代码后,设置一些主外键约束。

A表字段stuid,stuname

B表字段bid,stuid,score,coursename,status

CREATE TABLE A#(

stuid INT,

stuname VARCHAR(10)

);

CREATE TABLE B# (

bid INT,

stuid INT,

score INT,

coursename VARCHAR(10),

status INT,

);

INSERT INTO A#

SELECT 1, '张三' UNION ALL

SELECT 2, '李四' UNION ALL

SELECT 3, '王五' UNION ALL

SELECT 4, '赵六'

;

INSERT INTO B#

SELECT 1, 1, 100, '语文', 0 UNION ALL

SELECT 2, 1, 99, '数学', 1 UNION ALL

SELECT 3, 2, 88, '语文', 0 UNION ALL

SELECT 4, 2, 88, '数学', 1 UNION ALL

SELECT 5, 3, 77, '语文', 0 UNION ALL

SELECT 6, 3, 77, '数学', 0 UNION ALL

SELECT 5, 4, 66, '语文', 1 UNION ALL

SELECT 6, 4, 66, '数学', 1

;

SELECT

A#stuid,

B#score,

B#coursename,

B#status

FROM

A# JOIN B#

ON (A#stuid = B#stuid AND B#status = 1)

WHERE

NOT EXISTS (

SELECT

1

FROM

B# sub

WHERE

A#stuid = substuid

AND substatus = 1

AND subscore > B#score

)

stuid score coursename status

----------- ----------- ---------- -----------

1 99 数学 1

2 88 数学 1

4 66 语文 1

4 66 数学 1

(4 行受影响)

注:

stuid = 3的,2门课程的 status 都为0,因此无数据显示。

stuid = 4 的,2门课程都等于 max(score), 因此显示出2行数据。

1、配置ODBC数据源。

2、使用SQL函数进行连接。

对于1、配置数据源,配置完以后就可以编程 *** 作数据库了。

对于2、使用SQL函数进行连接,参考代码如下:

#include

#include

#include

voidmain()

{

HENVhenv;//环境句柄

HDBChdbc;//数据源句柄

HSTMThstmt;//执行语句句柄

unsignedchardatasource[]="数据源名称";//即源中设置的源名称

unsignedcharuser[]="用户名";//数据库的帐户名

unsignedcharpwd[]="密码";//数据库的密码

unsignedcharsearch[]="selectxmfromstuwherexh=0";

SQLRETURNretcode;//记录各SQL函数的返回情况

//分配环境句柄

retcode=SQLAllocEnv(&henv);//等介于(SQL_HANDLE_ENV,SQL_NULL

,&henv);

//设置ODBC环境版本号为30

retcode=(henv,SQL_ATTR_ODBC_VERSION,(void)SQL_OV_ODBC3,0);

//分配连接句柄

retcode=(henv,&hdbc);//等介于(SQL_HANDLE_DBC,henv,&hdbc);

//设置连接属性,登录超时为rgbValue秒(可以没有)

//(hdbc,SQL_LOGIN_TIMEOUT,(SQLPOINTER)(rgbValue),0);

//直接连接数据源

//如果是windows身份验证,第二、三参数可以是

,也可以是任何字串

//SQL_NTS即"

retcode=SQLConnect(hdbc,datasource,SQL_NTS,user,SQL_NTS,pwd,SQL_NTS);

//分配语句句柄

retcode=(hdbc,&hstmt);//等介于(SQL_HANDLE_STMT,hdbc,&hstmt);

//直接执行查询语句

retcode=(hstmt,search,SQL_NTS);

//将数据缓冲区绑定数据库中的相应字段(i是查询结果集列号,queryData是绑定缓冲区,BUFF_LENGTH是缓冲区长度)

SQLBindCol(hstmt,i,SQL_C_CHAR,queryData[i-1],BUFF_LENGTH,0);

//遍历结果集到相应缓冲区queryData

SQLFetch(hstmt);

/

对遍历结果的相关 *** 作,如显示等

/

//注意释放顺序,否则会造成未知错误!

(SQL_HANDLE_STMT,hstmt);

(hdbc);

(SQL_HANDLE_DBC,hdbc);

(SQL_HANDLE_ENV,henv);

}

嵌套就是类似IN语句,比如select from table1 where id in (select id from table2),连接就是用JOIN把2表根据一个字段进行数据连接,区别就是连接查询效率比嵌套高,而且JOIN可以通过改变JOIN先后顺序,先扫描记录少的表,从而提高速度,如果嵌套会固定先搜索子查询

以上就是关于数据库SQL语句~四表连接全部的内容,包括:数据库SQL语句~四表连接、SQL联合查询语句、c语言怎样连接数据库(c语言和数据库连接)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9486786.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存