links de referência:
A. Criar uma sintaxe de banco de dados
--用master数据库
use master
--判断数据库是否存在,若存在则删除
if exists (select * from sysdatabases where name='数据库名称')
drop database 数据库名称
--创建数据库
create database 数据库名称
on( --指定主文件的属性
name='', --文件的逻辑名称(数据之间的相互关系)
filename='', --文件的物理名称(数据存储的路径)
size='', --文件的初始大小
maxsize='', --文件的最大值
filegrowth='' --文件的增长方式
)
log on( --指定日志文件的属性
name='', --文件的逻辑名称
filename='', --文件的物理名称
size='', --文件的初始大小
filegrowth='' --文件的增长方式
)
--查看数据库
exec sp_helpdb 数据库名称;
--修改数据库名称
alter database 数据库名称
modify name='';
--修改数据库文件
alter database 数据库名称
modify file(
name='',
filename='',
size='',
filegrowth=''
)
II. Criar uma tabela de dados
--指定用什么数据库
use 数据库名称
--判断数据表是否存在,若存在则删除
if exists (select * from sysobjects where name='数据表名称')
drop table 数据表名称
--创建数据表
create table 数据表名称(
--一般不直接添加约束
字段名称 字段类型 字段特征(默认值DF_、标识列、主键PK_、关系FK_、索引UQ_、检查CK_、非空)
)
--为字段添加约束
alter table 数据表名称
add constraint 约束名称 约束(指定字段) [references 主表(主键或唯一键)];
--删除约束
alter table 数据表名称
drop constraint 约束名称;
--增加外键约束时,设置级联删除、级联更新 on delete cascade;
[ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] 删除
[ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] 更新
--on--在做何种操作的时候做相应的处理
--NO ACTION--不做任何操作:该报错就报错,可以删除就删除
--CASCADE:级联:删除主表,对应的从表数据也会删除,更新也一样
--SET NULL:如果删除主表的记录,那么对应的从表记录的字段值会被设置为null,前提是从表的这个字段的值可以是null
--SET DEFAULT :删除主表记录,从表的记录的对应字段值设置为默认值,前提是你之前为这个字段设置了默认值
--修改字段的类型及约束
alter table 数据表名称
alter column 字段名称 字段类型 约束;
--添加字段
alter table 数据表名称
add 字段名称 字段类型 [not null];
--删除某个字段
alter table 数据表名称
drop column 字段名称;
--修改字段名称
exec sp_rename '数据表名称.原字段名称','新字段名称','column';
III. Adição de dados
--一次添加一行数据,实参与形参 参数类型 参数个数 参数顺序 都必须一致
insert into 表名(形参)
values(实参)
--1.默认约束可以不指定列名
--2.自增不能显示的添加
--3.允许为null值的字段可直接设置null值,也可不指定列名
--一次添加多行数据时添加顺序不是按照书写的顺序添加的,而是按照第一个字段的首a-z字母或者数字从小到大添加的
--一次添加多行数据
insert into 表名(形参)
select 实参 union
select 实参;
--或者
insert into 表名(形参)
values(实参),(实参);
--从别的表中copy数据
insert into 表1(形参)
select 实参 from 表2;
--将从数据源选择的数据插入到新表中并显示,新表是系统创建的,之前必须不存在
select * into 新表 from 数据源;
--将从数据源选择后得到的结果集添加到目的表中, 目的表必须存在
insert into 目的表 select * from 数据源;
IV. Eliminar Dados
--标识列不会从标识种子开始,可以回滚(恢复数据)
delete from 表名;
--条件与查询语句中条件一样:关系、逻辑运算符、like、in、between...
delete from 表名 where 条件;
--标识列会从标识种子开始
truncate table 表名;
dados V. Modificar
--条件与查询语句中条件一样:关系运算符、逻辑运算符、like、in、between...
update 表名 set 字段=值,... where 条件
1. Os operadores e funções internas
Operadores relacionais: = < > >= <= != <>
operadores lógicos:not / and / or / is null / is not null
Built-in funções:
- Funções para String:
CharIndex('ab','cdab')
Voltar "3" - retorna "ab" em posição "CDAB" irá retornar para a primeira posição de uma cartaLen('我是谁')
Voltar "3" - retorna um comprimento de corda
-substring('abd',2,2)
retorna "BD" - a partir da segunda posição para interceptar uma cadeia de comprimento 2
- função de data:
GetDate()
Retorna a data atualDateName(DW,'2009-09-09')
Retorno especificar uma data como uma cadeia de parte do "Wednesday"DateDiff(dd,'2009-09-09','2010-10-09')
Retorna o intervalo entre as duas datas, yy é o ano, MM é o mês, dd é o dia
-DatePart(DW,'2009-09-09')
retorno ao "4" para voltar a uma data especificada como uma parte inteira (Estados Unidos: domingo é o primeiro dia de dezembro para o primeiro mês)
- Funções matemáticas:
Abs(-1)
valor absolutoCeiling(24.1)
O menor maior número inteiro de 24,1
-Floor(24.1)
maior inteiro inferior a 24,1round(18.6)
Um resultado positivo ou negativo arredondamento, o resultado é o valor de um determinado comprimento
- funções do sistema
Convert(varchar(3),123)
Voltar "123" tipos de dados de conversãoDataLength("12中国")
Voltar "6" retorna o número de bytes de qualquer tipo de dados, caracteres de 2 bytes
VI. Data Query
1. gramática básica
select top|distinct 值/[percent] */表名.字段 别名,... ['上海' as 城市],... from 表名 别名 where 条件 group by 字段 having 条件 order by 字段别名
top 值/[percent]
: Geralmente usado em conjunto com a ordem por, quando o conjunto de resultados é dar uma percentagem do limite máximo decimal; linha de limite é o último passo para fazer uma consulta, tipo, linha de limitedistinct 字段
: Filtrar a registros duplicados表名.字段
: Os inquéritos internos mais rapidamente desta forma, se você selecionar um grupo de campo: Reunião recorde em valor é uma relação字段 as 别名
;字段 别名
;别名=字段
; - três maneiras lata- Você pode adicionar constantes são listados :
'上海' as 城市
- onde as condições de:
- 关系 (> <> = <=! = <>)
- Os operadores lógicos (e / ou / não)
字段 [not] in(具体值1、具体值2)/(子查询)
: Utilização em particular, representa um intervalo de valores, em requisitos acordo gama de tipos de dados especificados; subconsultas pode ser utilizada字段 [not] between 数值1/日期1 and 数值2/日期2
: Se for determinado numérico ou intervalo de datas pode ser usado entre ... e字段 [not] like '张%'、'张_'、'1[1-8]'、'[^21-35]' --'1[1-8]'表示11-18
:[^21-35]
Representação além da 1,2,3,5 (válido curinga apenas em consulta difusa)- % : Representa qualquer número de quaisquer caracteres
- ** _ **: representa qualquer caractere único
- [] : Representa qualquer um de uma gama de valores de carácter específico
[0-9][a-z]
corresponde apenas um carácter - [^] : Representante não está dentro do intervalo especificado, no [] que tem esse sentido - valor negado único apoio MSSQL Server, com não como outros MSDB
group by
: O grupo de dados especificado coluna, a coluna com o mesmo valor da linha designada como um grupohaving条件
: O campo quer por pacotes, tanto os de polimerização condições: a condição em que a mesma- onde diferença cláusula e tendo cláusula:
- onde cláusulas cláusula relativa a uma única linha, tendo relacionadas com o grupo
- onde cláusula não pode ser polimerizado directamente, como uma função da condio de pesquisa, e tendo uma função pode ser polimerizado como um critério de pesquisa, mas não tendo usar alias campo
- onde cláusula com a ordem de execução diferente com cláusulas
- onde diferença cláusula e tendo cláusula:
order by 字段 [desc]...
: O padrão é ASC, você pode classificar a vários campos
2. Polimerização função
função agregado é um conjunto de campos de dados depois de um conjunto de resultados de triagem foram analisados.
--聚合函数:参数一般是字段
select max(字段),min(字段)... / select count(*),max(字段) from 表名 where 条件
max(数值、字符串、日期)
: Seleccionar o valor máximo do intervalo de dados especificado: pode ser qualquer tipo de polimerização, se for valores não numéricos na alfabética ordenadamin(数值、字符串、日期)
: A minimização do intervalo de dados especificado: pode ser qualquer tipo de polimerização, se for valores não numéricos na alfabética ordenadaavg(数值)
: Média dos limites especificados de valores de dados que só pode ser polimerizado, a polimerização pode não datasum(数值)
: Pedido e os dados especificados variar, ele só pode polimerização numérica, a polimerização não pode datacount(*/一个字段)
: Procurando o número de registos que satisfazem a condição, não há nenhuma relação com o campo; computar o número de registos ou um número especificado de valor não nulo da coluna- O padrão é mínima caractere de espaço
- String: Caráter AZ; caracteres ortografia fonética, quanto maior o valor, mais alfabética
- Data: A data mais cedo o menor o valor
3. consultas de agrupamento
Consulta 7 Palavras-chave:
select [top] from [where] [group by] [having] [order by]
fim consulta das declarações:
5.select 7.top 字段列表 1.from 表列表 2.where 源数据筛选条件 3.group by 分组统计字段列表 4.having 对分组统计结果集做筛选 6.order by 得到最终结果集之后的数据重排
1. Primeiro adquiridos a partir da fonte de dados 2 e, em seguida, filtrando onde fonte de dados 3 novamente para o grupo de fontes de dados de grupo, 4. e depois ter de fazer a filtragem de pacotes estatísticas do conjunto de resultados, [Polimerização função da análise do conjunto de resultados] 5 novamente para definir o resultado seleccionar o visor filtrada, 6. ordem por dados, então o conjunto de resultado final de rearranjo, 7, finalmente, mais uma vez os conjuntos de resultados linhas de limite superior e, em seguida
Solução de problemas:
- Por onde você não pode usar agregado funções (função de agregação não pode ser usado diretamente como critérios de pesquisa cláusula WHERE)? - necessidade de filtrar a fonte de dados e, em seguida, utilizando a função conjunto agregação resultado, em seguida, as análises mostram polimerização
- Por que não usar o estudante ter as colunas na tabela? - resultado agrupados definido apenas para o campo de resultado após o grupamento, ele irá ignorar a mesa de estudante em outros campos
- Por que não estão tendo que usar um pseudônimo? - estatísticas primeiro pacote resultar conjuntos fazer o rastreio, durante o show
- Por que pode encomendar usando um pseudônimo? - o conjunto de resultados final a ser exibida, o rearranjo de dados
- Quando o grupo não é um grupo, você pode ser usado com o rastreio, mas não há significado prático
- E não contam com a ID classe visor, enquanto a filtragem da fonte de dados é um pacote de valor de contagem, e uma pluralidade de valores classid para cada valor do campo no conjunto de resultados deve ser filtrada para-um. Valores de campo individuais não podem ser aplicados grupo, tendo cláusula deve ser um conjunto de colunas coluna
- questão geral Grupo está aparecendo na consulta 'todo' ou 'indivíduo' ... quando a palavra agrupamento
4. consulta de junção (tabela de conexão)
conexão Tabela:
- Cross-connect (produto cartesiano):
from 结果集 cross join 结果集
- O conector (relação condicional partidas suficientes):
from 结果集 inner join 结果集 on 条件
condições --em (com a grande relação de chave campo exterior) - Um conector externo (recuperação não corresponder):
from 结果集 left|right|full join 结果集 on 条件
Sintaxe Nota: Muitos on-line são escritos, seguindo tal abordagem não é recomendada
--国际组织ANSI-SQL 89版语法(当时还没有外连接)
select * from Employee, Title; --交叉连接
select * from Employee t1, Title t2 where t1.titleId=t2.titleId; --内连接
Atenção para o problema:
Junte-se a consulta de uma pluralidade de tabelas de condições de splicing correspondentes em uma tabela de resultados
- Selecione * da tabela pode ser conectado; mostrar todos os campos de todos os
- Selecione da tabela pode ser conectado ao campo; se o mesmo campo nome da seleção, ele deve ser especificado na tabela, não o mesmo campo nome não pode especificar
Após a ligação deve ser feita a partir da lista de alias mesa, ou para produzir um intermediário tabela, a tabela com o mesmo nome é gerada devido a um erro
consulta En pode ser implementada para alcançar onde - o quinto ponto da descrição
Alternativamente, onde cláusula tendo cláusulas: pode ser substituído quando se realiza a mesma função: TENDO onde usado pode ser substituído com um conjunto de colunas durante a triagem, não substituído com uma função de rastreio em que a utilização do polimerizado
where StuNo = 6
; Filtrando os dados de origem StuNo linha 6 (equivalente a StuNo para o grupo 6) - Esta consulta mais rápida, apesar de tudo, menos do que a seguinte declaraçãogroup by StuNo having StuNo = 6
; StuNo o pacote, seguido por rastreio de grupo 6 StuNo
from 结果集1 ... join 结果集2 ... join ... on 连接条件
--em não pode ser usado onde a substituição, erro de sintaxe irá ocorrer
from 结果集1,结果集2,... where 连接条件
--where não pode ser usado em substituição
5.union funções de conversão operator e tipo
operadores 1.union
operador de união: união pode incorporar uma pluralidade de conjuntos de resultados
Use duas premissas e uma nota:
- O número combinado de colunas no conjunto de resultados deve corresponder exatamente
- Coluna correspondente ao tipo de fundir uma pluralidade de conjuntos de resultados deve ser consistente (interpermutável)
- Os resultados são apresentados apenas o primeiro nome de um conjunto de resultados sobre (nota)
união ea união toda a diferença:
- União: fazer operações distintas, filtragem de registro repeat
- união de tudo: a operação não é diferente, é maior eficiência combinado, porque não há necessidade de julgar se o resultado da gravação repetida
2. Funções de conversão de tipo
- fundido (como o tipo de dados fonte alvo):
print '我的总成绩是:'+cast(200 as varchar(30))
- convert (tipo de destino, os dados fonte, formato):
print '我的总成绩是:'+convert(char(3),200)
select convert(char(30),GETDATE(),121)
6. subconsulta
Subquery: Em uma consulta, os resultados de uma consulta como condição para a outra consulta, em seguida, a consulta é chamada sub-consulta, as condições de consulta é chamado de consulta externa.
Consulta e de valores múltiplos sub-consulta escalar:
- subconsulta escalar: valor subconsulta única (resultado da consulta é um valor único) = ONDE campo (valor subconsulta single)
- subconsulta vários valores: multi-valorizados subconsulta (um resultado de consulta é mais de um valor), onde campo (subconsultas multi-valor)
sub-consultas Independentes e do sub-consulta relevante:
sub-consulta independente: Campo e da consulta externa não importa, você pode conferir os resultados de uma avaliação independente
subconsulta correlacionada: condições em um campo com um campos Tabela de consulta externa estão ligados, e não independentes resultados da investigação
子查询中 where 字段 = 外表名.字段(多值时也可以)