SQL 常用语法

Select
SELECT "栏位" FROM "表格名"

Distinct
SELECT DISTINCT "栏位"
FROM "表格名"

Where
SELECT "栏位"
FROM "表格名"
WHERE "condition"

And/Or
SELECT "栏位"
FROM "表格名"
WHERE "简单条件"
{[AND|OR] "简单条件"}+

In
SELECT "栏位"
FROM "表格名"
WHERE "栏位" IN ('值1', '值2', ...)

Between
SELECT "栏位"
FROM "表格名"
WHERE "栏位" BETWEEN '值1' AND '值2'

Like
SELECT "栏位"
FROM "表格名"
WHERE "栏位" LIKE {模式}

Order By
SELECT "栏位"
FROM "表格名"
[WHERE "条件"]
ORDER BY "栏位" [ASC, DESC]

Count
SELECT COUNT("栏位")
FROM "表格名"

Group By
SELECT "栏位1", SUM("栏位2")
FROM "表格名"
GROUP BY "栏位1"

Having
SELECT "栏位1", SUM("栏位2")
FROM "表格名"
GROUP BY "栏位1"
HAVING (栏位)

Create Table
CREATE TABLE "表格名"
("栏位 1" "栏位 1 资料种类",
"栏位 2" "栏位 2 资料种类",
... )

Drop Table
DROP TABLE "表格名"

Truncate Table
TRUNCATE TABLE "表格名"

Insert Into
INSERT INTO "表格名" ("栏位1", "栏位2", ...)
VALUES ("值1", "值2", ...)

Update
UPDATE "表格名"
SET "栏位1" = [新值]
WHERE {条件}

Delete From
DELETE FROM "表格名"
WHERE {条件}

### 头歌嵌入式 SQL 常用语法 头歌实践教学平台中的嵌入式 SQL 主要用于在高级语言(如 C/C++)中嵌入 SQL 语句,实现数据库操作。其核心在于将 SQL 语句嵌入宿主语言,并通过预编译器将其转换为可执行代码[^1]。 ```c EXEC SQL BEGIN DECLARE SECTION; int emp_id; char emp_name[50]; float salary; EXEC SQL END DECLARE SECTION; ``` 上述代码定义了宿主变量,这些变量用于在 C 程序与数据库之间传递数据[^1]。宿主变量必须在 `BEGIN DECLARE SECTION` 和 `END DECLARE SECTION` 之间声明,以便预处理器识别。 连接数据库使用 `CONNECT` 语句: ```c EXEC SQL CONNECT TO database_name USER username IDENTIFIED BY password; ``` 该语句建立与指定数据库的连接,支持用户认证机制[^1]。 执行查询操作时,可使用 `SELECT` 语句并结合宿主变量获取结果: ```c EXEC SQL SELECT ename, sal INTO :emp_name, :salary FROM emp WHERE empno = :emp_id; ``` 注意:SQL 语句前需加 `EXEC SQL`,且宿主变量前需加冒号 `:` 表示引用宿主语言变量[^1]。 对于返回多行数据的查询,需使用游标(Cursor)进行逐行处理: ```c EXEC SQL DECLARE emp_cursor CURSOR FOR SELECT ename, sal FROM emp WHERE deptno = :dept_id; EXEC SQL OPEN emp_cursor; EXEC SQL FETCH emp_cursor INTO :emp_name, :salary; // 循环读取数据 EXEC SQL CLOSE emp_cursor; ``` 游标操作包括声明、打开、抓取和关闭四个步骤,适用于处理结果集[^1]。 更新数据使用标准 DML 语句: ```c EXEC SQL UPDATE emp SET sal = :new_salary WHERE empno = :emp_id; ``` 删除记录: ```c EXEC SQL DELETE FROM emp WHERE empno = :emp_id; ``` 插入新记录: ```c EXEC SQL INSERT INTO emp (empno, ename, sal) VALUES (:emp_id, :emp_name, :salary); ``` 所有嵌入式 SQL 操作都应包含错误处理机制,可通过检查 `SQLCA`(SQL Communication Area)结构获取执行状态: ```c EXEC SQL INCLUDE SQLCA; // 执行语句后检查 sqlca.sqlcode if (sqlca.sqlcode != 0) { printf("SQL Error: %d\n", sqlca.sqlcode); } ``` `SQLCA` 提供了 `sqlcode` 字段用于判断执行是否成功,通常 `0` 表示成功,非零表示出错[^1]。 ### 动态 SQL 支持 部分头歌环境支持动态 SQL,允许运行时构造 SQL 语句: ```c char sql_stmt[200]; sprintf(sql_stmt, "UPDATE emp SET sal = %f WHERE empno = %d", new_sal, id); EXEC SQL EXECUTE IMMEDIATE :sql_stmt; ``` 动态 SQL 提高了灵活性,但需防范 SQL 注入风险[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值