Criar um CRUD de dados de consulta SQL sub-consulta revisão base gramática banco de dados e tabelas de dados agrupados

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 carta
    • Len('我是谁')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 atual
    • DateName(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 absoluto
    • Ceiling(24.1)O menor maior número inteiro de 24,1
      - Floor(24.1)maior inteiro inferior a 24,1
    • round(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ão
    • DataLength("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 字段别名
  1. 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 limite
  2. distinct 字段: Filtrar a registros duplicados
  3. 表名.字段: Os inquéritos internos mais rapidamente desta forma, se você selecionar um grupo de campo: Reunião recorde em valor é uma relação
  4. 字段 as 别名; 字段 别名; 别名=字段; - três maneiras lata
  5. Você pode adicionar constantes são listados :'上海' as 城市
  6. 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
  7. group by : O grupo de dados especificado coluna, a coluna com o mesmo valor da linha designada como um grupo
  8. having条件: 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
  9. 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 ordenada
  • min(数值、字符串、日期) : 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 ordenada
  • avg(数值) : Média dos limites especificados de valores de dados que só pode ser polimerizado, a polimerização pode não data
  • sum(数值) : Pedido e os dados especificados variar, ele só pode polimerização numérica, a polimerização não pode data
  • count(*/一个字段) : 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:

  1. Cross-connect (produto cartesiano): from 结果集 cross join 结果集
  2. O conector (relação condicional partidas suficientes): from 结果集 inner join 结果集 on 条件condições --em (com a grande relação de chave campo exterior)
  3. 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:

  1. 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
  2. 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

  3. consulta En pode ser implementada para alcançar onde - o quinto ponto da descrição

  4. 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ção
    • group by StuNo having StuNo = 6; StuNo o pacote, seguido por rastreio de grupo 6 StuNo
    1. 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 字段 = 外表名.字段(多值时也可以)

Acho que você gosta

Origin www.cnblogs.com/itzlg/p/12503804.html
Recomendado
Clasificación