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' 
 
 
八、提示 
引号中打引号用 '' (两个单引号)