1. MSSQL概述
Microsoft SQL Server (MSSQL) 是一个关系型数据库管理系统,它是由 Microsoft 公司开发的。该数据库管理系统使用托管代码和 T-SQL 语言来支持数据存储、重复性查找、同步处理等操作,在企业中被广泛使用。
2. MSSQL基本语法
2.1 创建数据库
在 MSSQL 中,要创建一个新的数据库,可以使用以下的 SQL 语句:
CREATE DATABASE [database_name];
在该语句中,[database_name]
是指要创建的数据库名称。
例如:
CREATE DATABASE testDB;
请注意,在 SQL 语句中,语句必须以分号结束。
2.2 创建表
要在 MSSQL 中创建一个新的表,可以使用以下的 SQL 语句:
CREATE TABLE [table_name] (
[column_1] [data_type_1] [null_or_not],
[column_2] [data_type_2] [null_or_not],
...,
[column_n] [data_type_n] [null_or_not]
);
在该语句中,[table_name]
是指要创建的表名称,而方括号中的[column_i]
表示表中的列名,[data_type_i]
是列中的数据类型,而[null_or_not]
则表示该列是否允许为空。
例如:
CREATE TABLE employees (
id INT PRIMARY KEY NOT NULL,
name VARCHAR(50) NOT NULL,
age INT NOT NULL,
gender CHAR(1) NOT NULL,
address VARCHAR(100) NULL
);
在上述语句中,创建了一个名称为 employees
的表,该表包含 5 列,其中 id
列为主键列、不允许为空,name
列、age
列、gender
列都不允许为空,而address
列可以为空。
2.3 插入数据
要向 MSSQL 的表中插入数据,可以使用以下的 SQL 语句:
INSERT INTO [table_name] ([column_1], [column_2], ..., [column_n])
VALUES ([value_1], [value_2], ..., [value_n]);
在该语句中,[table_name]
是指要插入数据的表名称,而方括号中的[column_i]
是表中的列名,方括号中的[value_i]
则是要插入的值。
例如:
INSERT INTO employees (id, name, age, gender, address)
VALUES (1, 'Alice', 21, 'F', '123 Main St');
INSERT INTO employees (id, name, age, gender, address)
VALUES (2, 'Bob', 25, 'M', '456 Broadway');
在上述语句中,向 employees
表中插入了两行记录。
2.4 更新数据
要在 MSSQL 中更新一条或多条记录,可以使用以下的 SQL 语句:
UPDATE [table_name]
set [column_1] = [new_value_1], [column_2] = [new_value_2], ..., [column_n] = [new_value_n]
WHERE [condition];
在该语句中,[table_name]
是指要更新的表名称,方括号中的[column_i]
是表中的列名,[new_value_i]
则是要更新的新值,以及[condition]
是指要更新的记录的筛选条件。
例如:
UPDATE employees
SET age = 26
WHERE name = 'Bob';
在上述语句中,将employees
表中所有name
列值为'Bob'
的记录中的age
列值更新为了 26。
2.5 删除数据
要在 MSSQL 中删除一条或多条记录,可以使用以下的 SQL 语句:
DELETE FROM [table_name]
WHERE [condition];
在该语句中,[table_name]
是指要删除记录的表名称,以及[condition]
是指要删除的记录的筛选条件。
例如:
DELETE FROM employees
WHERE name = 'Bob';
在上述语句中,将employees
表中所有name
列值为'Bob'
的记录删除。
3. MSSQL实例操作
3.1 查询数据库
在 MSSQL 中,查询已存在的数据库可以使用以下 SQL 语句:
select [name]
from sys.databases
where [name] not in ('master', 'tempdb', 'model', 'msdb')
order by [name];
在该语句中,sys.databases
是系统表,用于存储 MSSQL 中的所有数据库的列表,而[name]
则是该表中的一列,用于存储数据库的名称。 not in ('master', 'tempdb', 'model', 'msdb')
是一条筛选条件,用于排除系统自带的数据库。而 order by [name]
则为查询结果排序。
3.2 查看表结构
在 MSSQL 中,可以使用以下的 SQL 语句来查看表的结构:
sp_help [table_name];
在该语句中,[table_name]
是指想要查看其结构的表的名称。
例如:
sp_help employees;
该语句返回一个结果集,其中包含了该表的列名、数据类型、长度、是否可以为空等信息。
3.3 连接多个表
在 MSSQL 中,JOIN
语句用于连接多个表。可以使用以下的 SQL 语句来查看两个表之间的关联信息:
SELECT *
FROM employees
JOIN departments ON employees.department_id = departments.department_id
在该语句中,employees
和 departments
是需要要连接的表,JOIN
关键字指定了需要进行的连接方式,而ON
关键字指定了连接两个表的条件。
的查询返回一个结果集,其中包含了两个表连接后的所有列。
3.4 创建触发器
在 MSSQL 中,触发器可以用于插入、更新或删除表中的数据时执行特定的操作。
创建触发器,可以使用以下 SQL 语句:
CREATE TRIGGER [trigger_name]
ON [table_name]
AFTER INSERT, UPDATE, DELETE
AS
BEGIN
-- trigger body
END;
在该语句中,[trigger_name]
是指要创建的触发器的名称,[table_name]
是指与触发器关联的表的名称。而 AFTER INSERT, UPDATE, DELETE
则是指触发器在哪些操作之后执行。
例如:
CREATE TRIGGER update_employee_count
ON departments
AFTER INSERT, UPDATE, DELETE
AS
BEGIN
UPDATE departments
SET employee_count =
(SELECT COUNT(*)
FROM employees
WHERE employees.department_id = departments.department_id)
END;
在上述的例子中,如果departments
表中有行受到了每一个insert
,update
,和delete
操作的影响,那么触发器就会运行,计算有多少employees.department_id
与前一个涉及的department_id相同,然后更新部门中employee_count列的值。
结语
本文中介绍的是 MSSQL 的基本语法以及一些常见的实例操作,主要包括创建数据库、创建表、插入数据、更新或删除数据、查询数据库、查看表结构、连接多个表以及创建触发器等操作。这些语法和操作在业务中都是非常实用的,学习和掌握它们对日常数据库管理和应用程序开发都有很重要的意义。