SQLserver增删查改语句
SQL Server 是一种关系数据库管理系统,用于存储、管理和检索数据。以下是一些基本的 SQL 语句,用于在 SQL Server 中执行增删查改操作:
-
插入数据(Insert)
-
插入完整行:
INSERT INTO 表名 (列1, 列2, 列3, ...) VALUES (值1, 值2, 值3, ...);
-
插入多行:
INSERT INTO 表名 (列1, 列2, 列3, ...) VALUES (值1a, 值2a, 值3a, ...), (值1b, 值2b, 值3b, ...), (值1c, 值2c, 值3c, ...);
-
-
查询数据(Select)
-
选择所有列:
SELECT * FROM 表名;
-
选择特定列:
SELECT 列1, 列2 FROM 表名;
-
条件查询:
SELECT * FROM 表名 WHERE 条件;
-
-
更新数据(Update)
-
更新符合条件的行:
UPDATE 表名 SET 列1 = 值1, 列2 = 值2 WHERE 条件;
-
-
删除数据(Delete)
-
删除符合条件的行:
DELETE FROM 表名 WHERE 条件;
-
-
创建表(Create Table)
-
创建新表:
CREATE TABLE 表名 ( 列1 数据类型, 列2 数据类型, ... );
-
-
修改表结构(Alter Table)
-
添加新列:
ALTER TABLE 表名 ADD 新列名 数据类型;
-
删除列:
ALTER TABLE 表名 DROP COLUMN 列名;
-
-
删除表(Drop Table)
-
删除表:
DROP TABLE 表名;
-
-
使用事务(Transaction)
-
开始事务:
BEGIN TRANSACTION;
-
提交事务:
COMMIT TRANSACTION;
-
回滚事务:
ROLLBACK TRANSACTION;
-
SQLserver的数据类型
SQL Server 提供了多种数据类型,用于存储不同类型的数据。以下是一些常见的 SQL Server 数据类型:
-
数值数据类型:
-
BIT
:布尔值(0 或 1)。 -
TINYINT
:8位无符号整数,范围从 0 到 255。 -
SMALLINT
:16位整数,范围从 -32,768 到 32,767。 -
INT
:32位整数,范围从 -2^31 到 2^31-1。 -
BIGINT
:64位整数,范围从 -2^63 到 2^63-1。 -
DECIMAL
或NUMERIC
:固定精度和标度的数值数据类型。(128位) -
FLOAT
或REAL
:浮点数。 -
SMALLMONEY
:小货币值,范围从 -214,748.3648 到 214,748.3647。 -
MONEY
:货币值,范围从 -922,337,203,685,477.5808 到 922,337,203,685,477.5807。
-
-
日期和时间数据类型:
-
DATE
:固定日期格式(YYYY-MM-DD)。 -
TIME
:时间值,精度为 100 纳秒。 -
DATETIME
:日期和时间值,精度为 3.33 微秒。 -
DATETIME2
:日期和时间值,支持更高的精度。 -
DATETIMEOFFSET
:日期和时间值,带有时区偏移量。
-
-
字符数据类型:
-
CHAR
:固定长度的非 Unicode 字符数据。 -
VARCHAR
:可变长度的非 Unicode 字符数据。 -
TEXT
:大量非 Unicode 字符数据。 -
NCHAR
:固定长度的 Unicode 字符数据。 -
NVARCHAR
:可变长度的 Unicode 字符数据。 -
NTEXT
:大量 Unicode 字符数据。
-
-
二进制数据类型:
-
BINARY
:固定长度的二进制数据。 -
VARBINARY
:可变长度的二进制数据。 -
IMAGE
:大量二进制数据。
-
-
其他数据类型:
-
CURSOR
:存储游标。 -
HIERARCHYID
:用于层次结构数据。 -
SQL_VARIANT
:可存储多种类型的值。 -
UNIQUEIDENTIFIER
:全局唯一标识符(GUID)。 -
XML
:存储 XML 数据。
-
-
大型对象数据类型(LOB):
-
VARCHAR(MAX)
:最大长度为 2^31-1 字符的可变长度非 Unicode 字符数据。 -
NVARCHAR(MAX)
:最大长度为 2^31-1 字符的可变长度 Unicode 字符数据。 -
VARBINARY(MAX)
:最大长度为 2^31-1 字节的可变长度二进制数据。 -
TEXT
、NTEXT
和IMAGE
类型在 SQL Server 2005 之后被VARCHAR(MAX)
、NVARCHAR(MAX)
和VARBINARY(MAX)
所取代,但仍然被支持。
-
-
空间数据类型:
-
GEOGRAPHY
和GEOMETRY
:用于存储空间数据。
-
-
表值参数:
-
允许将表作为参数传递给存储过程。
-
SQLserver中的多表联查
在 SQL Server 中,多表联查(也称为多表连接或 JOIN 操作)是一种将来自两个或多个表的数据组合在一起的操作。以下是 SQL Server 支持的几种主要的 JOIN 类型:
-
内连接(INNER JOIN):
-
只返回两个表中连接条件相匹配的行。
SELECT column1, column2 FROM table1 INNER JOIN table2 ON table1.common_column = table2.common_column;
-
-
左外连接(LEFT OUTER JOIN):
-
返回左表(table1)的所有行,以及右表(table2)中连接条件相匹配的行。如果右表中没有匹配的行,则结果为 NULL。
SELECT column1, column2 FROM table1 LEFT OUTER JOIN table2 ON table1.common_column = table2.common_column;
-
-
右外连接(RIGHT OUTER JOIN):
-
返回右表(table2)的所有行,以及左表(table1)中连接条件相匹配的行。如果左表中没有匹配的行,则结果为 NULL。
SELECT column1, column2 FROM table1 RIGHT OUTER JOIN table2 ON table1.common_column = table2.common_column;
-
-
全外连接(FULL OUTER JOIN):
-
返回左表和右表中所有的行。如果某一边没有匹配的行,则该边的结果为 NULL。注意:SQL Server 也直接支持 FULL OUTER JOIN,也可以通过结合 LEFT OUTER JOIN 和 RIGHT OUTER JOIN 实现。
SELECT table1.column1, table2.column2 FROM table1 LEFT OUTER JOIN table2 ON table1.common_column = table2.common_column UNION ALL SELECT table2.column2, table1.column1 FROM table1 RIGHT OUTER JOIN table2 ON table1.common_column = table2.common_column;
-
-
交叉连接(CROSS JOIN):
-
返回两个表的笛卡尔积,即每个表中的每一行与另一个表中的每一行组合。
SELECT column1, column2 FROM table1 CROSS JOIN table2;
-
-
自连接(SELF JOIN):
-
表与其自身进行连接。通常用于查询表中的相关数据。
SELECT a.column1, b.column2 FROM table1 AS a INNER JOIN table1 AS b ON a.common_column = b.another_common_column;
-
-
使用 APPLY 运算符:
-
用于将表值函数或子查询的结果与外部表进行连接。
SELECT a.column1, b.* FROM table1 AS a OUTER APPLY (SELECT * FROM table2 WHERE condition) AS b;
-
-
使用 JOIN ... WITH (index hint):
-
在 JOIN 操作中指定索引提示,以优化查询性能。
SELECT column1, column2 FROM table1 INNER JOIN table2 WITH (INDEX (index_name)) ON table1.common_column = table2.common_column;
-