SQL语句
查询、视图和游标
text::Transact——SQL
单行注释:--
(--
后面有空格,所以sql注入是 --+
)
多行注释:/**/
一、数据库
下面指的是SQL Server数据库。
1 数据库结构
数据文件
日志文件
文件组:
一个数据文件只能存在于一个文件组中,一个文件组也只能被一个数据库使用。
2 系统数据库
master数据库:核心数据库,记录所有系统级信息。包括实例范围的元数据(例如登入账户)、端点、连接服务器和系统配置信息。
model数据库:所有用户数据库的创建模板,必须始终存在于Microsoft SQL Server系统中。
msdb数据库:SQL Server Agent使用msdb数据库来计划和警报作业
tempdb数据库:用作系统的临时存储。每次重启时SQL Server都会重新创建tempdb数据库,从而获得一个干净的数据库副本。
resource数据库(只读和隐藏的数据库):包含Microsoft SQL Server中的所有系统对象。
3 创建 界面
右键数据库创建——修改数值
SQL语句
Create database 库名[ on [ filegroup 文件组名] (name = 逻辑名, filename = '路径+文件名' , size = 初始大小, maxsize = 最大大小, filegrowth = 自动增长,)] [ log on [ filegroup 文件组名] (name = 逻辑名, filename = '路径+文件名' , size = 初始大小, maxsize = 最大大小, filegrowth = 自动增长,)] [collate 数据库校验方式名称] [for attach]
案例
4 修改 界面
右键数据库属性
SQL语句
alter database 数据库名称add file(具体文件格式) [ ,...n ] [ to filegroup 文件组名] add log file(具体文件格式) [ ,...n ] | remove file 文件逻辑名称 | modify file(具体文件格式) | add filegroup 文件组名 | remove filegroup 文件组名 | modify filegroup 文件组名 { read_only | read_write , | default , | name = 新文件组名 } } ( name = 文件逻辑名称 [ , newname = 新文件逻辑名称 ] [ , size = 初始文件大小 ] [ , maxsize = 文件最大容量 ] [ , filegrowth = 文件自动增长容量] )
案例
5 删除 界面
右键数据库删除。
SQL语句
drop database 数据库名称 [,…n]
案例
6 查看 界面
右键数据库属性。
SQL语句
exec Sp_helpdb [[@dbname = ] 'name' ]exec Sp_helpfile [[@filename = ] 'name' ]exec Sp_helpfilegroup [[@filegroupname = ] 'name' ]
案例
7 迁移 界面
分离:右键数据库——任务——分离
加载:右键数据库——附加
二、数据表 1 创建 数据类型 (下面为补充类型)
类型
作用
nchar,nvarchar,ntext
Unicode字符
text / ntext
文本字符型,最大存 2 ^ 31 - 1 / 2 ^ 30 -1 个字符
money / smallmoney
货币型,可精确到小数点后四位
auto_increment
自动递增,可以自动递增或随机产生一个整数,常用来自动产生唯一编号
创建数据表
create table < 表名> ( < 列定义> [ { , < 列定义> | < 表约束> } ] )
数据表约束
[ constraint < 约束名 > ] < 约束类型 > NULL / NOT NULL [ constraint < 约束名 > ] [ NULL | NOT NULL ] unique [ constraint < 约束名 > ] [ unique ] primary key[ constraint < 约束名 > ] primary key ( < 列名 > [ { , < 列名 > } ] ) foreign key[ constraint < 约束名 > ] foreign key [ references < 主表名 > ] ( < 列名 > [ { , < 列名 > } ] ) check [ constraint < 约束名 > ] check ( < 条件 > )
特殊使用
select * from sys.objectswhere type in ( 'c' , 'd' , 'f' , 'pk' , 'uq' )
案例
create table pwd( id integer primary key autoincrement, name nvarchar(20 ) not null , user nvarchar(20 ) not null , pwd nvarchar(33 ) not null , text nvarchar(40 ) not null );
2 修改 表格式修改
alter table < 表名> add < 列定义> | < 完整性约束定义> # < 完整性约束定义> :constraint < 约束名> < 约束> alter table < 表名 > alter column < 列名 > < 数据类型 > [ NULL | NOT NULL ]# 注:(不能改列名,不能改类型,不能减少宽度,不能null - > not null ,有其他约束应该先删其他约束)
表数据修改
insert into < 表名> [(< 列名1 > [,< 列名2 > ...])] # (插入写列名则插入对应列,不写则插入数据要含有全部的列)values (< 值> ) [,(< 值> )] # (插入一行或多行的值)# 多行插入:子查询,values 带多个值。 update < 表名> set < 列名> = < 表达式> [,< 列名> = < 表达式> ]...[where < 条件> ]
案例
3 删除 删除数据表
alter table < 表名> drop constraint < 约束名> | drop column < 列名> drop table < 表名>
删除数据表数据
delete from < 表名> [where < 条件> ]
案例
4 查看
查数据表格式:右键属性。
查数据表数据:单表查询、多表查询。
4.1 select 单表查询
比较运算符:等于(=)、不等于(<>)、大于(>)、小于(<)、大于等于(>=)、小于等于(<=)
统计函数:
统计结果无列名,可以用as取别名。
count(distinct)
可以消除重复行取和,count对空值不计算,对0计算。
(count *)
不消除重复行,不可以用distinct。
符号
作用
like
类似(like是模糊信息,=是确定信息)
is null
判断空(不能用=null)
通配符
作用
%
多个字符
_
一个字符
[ 0~9 ]
在0~9中的字符
[ ^3~7 ]
不在3~7中的字符
符号
作用
avg
平均数
sum
总数
max
最大值
min
最小值
count
总个数
单表查询
select [ all | distinct ] [ TOP N [ percent ] [ with ties ] ]< 列名 > [ as 别名1 ] [ { < 列名 > [ as 别名2 ] }]from < 表名 > [ [ as ] 表别名 ][ where < 检索条件 > ] [ group by < 列名1 > [ having < 条件表达式 > ] ] [ order by < 列名2 > [ asc | desc ] ] # 按照什么值分组 group by having # 分组后按照一定条件筛选。# 按照什么排序 order by asc | desc # 默认升序,(升序 | 降序)
案例
``` #### 4.2 select 多表查询 > 查询格式同上 > > 内连接查询:不符合结果则不输出,表间用 , 隔开是内连接。`inner join ` > > 外连接查询:不符合结果输出空。外连接查询where 改成on 。 > > [外连接查询](https:/ / www.cnblogs.com/ menghen/ p/ 12569473. html) [外连接查询图解](https:/ / www.zhihu.com/ question/ 34559578 / answer/ 2561071157 ) | 语句 | 作用 | | | left ( outer ) join | 左边表全,右边缺用null 补 | | right ( outer ) join | 右边表全,左边缺用null 补 | | full ( outer ) join | 左右表的并集 | | cross join | 笛卡尔连接 | 自连接查询 > 取别名,自己查自己,输出需要的数据。```sql select x.salfrom t as x, t as ywhere x.sal > y.sal and y.tn = '刘伟'
子查询
其他
案例
三、视图 1 创建视图 语句
create view view_name [(column [ , ... n ])][with < view_attribute> [, ... n ]] as select_statement[with check option] [;] < view_attribute > ::= { [ encryption ] [ schemabinding ] [ view_metadate ] }
案例
2 修改视图 语句
alter view view_nameas < 子查询>
案例
3 查询视图
和表一样。
案例
4 删除视图 语句
案例
5 视图操作
数据操作和表一样。
案例
四、索引 1 创建索引 语句
create [ unique ] [ clustered | nonclustered ] index index_nameon table_or_view_name ( column_name [ asc | desc ] [ , ... n ] )[ with < index_option > [ , ... n] ] [ on { filegroup_name | "default" } ]
案例
2 修改索引 语句
案例
3 删除索引 语句
drop index < index name> on < table or view_name>
案例
4 查看索引 语句
# 查看索引 exec sp_helpindex [@objname = ] 'name' # 改索引名 exec sp_rename 'index_name' 'index_newname'
案例
五、用户
用户操作
1 创建用户 语句
create login login_name with password = 'passwd' create user user_name [for login login_name]
案例
2 修改用户 语句
案例
3 删除用户 语句
案例
4 赋予权限 语句
grant create on database_name to user_nameexec sp_addrolemember 'db_owner' 'user_name'
案例
5 移除权限 语句
revoke create on database_name from user_name
案例
六、规则与默认 1 创建规则 语句
案例
2 删除规则 语句
案例
3 绑定规则 语句
案例
1 创建默认 语句
案例
2 删除默认 语句
案例
3 绑定默认 语句
案例
七、案例查询 1 所有查询 语句
select name from sysobjects where type = 'U' order by nameselect * from sys.objects where type in ('c' ,'d' ,'f' ,'pk' ,'uq' )select * from sysobjects where xtype= 'V'
八、提示
引号中打引号用 ''
(两个单引号)