Noções básicas de uso de cláusulas e funções sqlite3 de banco de dados incorporado (06)

foto

SQLite explicou acima como implementar as operações básicas do sqlite3, como adição, exclusão, modificação e consulta. Este artigo apresenta algumas outras operações mais complexas. Por exemplo, usos como onde, ordenar por, ter, gostar, funções, etc.

Preparação de banco de dados

Crie um novo banco de dados, empresa.db. Projete uma mesa funcionário com o seguinte conteúdo:

eu ia nome idade dependência salário
1 Jack Ma 21 mercado 6.000
2 Ma Huateng 22 tecnologia 7.000
3 Robin Li 23 trs 8600
4 Zhang Chao Yang 24 trs 6.000
5 Luo Yonghao 26 tecnologia 8900
6 Wang Xin 25 mercado 4000

Com base na tabela acima, primeiro determinamos que a chave primária é id. O comando para criar uma tabela é o seguinte:

CREATE TABLE employee(id integer primary key, name text,age integer , dep text, salary integer);
insert into employee values (1,'马云',21,'market',6000);
insert into employee values (2,'马化腾',22,'tech',7000);
insert into employee values (3,'李彦宏',23,'trs',8000);
insert into employee values (4,'张朝阳',24,'trs',6000);
insert into employee values (5,'罗永浩',26,'tech',8900);
insert into employee values (6,'王欣',25,'market',4000);
insert into employee values (7,'一口',18,'market',4000);

foto

foto

cláusula filha do pedido

Podemos usar a cláusula order para classificar registros:

select * from employee order by age;

foto

Insira a descrição da imagem aqui

Cláusulas where e operadores lógicos

A cláusula WHERE do SQLite é usada para especificar condições para obter dados de uma tabela ou de várias tabelas. Se a condição fornecida for atendida, ou seja, verdadeira, um valor específico é retornado da tabela. Você pode usar a cláusula WHERE para filtrar registros e obter apenas os registros necessários. A cláusula WHERE não é usada apenas em instruções SELECT, mas também em instruções UPDATE, DELETE, etc., que aprenderemos nos capítulos subsequentes.

gramática

A sintaxe básica da instrução SELECT do SQLite com uma cláusula WHERE é a seguinte:

SELECT column1, column2, columnN FROM table_name WHERE [condition]

Exemplo

Você também pode especificar condições usando comparação ou operadores lógicos, como >, <, =, >=, <=, LIKE, NOT e assim por diante.

O exemplo a seguir demonstra o uso de operadores lógicos SQLite.

A instrução SELECT a seguir lista todos os registros com IDADE maior ou igual a 25 e salário maior ou igual a 65.000,00:

 SELECT * FROM EMPLOYEE WHERE AGE >= 25 AND SALARY >= 6500;

foto

Insira a descrição da imagem aqui

A instrução SELECT a seguir lista todos os registros com IDADE maior ou igual a 25 ou salário maior ou igual a 65.000,00:

SELECIONE *DO FUNCIONÁRIO ONDE IDADE >= 25 OU SALÁRIO >= 65000;

foto

Insira a descrição da imagem aqui

A instrução SELECT a seguir lista todos os registros cuja IDADE não é NULL. O resultado mostra todos os registros, o que significa que nenhum registro tem IDADE igual a NULL:

SELECT * FROM EMPLOYEE WHERE AGE IS NOT NULL;

foto

A cláusula where também pode ser usada com a cláusula like. A instrução SELECT a seguir lista todos os registros cujo NOME começa com 'Ki'. Os caracteres após 'Ki' não são restritos:

SELECT * FROM EMPLOYEE WHERE NAME LIKE '马%'; 

foto

A instrução SELECT a seguir lista todos os registros com valor AGE de 22 ou 25:

SELECT * FROM EMPLOYEE WHERE AGE IN ( 22, 25 );

foto

Insira a descrição da imagem aqui

A seguinte instrução SELECT lista todos os registros onde o valor AGE não é 25 nem 27:

SELECT * FROM EMPLOYEE WHERE AGE NOT IN ( 22, 25 );

foto

Insira a descrição da imagem aqui

A instrução SELECT a seguir lista todos os registros com valor AGE entre 22 e 25:

SELECT * FROM EMPLOYEE WHERE AGE BETWEEN 22 AND 25; 

foto

Insira a descrição da imagem aqui

cláusula agrupar por filho

A instrução GROUP BY é usada em conjunto com funções agregadas para agrupar um conjunto de resultados com base em uma ou mais colunas. Exemplo:

Calcule o salário total de toda a empresa:

select sum(salary) from employee;

foto

Insira a descrição da imagem aqui

Calcule o salário total de cada departamento:

select dep, sum(salary) from employee group by dep;

foto

Calcule o salário total de cada departamento e exija que o valor do ID seja maior que 3

select dep, sum(salary) from employee where id>3 group by dep;    where子句要放在group by的前面。

foto

Insira a descrição da imagem aqui

tendo cláusula

A cláusula havendo é a cláusula condicional de group by. A cláusula where ocorre primeiro e depois a cláusula havendo é executada. Três elementos podem ser usados ​​na cláusula HAVING: constantes, funções agregadas e nomes de colunas (construção de agregação) especificados na cláusula GROUP BY. Ao usar have, ele deve ser usado com group by. Se você usar group by, você não ter (é apenas um (para condições de filtragem)

Exemplo

Calcule o salário total de cada departamento e exija que o valor do ID seja maior que 3

select dep, sum(salary) from employee where id>3 group by dep having sum(salary)>5000;

foto

Como encontrar registros duplicados

Primeiro inserimos registros com base no mesmo nome.

insert into employee values (8,'一口',19,'market',5000);
select id,name from employee group by name having count(*) > 1;

foto

Como você pode ver, os resultados mostram registros duplicados com o mesmo nome.

Mostrar vários itens com o mesmo nome

select id,name,dep,salary  from employee group by name  having count(*) > 1;

foto

Exibir todos os registros da tabela

select count(*) from employee;

Mostrar o número de todos os registros

select dep,avg(salary) from employee group by dep;

Exibir o valor médio de cada grupo em dep

select * from employee where id > 3 intersect select * from employee where id < 9;

Exibir todos os registros com id > 3 && id < 9: ou seja, registros 4 - 8

select * from employee where id > 3 union all select * from employee where id < 9;

Exibir a união de todos aqueles maiores que 3 e menores que 9 (se houver iguais, serão exibidos repetidamente)

select * from studentnew where id > 3 union all select * from studentnew where id < 9;

Mostrar registros maiores que 9

select * from employee where id > 3 union all select * from studentnew where id < 6;

Mostrar registros maiores que 6 (comparar com o anterior)

select *from employee where salary= (select salary from employee order by salary desc limit 1);
select *from employee where salary= (select max(salary) from employee );

Mostrar registros de todos os funcionários com o salário mais alto

select name,max(salary) from employee;

foto

Insira a descrição da imagem aqui

Exibir funcionários com nomes diferentes na tabela;

select distinct name from employee; 

Exibir os nomes de todos os funcionários;

 select all name from employee; 
 

função

SQLite possui muitas funções integradas para trabalhar com strings ou dados numéricos. Listadas abaixo estão algumas funções úteis integradas ao SQLite, e todas as funções não diferenciam maiúsculas de minúsculas, o que significa que você pode usar letras minúsculas, maiúsculas ou formas mistas dessas funções. Para mais descrições de funções, você pode consultar a documentação oficial do SQLite.Aqui estão algumas funções comumente usadas:

número de série função & descrever
1. CONTAR A função agregada SQLite COUNT é usada para contar o número de linhas em uma tabela de banco de dados.
2. MÁX. A função agregada SQLite MAX nos permite selecionar o valor máximo de uma coluna.
3. MÍNIMO A função agregada SQLite MIN nos permite selecionar o valor mínimo de uma coluna.
4. Média A função agregada SQLite AVG calcula a média de uma coluna.
5. SOMA A função agregada SQLite SUM permite calcular a soma de uma coluna numérica.
6. ALEATÓRIO A função SQLite RANDOM retorna um número inteiro pseudo-aleatório entre -9223372036854775808 e +9223372036854775807.
7. abdômen A função SQLite ABS retorna o valor absoluto de um argumento numérico.
8. SUPERIOR A função SQLite UPPER converte uma string em letras maiúsculas.
9. MAIS BAIXO A função SQLite LOWER converte uma string em letras minúsculas.
10. COMPRIMENTO A função SQLite LENGTH retorna o comprimento de uma string.
11. versão_sqlite A função SQLite sqlite_version retorna a versão da biblioteca SQLite.

Função SQLite CONTAGEM

A função agregada SQLite COUNT é usada para contar o número de linhas em uma tabela de banco de dados. Aqui estão alguns exemplos:

SELECT count(*) FROM EMPLOYEE ;

Resultados do:

foto

Insira a descrição da imagem aqui

Função SQLite MAX

A função agregada SQLite MAX nos permite selecionar o valor máximo de uma coluna. Aqui estão alguns exemplos:

SELECT max(salary) FROM EMPLOYEE ;

Resultados do:

foto

Função SQLite MIN

A função agregada SQLite MIN nos permite selecionar o valor mínimo de uma coluna. Aqui estão alguns exemplos:

SELECT min(salary) FROM EMPLOYEE ;

Resultados do:

foto

Insira a descrição da imagem aqui

Função SQLite AVG

A função agregada SQLite AVG calcula a média de uma coluna. Aqui estão alguns exemplos:

SELECT avg(salary) FROM EMPLOYEE ;

Resultados do:

foto

Função SQLite SUM

A função agregada SQLite SUM permite calcular a soma de uma coluna numérica. Aqui estão alguns exemplos:

SELECT sum(salary) FROM EMPLOYEE ;

Resultados do:

foto

Insira a descrição da imagem aqui

Função SQLite RANDOM

A função SQLite RANDOM retorna um número inteiro pseudo-aleatório entre -9223372036854775808 e +9223372036854775807. Aqui estão alguns exemplos:

SELECT random() AS Random;

Resultados do:

foto

Insira a descrição da imagem aqui

Função SQLite ABS

A função SQLite ABS retorna o valor absoluto de um argumento numérico. Aqui estão alguns exemplos:

SELECT abs(5), abs(-15), abs(NULL), abs(0), abs("ABC");

Resultados do:

foto

Insira a descrição da imagem aqui

Função SQLite UPPER

A função SQLite UPPER converte uma string em letras maiúsculas. Aqui estão alguns exemplos:

insert into employee values (9,'yikoulinux',22,'market',8000);
SELECT upper(name) FROM EMPLOYEE ;

Resultados do:

foto

Função SQLite INFERIOR

A função SQLite LOWER converte uma string em letras minúsculas. Aqui estão alguns exemplos:

SELECT lower(name) FROM EMPLOYEE ;

Resultados do:

foto

Função SQLite COMPRIMENTO

A função SQLite LENGTH retorna o comprimento de uma string. Aqui estão alguns exemplos:

SELECT name, length(name) FROM EMPLOYEE ;

Resultados do:

foto

Função SQLite sqlite_version

A função SQLite sqlite_version retorna a versão da biblioteca SQLite. Aqui estão alguns exemplos:

SELECT sqlite_version() AS 'SQLite Version';

Resultados do:

foto

Funções de hora/data SQLite:

data hora()

datetime() gera data e hora. Sem parâmetros significa obter a hora e data atuais**

select datetime();

foto

Insira a descrição da imagem aqui

Se houver um parâmetro string, converta a string em uma data

select datetime('2012-01-07 12:01:30'); 

foto

07-01-2012 12:01:30

select date('2019-09-09','+1 day','+1 year');

foto

09/01/2013

select datetime('2019-09-09 00:20:00','+1 hour','-12 minute');

09/09/2019 01:08:00

select datetime('now','start of year');

01/01/2020 00:00:00

select datetime('now','start of month');

01/09/2020 00:00:00

select datetime('now','start of day');

13/09/2020 00:00:00

select datetime('now','localtime');

Resultado: 12/09/2020 20:26:35

data()

date() é usado para gerar datas

select date('2019-09-09 12:01:30'); 

09/09/2019

select date('now','start of year');

01/01/2020

select date('2019-09-09','+1 month');

09/10/2019

tempo()

time() é usado para gerar tempo.

select time();

03:28:49

select time('23:18:59');

23:18:59

select time('23:18:59','start of day');

00:00:00

Você pode usar strings no seguinte formato como parâmetros em funções de hora/data:

  • AAAA-MM-DD

  • AAAA-MM-DD HH:MM

  • AAAA-MM-DD HH:MM:SS

  • AAAA-MM-DD HH:MM:SS.SSS

  • HH:MM

  • HH:MM:SS

  • HH:MM:SS.SSS

  • agora

onde agora é o momento em que o presente ocorre.

As datas não podem ser comparadas corretamente. Elas serão comparadas como strings. O formato de data padrão é dd-mm-aaaa.

strftime()

strftime() formata a data e hora geradas pelas três funções acima.

A função strftime() pode converter strings de data no formato AAAA-MM-DD HH:MM:SS em outras formas de strings. strftime(formato, data/hora, modificador, modificador,…)

Ele pode formatar datas e horas usando os seguintes símbolos:

%d 在该月中的第几天, 01-31 
%f 小数形式的秒,SS.SSS 
%H 小时, 00-23 
%j 算出某一天是该年的第几天,001-366 
%m 月份,00-12 
%M 分钟, 00-59 
%s 从1970年1月1日到现在的秒数 
%S 秒, 00-59 
%w 星期, 0-6 (0是星期天) 
%W 算出某一天属于该年的第几周, 01-53 
%Y 年, YYYY 
%% 百分号
select strftime('%Y.%m.%d %H:%M:%S','now'); 

2020.09.13 03:32:49

select strftime('%Y.%m.%d %H:%M:%S','now','localtime'); 

2020.09.12 20:33:24

SELECIONE COMO uso

Na linguagem de consulta estruturada SQL, a instrução LIKE desempenha um papel vital.

gramática

O formato de sintaxe da instrução LIKE é:

select * from 表名 where 字段名 like 对应值(子串),

É principalmente para campos de caracteres e sua função é recuperar a substring correspondente em uma coluna de campo de caracteres.

  • A):% Qualquer string contendo zero ou mais caracteres:

  1. LIKE'Mc%' irá procurar por qualquer string começando com as letras Mc (como McBadden).

  2. LIKE'%inger' irá procurar por todas as strings que terminam com as letras inger (como Ringer, Stringer).

  3. LIKE'%en%' irá procurar por qualquer string contendo a letra en em qualquer lugar (como Bennet, Green, McBadden).

  • B:_ (sublinhado) Qualquer caractere único: LIKE'_heryl' pesquisará todos os nomes de seis letras que terminem com as letras heryl (por exemplo, Cheryl, Sheryl).

  • C: [] especifica qualquer caractere único em um intervalo ([af]) ou conjunto ([abcdef]):

  1. LIKE'[CK]ars[eo]n' procura as seguintes strings: Carsen, Karsen, Carson e Karson (como Carson).

  2. LIKE'[MZ]inger' pesquisará todos os nomes que terminam com a string inger e começam com qualquer letra de M a Z (como Ringer).

  • D: [^] Qualquer caractere único que não pertença ao intervalo especificado ([af]) ou conjunto ([abcdef]): LIKE 'M[^c]%' irá procurar caracteres começando com a letra M e cujo segundo letra não é c Todos os nomes (como MacFeather).

  • E: * É igual ao caractere curinga dos comandos DOS, representando vários caracteres: c*c representa cc, cBc, cbc, cabdfec e outros caracteres.

  • F:? O mesmo que no comando DOS? Curinga, representando um único caractere: b?b representa brb, bFb, etc.

  • G: # é aproximadamente igual ao anterior, exceto que a geração só pode representar um único número. k#k representa k1k,k8k,k0k.

  • F: [!] exclui-o de representar apenas um único caractere

Exemplo

Vamos dar um exemplo abaixo:

  • Exemplo 1, consulte o campo de nome que contém a palavra "明".

select * from table1 where name like '%明%'
  • Exemplo 2: Consulte se o campo nome começa com a palavra "李".

select * from table1 where name like '李*'
  • Exemplo 3, consulte se o campo de nome contém números.

select * from table1 where name like '%[0-9]%'
  • Exemplo 4: Consulte os nomes que contêm letras minúsculas no campo nome.

select * from table1 where name like '%[a-z]%'
  • Exemplo 5: Consulte os nomes que não contêm números no campo nome.

select * from table1 where name like '%[!0-9]%'

É óbvio quais valores podem ser listados no exemplo acima. Mas aqui nos concentramos na diferença entre o curinga " " e "%". Muitos amigos perguntarão: por que uso "%" em vez de "" para expressar todos os caracteres na consulta acima ? Vamos primeiro dar uma olhada nos resultados dos seguintes exemplos:

select * from table1 where name like '*明*'
select * from table1 where name like '%明%'

Como você verá, a primeira instrução lista todos os registros, e o próximo registro lista os registros que contêm "Ming" no campo de nome. Portanto, quando fazemos uma consulta onde o campo de caractere contém uma substring, é melhor fazer isso. é melhor usar "%" em vez de " ". Use " " apenas no início ou apenas no final, e não quando "*" substituir qualquer caractere em ambas as extremidades.

A operação do banco de dados SQLITE chegou ao fim por enquanto. Embora seja um banco de dados leve, a ideia básica da operação do banco de dados é a mesma. Basicamente, você pode aprender tudo. No próximo capítulo, aprenderemos como operar o banco de dados por meio de programa em linguagem C.

おすすめ

転載: blog.csdn.net/weixin_41114301/article/details/133385814
おすすめ