sqlserver学习笔记 数据库基础语法

本文详细介绍SQL语言的基础知识,包括数据定义、数据操作、数据控制等内容,并提供了常用的SQL语句示例,如创建表、插入数据、查询数据等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此文章来自地址在最下面:数据库基础语法

1.SQL全称是“结构化查询语言(Structured Query Language)”.

SQL语言主要有5部分组成:

数据定义语言(DDL) : CREATE, ALTER, DROP

数据操纵语言(DML): INSERT, UPDATE, DELETE

数据查询语言(DQL) : SELECT

数据控制语言(DCL) COMMIT WORK, ROLLBACK WORK

嵌入式SQL:用与嵌入通用的高级语言(C/C++、Java、PL/L、VB)

2.数据库定义

PS:因为微软的MSDN解释晦涩难懂,费了很大力气加上一些参考文献把语句的解释为汉语,呵呵。

●创建表

CREATE TABLE <表名>(<列名> <数据类型> [列级完整性约束条件]

           <列名> <数据类型> [列级完整性约束条件]

.......

<表级完整性约束条件 >

).

说明:列级完整性约束条件有NULL 和UNIQUE(NOT NULL),

   表级完整性约束条件有PRIMARY KEY、UNIQUE 或 FOREIGN KEY。          

●修改表

ALTER TABLE<表名> ADD<新列名> <数据类型> [完整性约束条件]

ALTER TABLE<表名> DROP <完整性约束名>

ALTER TABLE<表名> MODIFY <列名> <数据类型>

说明:三个语句依次为添加新列,删除约束名,修改列名、数据类型。

●删除表

DROP TABLE <表名>

●建立索引

CREATE [UNIQUE | CLUSTER] INDEX <索引名>

 ON<表名> ( <列名> [次序], <列名> [次序],...)

说明:[1]次序:   ASC(升序)或DSC(降序),默认为ASC。

[2]UNIQUE   表明此索引的每一个索引值只对应为一的数据记录。

   [3]CLUSTER 表明要建立的索引是聚簇索引,即索引项的顺序是与表中的记录的物理顺序一致的索引组织。

●删除索引

DROP INDEX<索引名>

●创建视图

CREATE VIEW 视图名 (列表名)

AS SELECT 查询子句

[WITH CHECK OPTION]

说明:[1]子查询可以使任意复杂的select语句,但不允许有order by子句和distinct短语。

[2]WITH CHECK OPTION表示子查询的条件表达式。

[3]组成视图的属性列名要么全部省略要么全部指定。

●删除视图

DROP VIEW 视图名

2.数据操作

●Select基本结构

SELECT [ALL | DISTINCT ] <目标表达式1>,<目标表达式2>,<目标表达式3>······

FROM <表名1| 视图名1>,<表名2| 视图名2>,<表名3| 视图名3>······

[WHERE <条件表达式>]

[GROUP BY <列名1> [HAVING <条件表达式>]]

[ORDER BY <列名2> [ ASC | DESC ] ······ ]

说明:[1]SELECT子句对应的是关系运算的投影运算,用来控制表或视图的列的属性.可以输出列名,表达式等.

[2]FROM子句对应关系代数的投影运算,用来列出检索过程中的扫描关系.

[3]WHERE子句对应是关系代数的选择谓词,用来控制行的属性.

[4]GROUP BY用来分组查询,必须和HAVING 搭配使用,HAVING后必须跟聚集函数.

[5]ORDER BY 用来对表进行升序或降序排列.

●插入语句

INSERT INTO 基本表名 (字段名1,字段名2,······)

VALUES (常量1,常量2,······)

INSERT INTO 基本表名(列表名)

SELECT 查询子句

说明:用于向基本表中插入一行或多行数据记录.

●删除语句

DELETE FROM 基本表名

[WHERE 条件表达式]

说明:用于删除一行或者多行数据记录.

●更新语句

UPDATE 基本表名

SET 列名=值表达式(列名=值表达式······)

[WHERE 条件表达式]

举例: 几个简单的基本的sql语句

选择:select * from table1 where 范围

插入:insert into table1(field1,field2) values(value1,value2)

删除:delete from table1 where 范围

更新:update table1 set field1=value1 where 范围

查找:select * from table1 where field1 like ’%value1%’

排序:select * from table1 order by field1,field2 [desc]

总数:select count as totalcount from table1

求和:select sum(field1) as sumvalue from table1

平均:select avg(field1) as avgvalue from table1

最大:select max(field1) as maxvalue from table1

最小:select min(field1) as minvalue from table1

3.SQL的授权和销权(数据控制)

●授权语句

GRANT <权限> [,<权限>]······

ON <对象类型> <对象名>

TO <用户> [,<权限>]······

[WITH GRANT OPTION]

●销权语句

REVOKE <权限> [,<权限>]······

ON <对象类型> <对象名>

FROM <用户> [,<权限>]······

说明:不同的对象类型有不同的操作权限.

<对象名>包括属性列,试图,基本表,数据库。

<对象类型>包括table,database

<用户>包括user1,user2....

注: 对象名为属性列,视图名有5种权限:SELECT,INSERT,UPDATE,DELETE,ALL PRIVILEGES.

对象名为基本表有6种权限:SELECT,INSERT,UPDATE,DELETE,ALTER ,INDEX ALL PRIVILEGES.

对象名数据库时,由CREATETAB 建立表的权限,由DBA授予普通用户.

4.触发器

●创建触发器

CREATE TRIGGER trigger after update on Account

REFERENCING new AS nrow

FOR EACH ROW

BEGIN

...

END

●删除触发器

DROP TRIGGER trigger

5.嵌入式SQL

●区分主语言语句与SQL语句

为了区分诸语言与SQL语句,需要在所有的SQL语句前上前缀EXEC SQL

例如,PL/L和C语言的引用格式:

EXEC SQL <SQL 语句>

●主语言工作单元与数据库工作单元通信

[1]SQL通信区

SQL通信区向主语言传递SQL语句执行状态信息,使主语言能控制程序流程.

[2]主变量

主变量也是共享变量,主语言通过主变量向SQL语言提供参数.

局部变量

declare @id char(10)

--set @id = '10010001'

select @id = '10010001'

全局变量:必须以@@开头

[3].游标

1)定义游标

EXEC SQL DECLARE <游标名> CURSOR FOR

<SELECT 语句>

END_EXEC

2)打开游标

EXEC SQL OPEN <游标名> END_EXEC

3)推进游标

EXEC SQL FETCH FROM <游标名> INTO <变量表> END_EXEC

4)关闭游标

EXEC SQL CLOSE <游标名> END_EXEC

[4]动态SQL

1)动态SQL预备语句

EXEC SQL PREPARE <动态SQL语句名> FROM<共享变量或字符串>

2)动态SQL执行语句

EXEC SQL EXECUTE <动态SQL语句名>

原创文章,若要转载,请注明Villion.

你可以通过这个链接引用该篇文章:http://villione.bokee.com/viewdiary.16005317.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值