Closed Meli55a closed 8 years ago
是网页上这么显示么?能否给个链接?
我想看看自己的用户名
我的博客是:wncbl.cn, 看这篇文章:http://wncbl.cn/posts/947ac39b/
我怀疑是CSS style的问题。能贴下MD文件么?
非常感谢您的关注! 我把事情经过详细说一下,然后再贴 MD。 上周重装系统,我的系统是 win10,在重装的时候我备份了网站和主题的配置文件。 重装后,先配置 git,由于我对git不熟(大菜逼一枚),就安装了 github for desktop,但由于下载速度非常慢,加了host也没用,所以就找了一个 离线安装包,然后一路配置过来。 期间遇到过一些问题,像什么 ssh 公钥啊,还有一个就是 linux 和 windows 换行符不同(用 github for desktop 自带的 gitshell),但用 gitbash 就没有问题。由于我是双线部署的,国内的就放到 coding.net,但忘了那玩意儿不是及时生效的,我就以为出了问题,不停的删了重来,结果第二天自己好了。 我用的是Next主题,除了主题配置文件,其实全是重新下载的,而且“.deploy_git”文件也是重新生成的,所以问题应该不在主题这边。 一个比较重要点就是,我在重新部署时,在如下部分卡住好长时间:
INFO Generated: vendors/fancybox/source/helpers/jquery.fancybox-media.js
INFO Generated: vendors/fancybox/source/helpers/jquery.fancybox-thumbs.css
INFO Generated: vendors/fancybox/source/helpers/jquery.fancybox-thumbs.js
INFO Generated: vendors/ua-parser-js/dist/ua-parser.min.js
INFO Generated: vendors/fastclick/lib/fastclick.js
INFO Generated: vendors/font-awesome/css/font-awesome.min.css
INFO Generated: vendors/font-awesome/css/font-awesome.css
INFO Generated: vendors/fancybox/source/jquery.fancybox.js
...
具体的位置当时没有截图,我等了好长时间一直没动静,我就直接把窗口关了,所以我怀疑是不是哪部分的缓存导致的。MD文件都是之前备份的,配置好后直接放到 “_posts”文件夹下的。
---
title: SQL server 常用命令
categories: 编程
tags:
- SQL Server
- 常用命令
abbrlink: 947ac39b
date: 2016-09-23 22:52:31
---
> 花了几天的时间,将《SQL必知必会(第4版)》过了一遍,一本非常适合 SQL 入门的一本书,没有废话,直奔主题,全面的介绍了 SQL 必须掌握的知识,实例为辅,有种相见恨晚的感觉,为了加深印象,搜罗了一篇 SQL Server 常用命令。
先放上《SQL必知必会(第4版)》的电子书,PDF + MOBI格式电子书 + 示例数据库 sql 语句 [**传送门**](https://yunpan.cn/ckXzpBRrnPeis) 访问密码: **` 89bf`**
## 基础命令
### 数据库的创建与删除
`` `SQL
CREATE DATABASE db1; -- 创建数据库db1
DROP DATABASE db1; -- 删除数据库db1
`` `
### 数据库的创建与删除
`` `SQL
CREATE TABLE t1( -- 创建数据表 t1, t1 包含两个字段
col1 varchar(100),
col2 int
);
DROP TABLE t1; -- 删除数据表 t1
`` `
<!-- more -->
### 创建两表之间的外键关联
`` `SQL
CREATE TABLE t2( -- 创建主表
t2_c1 char(8) PRIMARY KEY, -- 定义主键
t2_c2 int
);
CREATE TABLE t3(
t3_c1 char(8),
t3_c2 int,
FOREING KEY(t3_c1) REFERENCES t2(t2_c1) -- 定义外键
);
DROP TABLE t3, t2; -- t3 应先于 t2 被删除
`` `
### 索引的创建与删除
`` `SQL
CREATE INDEX index1 ON t1(col1); -- 创建非聚集索引 index1
DROP INDEX index1 ON t1; -- 删除非聚集索引 index1
`` `
### 视图的创建与删除
`` `SQL
CREATE VIEW view1 AS SELECT * FROM t1; -- 创建视图 view1
DROP VIEW view1; -- 删除视图 view1
`` `
### 超级用户的创建与删除
`` `SQL
CREATE LOGIN log1 -- 创建名为log1的登录
WITH PASSWORD = "123456", -- 密码为 123456
DEFAULT_DATABASE = db1; -- 默认数据库为 db1
GO
EXEC sp_addrolemember "log1", "sysadmin"; -- 赋最高权限
GO
DROP LOGIN log1; -- 删除登录 log1
`` `
### 数据库用户的创建、授权与删除
`` `SQL
CREATE LOGIN mylog WITH PASSWORD = "123456"; -- 先创建一个登录
DEFAULT_DATABASE = db1;
GO
USE db1;
GO
CREATE USER user1 FOR LOGIN mylog; -- user依赖于mylog
GO
GRANT CREATE TABLE, CREATE VIEW, CREATE PROCEDURE, ALTER ANY SCHEMA TO user1; -- 授权
GO
DROP USER user1; -- 删除用户 user1
DROP LOGIN mylog; -- 删除登录 mylog
`` `
### 数据库的备份与还原
`` `SQL
USE master;
GO
ALTER DATABASE db1 SET RECOVERY SIMPLE; -- 切换到简单恢复模式下
GO
BACKUP DATABASE db1 -- 将数据库 db1 完整备份到文件
db1_disk.bak -- 备份文件的名称
TO DISK = "D:\Backup\db1_disk.bak" -- 设置备份文件存放路径
WITH FORMAT;
-------------------------------------------------------------
USE master;
GO
EXEC sp_addumpdevice 'disk', 'db1_simple', 'D:\Backup\db1_disk.bak';
GO
RESTORE DATABASE db1 -- 利用备份文件db1_disk.bak完整还原 db1
FROM db1_simple;
`` `
### 数据库的分享与附加
`` `SQL
USE master;
GO
EXEC sp_detach_db 'db1', NULL, 'true'; -- 分离数据库
-- 利用分离得到的 dbl.mdf 进行附加
DECLARE @data_path navrchar(256);
SET @data_path = 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\';
EXEC ('CREATE DATABASE db1
ON (FILENAME = '''+ @data_path + 'db1.mdf'')
FOR ATTACH');
GO
`` `
### 存储过程的创建、调用和删除
`` `SQL
CREATE PROCEDURE MyPro -- 定义带两个参数的存储过程
@min_avgrade numeric(3,1),
@max_avgrade numeric(3,1)
AS
SELECT s_no,s_name,s_sex,s_avgrade,s_dept
FROM student
WHERE s_avgrade>=@min_avgrade AND s_avgrade<=@max_avgrade;
----------------------------------------------------------
EXEC MyPro 50,88.8; -- 调用存储过程
----------------------------------------------------------
DROP PROCEDURE MyPro -- 删除存储过程
`` `
### 触发器的创建、应用和删除
`` `SQL
CREATE TRIGGER MyTrigger ON t1 -- 创建触发器
AFTER DELETE
AS
BEGIN
PRINT '有人删除表t1 中的数据!'
END
--------------------------------------------------
-- 当执行 DELETE 语句时,该触发器被触发,如:
DELETE FROM t1;
--------------------------------------------------
DROP TRIGGER MyTrigger; -- 删除触发器
`` `
### 游标的创建、应用和删除
`` `SQL
DECLARE MyCursor -- 创建游标
STATIC
FOR SELECT col1 FROM t1;
OPEN MyCursor;
DECLARE @RowCount Integer, @i Integer, @col varchar(100);
SET @i=0
SET @RowCount = @@CURSOR_ROWS
WHILE @i<@RowCount
BEGIN
FETCH NEXT FROM MyCursor -- 将游标中的数据逐一输出
INTO @col;
PRINT @col;
SET @i=@i+1
END
CLOSE MyCursor;
DEALLOCATE MyCursor; -- 删除游标
`` `
### 查看服务器上所有的数据库
`` `SQL
SELECT *
FROM sys.databases
ORDER BY name
`` `
### 查看数据库中所有的数据表
`` `SQL
USE db1; -- 查询数据库 db1 中包含的所有数据库
SELECT * FROM sys.tables;
`` `
### 查看数据表的结构
`` `SQL
SELECT a.name 字段名, b.name 字段, a.max_length 字段长度
FROM sys.all_columns as a
JOIN sys.types as b
ON a.system_type_id = b.system_type_id
WHERE object_id = object_id('t1');
`` `
### 向数据表插入数据
`` `SQL
INSERT INTO t1 VALUES('庆祝建国六十周年!', 60); -- 向表t1插入数据
INSERT INTO t1 VALUES('北京奥运!', 29);
INSERT INTO t1 VALUES('上海世博会!', 51);
`` `
### 更新表中的数据
`` `SQL
UPDATE t1
SET col1 = '庆祝中华人民共和国建国六十周年!'
WHERE col2=60;
`` `
### 删除表中的数据
`` `SQL
DELETE FROM t1
WHERE col2=29;
`` `
### 降序、有条件查询
`` `SQL
SELECT col1, col2
FROM t1
WHERE col2 > 50
ORDER BY col2 DESC
`` `
### 等值连接查询
`` `SQL
SELECT t2.t2_c2, t2.t2_c2, t3.t3_c2
FROM t2
INNER JOIN t3
ON (t2.t2_c1 = t3.t3_c1);
`` `
### 左外连接查询
`` `SQL
SELECT t2.t2_c1, t2.t2_c2, t3.t3_c2
FROM t2
LEFT JOIN t3
ON(t2.t2_c1 = t3.t3_c1);
`` `
### 右外连接查询
`` `SQL
SELECT t2.t2_c1, t2.t2_c2, t3.t3_c2
FROM t2
RIGHT JOIN t3
ON(t2.t2_c1 = t3.t3_c1);
`` `
### 全外连接查询
`` `SQL
SELECT t2.t2_c1, t2.t2_c2, t3.t3_c2
FROM t2
FULL JOIN t3
ON(t2.t2_c1 = t3.t3_c1);
`` `
### IF 语句
`` `SQL
DECLARE @n1 int, @n2 int
SET @n1 = 2
SET @n2 = 20
IF @n1 < @n2
BEGIN
PRINT '@n1小于@n2';
END
ELSE IF @n1=@n2
BEGIN
PRINT '@n1等于@n2';
END
ELSE
BEGIN
PRINT '@n1大于@n2'
END
GO
`` `
### CASE 语句
`` `SQL
SELECT 学号 = s_no, 姓名及爱好 =
CASE s_no
WHEN '20060201' THEN '李好,游泳'
WHEN '20060202' THEN '王丫,登山'
ELSE '没有这个人'
END
FROM student
`` `
### WHILE 语句
`` `SQL
DECLARE @n int, @i int, @resulet int; -- 计算 n 的阶乘 n!
SET @n = 5;
SET @i = 1;
SET @resulet = 1;
WHILE @i <= @n
BEGIN
SET @resulet = @resulet * @i;
SET @i = @i + 1;
END
PRINT @resulet
`` `
### 字符串数据和数值型数据的转换
`` `SQL
DECLARE @f float, @s varchar(20); -- 数值型数据 → 字符串数据
SET @f=3.14159;
SET @s=CONVERT(varchar(20),@f);
--------------------------------------------------
DECLARE @f float, @s varchar(20); -- 字符串数据 → 数值型数据
SET @s='1.73205';
SET @f=CONVERT(float,@s);
`` `
### 时间类型数据和字符串类型数据的转换
`` `SQL
DECLARE @dt datetime, @str varchar(30); -- 时间数据 → 字符串数据
SET @dt=GETDATE();
SET @str=CONVERT(varchar(30), @dt, 114);
SET @str=CONVERT(varchar(30), @dt, 111);
PRINT @str
--------------------------------------------------
DECLARE @dt datetime, @str varchar(30); -- 字符串数据 → 时间数据
SET @str = '2009/09/12';
SET @dt=CONVERT(datetime, @str);
PRINT @dt;
`` `
### 获取服务器、数据库、应用程序、用户、登录等名称
`` `SQL
PRINT HOST_NAME(); -- 获取服务器名
PRINT DB_NAME(); -- 获取数据库名
PRINT APP_NAME(); -- 获取应用程序名
PRINT USER_NAME(); -- 获取数据库用户名
PRINT SUSER_SNAME(); -- 获取登录名
`` `
## 系统视图,系统表,系统存储过程的使用
### 获取数据库中的用户表信息
#### 获取特定库中所有用户表信息
`` `SQL
SELECT * FROM sys.tables
SELECT * FROM sys.objects WHERE type='U' -- 用户表
-- 第二条语句中当type='S'时是系统表
`` `
#### 获取表的字段信息
`` `SQL
SELECT * FROM sys.columns
WHERE object_id=object_id('表名')
SELECT * FROM syscolumns
WHERE id=OBJECT_ID('表名')
`` `
#### 获取当前库中表的字段及类型信息
`` `SQL
SELECT '字段名'=a.name,
'类型名'=b.name,
'字段长度'=a.max_length,
'参数顺序'=a.column_id
FROM sys.columns a
LEFT JOIN sys.types b ON a.user_type_id=b.user_type_id
WHERE object_id=object_id('表名')
-- syscolumns与sys.columns表用法类似。
`` `
### 获取索引或主键信息
#### 获取对象及对应的索引的信息
`` `SQL
SELECT '对象名'= A.name,
'对象类型'= a.type,
'索引名'= B.name,
'索引类型'= CASE b.type
WHEN 1 THEN '聚集索引'
WHEN 2 THEN '非聚集索引'
WHEN 3 THEN 'xml索引'
ELSE '空间索引'
END,
'主键否' = CASE
WHEN b.is_primary_key=1 THEN '主键'
ELSE ''
END
FROM sys.objects A
JOIN sys.indexes B ON A.object_id=B.object_id
WHERE A.type='U'
AND B.name IS NOT NULL
ORDER BY a.name
`` `
#### 获取表的主键及对应的字段
`` `SQL
SELECT '表名'=d.name ,
'主键名'=a.name,
'字段名'=c.name
FROM sys.indexes a
JOIN sys.index_columns b ON a.object_id=b.object_id
AND a.index_id=b.index_id
JOIN sys.columns c ON a.object_id=c.object_id
AND c.column_id=b.column_id
JOIN sys.objects d ON d.object_id=c.object_id
WHERE a.is_primary_key=1
------------------------------------------------------
SELECT '表名'=OBJECT_NAME(b.parent_obj),
'主键名'=c.name,
'字段名'=a.name
FROM syscolumns a,
sysobjects b,
sysindexes c,
sysindexkeys d
WHERE b.xtype = 'PK'
AND b.parent_obj = a.id
AND c.id = a.id
AND b.name = c.name
AND d.id = a.id
AND d.indid = c.indid
AND a.colid = d.colid
------------------------------------------------------
SELECT '所属架构'=s.name ,
'表名'=t.name,
'主键名'=k.name ,
'列名'=c.name,
'键列序数'=ic.key_ordinal
FROM sys.key_constraints AS k
JOIN sys.tables AS t
ON t.object_id = k.parent_object_id
JOIN sys.schemas AS s
ON s.schema_id = t.schema_id
JOIN sys.index_columns AS ic
ON ic.object_id = t.object_id
AND ic.index_id = k.unique_index_id
JOIN sys.columns AS c
ON c.object_id = t.object_id
AND c.column_id = ic.column_id
WHERE k.type = 'pk';
------------------------------------------------------
-- 使用系统存储过程获取指定表的主键信息
EXEC sp_pkeys '表名' -- 表名只能是当前数据库下的单独表名不能带上架构名
`` `
#### 查询哪些表创建了主键
`` `SQL
SELECT '表名'=a.name
FROM
(SELECT name,
object_id
FROM sys.objects
WHERE TYPE='u') a
LEFT JOIN sys.indexes b ON a.object_id=b.object_id
AND b.is_primary_key=1
WHERE b.name IS NOT NULL
-- 注:查询哪些表没有创建主键,将WHERE条件改成 IS NULL 即可。
`` `
### 查看视图信息
#### 查看视图属性信息
`` `SQL
EXEC sp_help '视图名'
`` `
#### 查看创建视图脚本
`` `SQL
EXEC sp_helptext '视图名'
`` `
#### 查看当前数据库所有视图基本信息
`` `SQL
SELECT * FROM sys.views
SELECT * FROM sys.objects
WHERE TYPE='V'
SELECT *
FROM INFORMATION_SCHEMA.VIEWS
`` `
#### 查看视图对应的字段及字段属性
`` `SQL
SELECT '视图名'=a.name,
'列名'=b.name,
'字段类型'=TYPE_NAME(b.system_type_id),
'字段长度'=b.max_length
FROM sys.views a
JOIN sys.columns b ON a.object_id=b.object_id
ORDER BY a.name
`` `
#### 获取视图中的对象信息
`` `SQL
EXEC sp_depends '视图名'
`` `
### 查看存储过程信息
#### 基本信息
`` `SQL
SELECT * FROM sys.procedures
SELECT * FROM sys.objects
WHERE TYPE='P'
`` `
#### 查看存储过程创建文本
`` `SQL
sp_helptext 存储过程名称
SELECT text
FROM syscomments
WHERE id=object_id (存储过程名称)
`` `
#### 查看存储过程的参数信息
`` `SQL
SELECT '参数名称' = name,
'类型' = type_name(xusertype),
'长度' = LENGTH, '参数顺序' = colid
FROM syscolumns
WHERE id=object_id(存储过程名称)
---------------------------------------------------------------------------------------------------
SELECT '参数名称' = name,
'类型' = type_name(system_type_id),
'长度' = max_length,
'参数顺序' =parameter_id
FROM sys.parameters
WHERE object_id=object_id(存储过程名称) -- 返回当前环境中可查询的指定表或视图的列信息。
EXEC sp_columns 表名
SELECT * FROM sys.columns WHERE object_id=OBJECT_id(表名)
SELECT * FROM sys.syscolumns WHERE id=OBJECT_ID(表名)
SELECT * FROM information_schema.columns WHERE TABLE_NAME=表名 -- 查询存储过程或函数的参数的详细信息
SELECT * FROM sys.parameters WHERE object_id=object_id(函数或存储过程名称)
`` `
### 获取触发器的相关信息
#### 查看触发器定义及相关属性信息
`` `SQL
EXEC sp_help '触发器名'
-- 查看表中指定类型的触发器的属性信息
EXEC sp_helptrigger ['表名'][,['触发器类型']]
--参数2可选,省略参数2时返回该表中所有类型的触发器属性
`` `
#### 获取触发器的创建脚本
`` `SQL
EXEC sp_helptext '触发器名'
`` `
#### 查看表中禁用的触发器
`` `SQL
SELECT name
FROM sys.triggers
WHERE parent_id=object_id('表名')
AND is_disabled=1
-- 注:is_disabled=0时为启用的触发器。
`` `
#### 获取触发器的父类名,触发器名,触发器状态和触发器类型信息
`` `SQL
SELECT '父类名'=a.name,
'对象类型'=a.type,
'触发器名'=b.name,
'触发器状态'=CASE
WHEN b.is_disabled=1
THEN'禁用'
ELSE '启用'
END,
'触发器类型'=CASE
WHEN b.is_instead_of_trigger=1
THEN 'instead of'
ELSE 'after'
END
FROM sys.objects a
JOIN sys.triggers b ON a.object_id=b.parent_id
-- 注:查询单个表或视图的触发器信息加上a.object_id=object_id(表名)条件
`` `
#### 禁用和启用触发器命令
`` `SQL
-- 禁用:
ALTER TABLE表名disable TRIGGER触发器名
-- 启用:
ALTER TABLE表名enable TRIGGER触发器名
-- 注:禁用或启用多个触发器,触发器名之间用逗号隔开,禁用或启用表中全部触发器,将触发器名换成ALL。
`` `
#### 指定第一个或最后一个触发的AFTER触发器。
`` `
EXEC sp_settriggerorder '触发器名', '执行顺序', '触发事件'
-- 查询触发触发器的对应事件
SELECT * FROM sys.trigger_events
WHERE object_id=object_id('触发器名')
`` `
#### 重命名触发器
`` `SQL
EXEC sp_rename 旧名,新名
`` `
### 查看数据库关于权限的信息
`` `SQL
--查询当前数据库角色信息
EXEC sp_helprole 角色名
--提供有关每个数据库中的登录及相关用户的信息
EXEC sp_helplogins 登录名
--报告有关当前数据库中数据库级主体的信息。
EXEC sp_helpuser 当前数据库用户或角色名
--返回有关当前数据库中某个角色的成员的信息
EXEC sp_helprolemember 角色名
--返回SQL Server 固定服务器角色的列表
EXEC sp_helpsrvrole 固定服务器角色名
`` `
看不出有什么问题……会不会有cache的CSS style文件在server?
那有没有办法清理呢?能否可以把本地的 hexo 再重装安装一遍?
内嵌代码用 ''' 文本 ''' 会不会是这个问题
应该还是哪里的缓存的问题,这些文章之前显示是没有问题的
@backeyshy 那个 ``` 是我改的为了显示方便
@Meli55a 可否试一下deploy到一个新的folder,看看问题是否能解决?
重新安装了hexo,最终问题解决,感谢@NoahDragon 的回复,使我没有放弃hexo而投入wordpress!摸摸大!
👍 解决了就好~
我hexo g后,生成的所有html文件导入js标签后面有?v=x.x.x。导致页面文件404,页面空白,大牛请问咋回事??
hexo s显示正常
@allennic ?=
应该对js文件路径没有影响,只是一种强制浏览器更新缓存的方法。对于页面404,请到public目录下看相应的文件是否生成?
另:请单开Issue,防止跑偏。
Node version
Plugin version(
npm ls --depth 0
)