SQL Server小白入门命令教程,看这篇就够啦!

SQL Server 阅读(6) 3小时前 更新 扫码查看网页

一、核心基础:数据库与表的操作

1. 创建数据库

CREATE DATABASE School;

2. 使用数据库 & 删除数据库

USE School;                -- 切换到School数据库

DROP DATABASE School;      -- 删除数据库(慎用)

3. 创建表

CREATE TABLE Students (
    ID INT PRIMARY KEY,            -- 整数类型,主键
    Name NVARCHAR(50) NOT NULL,    -- 可变长度Unicode字符串,不能为空
    Age INT,
    EnrollmentDate DATE
);

4. 修改表结构

-- 添加列
ALTER TABLE Students ADD Email NVARCHAR(100);

-- 修改列类型
ALTER TABLE Students ALTER COLUMN Age SMALLINT;

-- 删除列
ALTER TABLE Students DROP COLUMN Email;

-- 删除表
DROP TABLE Students;

二、数据增删改查(CRUD)

1. 插入数据(INSERT)

-- 插入完整行
INSERT INTO Students (ID, Name, Age, EnrollmentDate)
VALUES (1, '张三', 20, '2023-09-01');

-- 插入多行
INSERT INTO Students (ID, Name, Age, EnrollmentDate)
VALUES 
(2, '李四', 21, '2023-09-01'),
(3, '王芳', 19, '2024-09-01');

-- 省略列名(必须为所有列提供值)
INSERT INTO Students VALUES (4, '赵明', 22, '2023-09-01');

2. 查询数据(SELECT)

-- 查询所有列
SELECT * FROM Students;

-- 查询特定列
SELECT Name, Age FROM Students;

-- 带条件查询
SELECT * FROM Students WHERE Age > 20;

-- 模糊查询(%代表任意字符)
SELECT * FROM Students WHERE Name LIKE '张%';

-- 排序(DESC降序,ASC升序默认可省略)
SELECT * FROM Students ORDER BY Age DESC;

-- 只返回前N行
SELECT TOP 3 * FROM Students;

-- 去重
SELECT DISTINCT Age FROM Students;

3. 更新数据(UPDATE)

-- 更新指定行
UPDATE Students 
SET Age = 21, EnrollmentDate = '2024-09-01'
WHERE ID = 3;

-- 无条件更新(更新所有行,慎用!)
UPDATE Students SET Age = 18;

4. 删除数据(DELETE)

-- 删除指定行
DELETE FROM Students WHERE ID = 4;

-- 删除所有行(保留表结构)
DELETE FROM Students;

-- 更快的删除所有行(不能带WHERE,无法回滚)
TRUNCATE TABLE Students;

三、常用函数与运算符

1. 字符串函数

SELECT LEN('Hello') AS 长度;           -- 5
SELECT UPPER('sql') AS 大写;           -- SQL
SELECT SUBSTRING('Database', 1, 4) AS 子串; -- Data
SELECT CONCAT('SQL', ' ', 'Server') AS 拼接; -- SQL Server

2. 日期函数

SELECT GETDATE() AS 当前时间;                    -- 2025-01-15 14:30:25
SELECT YEAR('2025-01-15') AS 年份;               -- 2025
SELECT DATEDIFF(DAY, '2024-01-01', '2025-01-01') AS 天数差; -- 366
SELECT DATEADD(MONTH, 3, GETDATE()) AS 三个月后;

3. 聚合函数

SELECT 
    COUNT(*) AS 总行数,
    AVG(Age) AS 平均年龄,
    MAX(Age) AS 最大年龄,
    MIN(Age) AS 最小年龄,
    SUM(Age) AS 年龄总和
FROM Students;

四、高级一点但常用的查询

1. 分组(GROUP BY)

-- 按年龄分组统计人数
SELECT Age, COUNT(*) AS 人数
FROM Students
GROUP BY Age;

2. 分组后筛选(HAVING)

-- 筛选出人数大于1的年龄组
SELECT Age, COUNT(*) AS 人数
FROM Students
GROUP BY Age
HAVING COUNT(*) > 1;

3. 多表连接(JOIN)

-- 假设有班级表 Classes (ID, ClassName)
SELECT S.Name, C.ClassName
FROM Students S
INNER JOIN Classes C ON S.ClassID = C.ID;

4. 联合查询(UNION)

SELECT Name FROM Students
UNION              -- 去重合并
SELECT TeacherName FROM Classes;

-- UNION ALL 包含重复行

五、实用管理命令

1. 查看所有数据库

SELECT name FROM sys.databases;
-- 或执行存储过程
EXEC sp_databases;

2. 查看当前数据库的所有表

SELECT name FROM sys.tables;
-- 或
SELECT * FROM INFORMATION_SCHEMA.TABLES;

3. 查看表结构

EXEC sp_columns Students;
-- 或
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'Students';

4. 删除数据但保留结构(重置表)

TRUNCATE TABLE Students;  -- 比 DELETE 快,不能带WHERE,主键会重置

六、SQL Server 特殊命令与技巧

1. TOP 结合 PERCENT(百分比)

SELECT TOP 10 PERCENT * FROM Students;  -- 返回前10%的行

2. NEWID() 随机排序

SELECT TOP 5 * FROM Students ORDER BY NEWID();  -- 随机取5行

3. IIF 条件函数(类似Excel)

SELECT Name, IIF(Age >= 18, '成年', '未成年') AS 年龄状态 FROM Students;

4. 使用 GO 批处理分隔符

SSMS中使用 GO 分隔不同的批处理(比如先创建表再插入)。

七、错误处理与事务

基本事务操作(确保数据一致性)

BEGIN TRANSACTION;

    UPDATE Students SET Age = 23 WHERE ID = 1;
    -- 假设下面出错
    UPDATE Students SET Age = 'ABC' WHERE ID = 1;  -- 类型错误

-- 检查后再决定
COMMIT TRANSACTION;   -- 提交
-- 或
ROLLBACK TRANSACTION; -- 回滚撤销

快速记忆口诀

  • CRUD:增INSERT、删DELETE、改UPDATE、查SELECT
  • WHERE 条件行, GROUP BY 分组行, HAVING 组过滤, ORDER BY 最后行
  • JOIN 连表需条件, ON 后面是关键
  • 主键 唯一且非空, NULL 要格外小心(判断空用 IS NULL / IS NOT NULL)

最后提醒

  1. 千万别在生产库直接运行 DELETE 或 UPDATE 不带 WHERE!
  2. SQL 不区分大小写,但字符串值区分(取决于排序规则)
  3. 字符串用单引号:'张三'
  4. 注释:-- 单行注释,/* 多行注释 */

把上面的例子在SSMS里敲一遍,你就从"完全不懂"变成了"能干活"的新手!遇到报错先看消息窗口,一般是语法错误、列名/表名拼写错误或类型不匹配。


#SQL Server

本文标题:SQL Server小白入门命令教程,看这篇就够啦!
本文链接:https://www.befun.ink/detail/20235.html
声明:本站信息原创或由互联网收集,未用于商业用途,如若侵权,请联系站长删除!