SqlServer在工作中常用相关操作
增删查改
增加
增加主键
ALTER TABLE 表名 ADD CONSTRAINT 主键名称 PRIMARY KEY (列名)
CREATE TABLE 表名(
列名1 数据类型 PRIMARY KEY,
列名2 数据类型,
...
)
增加索引
-- 聚集索引是主键
CREATE CLUSTERED INDEX cx_name1 ON table_name (primary_key_column);
-- 唯一索引
CREATE UNIQUE INDEX UQ_name2 ON table_name (only_one_column);
-- 非聚集索引
CREATE INDEX IX_name3 ON table_name (FirstName, LastName);
增加字段
ALTER TABLE 表名
ADD 新字段名 数据类型 [NULL | NOT NULL] [CONSTRAINT 约束名 约束类型];
设置字段默认值
ALTER TABLE Employees
ADD CONSTRAINT DF_Employees_Age DEFAULT 30 FOR Age;
增加视图
CREATE VIEW View_Name AS
SELECT COLUMN_NAME1,COLUMN_NAME2
FROM table_name
WHERE name like "%XX%";
查询
查询表主键
SELECT
TABLE_NAME,
COLUMN_NAME
FROM
INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
TABLE_NAME = 'Test_UserInfo' -- 替换为您要查询的表名,或者去掉该条件以查询所有表
ORDER BY
TABLE_NAME,
COLUMN_NAME;
类似mysql的limit, 查询表特定行, 分页
ORDER BY是必须的,因为OFFSET和FETCH子句是基于排序后的结果集工作的。如果没有ORDER BY子句,SQL Server将会返回任意的行,这可能不是你想要的结果
SELECT *
FROM table_name
ORDER BY filed_name
OFFSET 10 ROWS
FETCH NEXT 5 ROWS ONLY;
修改
修改字段名
EXEC sp_rename '表名.旧字段名', '新字段名', 'COLUMN';
修改字段类型
ALTER TABLE 表名
ALTER COLUMN 列名 新数据类型;
删除
删除行
DELETE FROM 表名 WHERE 条件;
删除字段
ALTER TABLE 表名
DROP COLUMN 字段名;
删除约束
ALTER TABLE HrrTest_UserInfo
drop CONSTRAINT DF_userPassword;
清空表和自增值
TRUNCATE TABLE table_name
存储过程
临时表
处理json字符串
没有嵌套的json字符串
DECLARE @Json NVARCHAR(MAX)
SET @Json = '{"OrderId": "123", "OrderDate": "2021-04-21T12:00:00", "Items": [{"ItemId": "1","Quantity": 2},{"ItemId": "3","Quantity": 4}]}'
SELECT *
FROM OPENJSON(@Json)
嵌套json的json串
SELECT *
FROM OPENJSON(@Json, '$.Items')
WITH (
ItemId INT 'strict $.ItemId',
Quantity INT 'strict $.Quantity'
)