SQL Server小白入门命令教程,看这篇就够啦!
一、核心基础:数据库与表的操作
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 Server2. 日期函数
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)
最后提醒
- 千万别在生产库直接运行 DELETE 或 UPDATE 不带 WHERE!
- SQL 不区分大小写,但字符串值区分(取决于排序规则)
- 字符串用单引号:'张三'
- 注释:-- 单行注释,/* 多行注释 */
把上面的例子在SSMS里敲一遍,你就从"完全不懂"变成了"能干活"的新手!遇到报错先看消息窗口,一般是语法错误、列名/表名拼写错误或类型不匹配。
#SQL Server
本文标题:SQL Server小白入门命令教程,看这篇就够啦!
本文链接:https://www.befun.ink/detail/20235.html
声明:本站信息原创或由互联网收集,未用于商业用途,如若侵权,请联系站长删除!

相关文章