English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C
A cláusula WHERE não pode ser usada apenas em consultas SELECT, mas também em comandos UPDATE, DELETE etc.
A seguir está a sintaxe comum para usar a cláusula WHERE em consultas SELECT para ler dados do banco de dados:
SELECT coluna1, coluna2, colunaN FROM nome_da_tabela WHERE [condição1]
Podemos usar operadores de comparação ou operadores lógicos na cláusula WHERE, por exemplo, >, <, =, LIKE, NOT e assim por diante.
O conteúdo do arquivo COMPANY.SQL é o seguinte:
-- Este é o arquivo para criar a tabela COMPANY e preenchê-la com 7 registros. -- Apenas copie e cole nele no prompt do psql. DROP TABLE COMPANY; CREATE TABLE COMPANY( ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), SALARY REAL ); INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1, 'Paul', 32, 'California', 20000.00 ); INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (2, 'Allen', 25, 'Texas', 15000.00 ); INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (3, 'Teddy', 23, 'Noruega', 20000.00 ); INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 ); INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (5, 'David', 27, 'Texas', 85000.00 ); INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (6, 'Kim', 22, 'South-Hall', 45000.00 ); INSERT INTO COMPANY VALUES (7, 'James', 24, 'Houston', 10000.00 );
Criar a tabela COMPANY com o seguinte conteúdo:
w3codeboxdb# SELECT * FROM COMPANY; id | name | age | address | salary ----+-------+-----+-----------+-------- 1 | Paul | 32 | California| 20000 2 | Allen | 25 | Texas | 15000 3 | Teddy | 23 | Noruega | 20000 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 6 | Kim | 22 | South-Hall| 45000 7 | James | 24 | Houston | 10000 (7 linhas)
Neste exemplo, usamos operadores lógicos para ler dados da tabela.
Encontrar AGE(idade) Campo maior ou igual a 25E SALARY(salário) Campo maior ou igual a 65000 de dados:
w3codeboxdb=# SELECT * FROM COMPANY WHERE AGE >= 25 E SALARY >= 65000; id | name | age | address | salary ----+-------+-----+------------+-------- 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 (2 linhas)
Encontrar AGE(idade) Campo maior ou igual a 25OU SALARY(salário) Campo maior ou igual a 65000 de dados:
w3codeboxdb=# SELECT * FROM COMPANY WHERE AGE >= 25 OU SALARY >= 65000; id | name | age | address | salary ----+-------+-----+-------------+-------- 1 | Paul | 32 | California | 20000 2 | Allen | 25 | Texas | 15000 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 (4 linhas)
Encontrar na tabela COMPANY: AGE(idade) Registros cujos campos não estão vazios:
w3codeboxdb=# SELECT * FROM COMPANY WHERE AGE IS NOT NULL; id | name | age | address | salary ----+-------+-----+------------+-------- 1 | Paul | 32 | California | 20000 2 | Allen | 25 | Texas | 15000 3 | Teddy | 23 | Norway | 20000 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 6 | Kim | 22 | South-Hall | 45000 7 | James | 24 | Houston | 10000 (7 linhas)
Encontrar na tabela COMPANY: NAME(Nome) Os dados cujos campos começam com 'Pa':
w3codeboxdb=# SELECT * FROM COMPANY WHERE NAME LIKE 'Pa%'; id | name | age |address | salary ----+------+-----+-----------+-------- 1 | Paul | 32 | California| 20000
A seguinte consulta SELECT lista AGE(idade) campo é 25 ou 27 Os dados:
w3codeboxdb=# SELECT * FROM COMPANY WHERE AGE IN ( 25, 27 ); id | name | age | address | salary ----+-------+-----+------------+-------- 2 | Allen | 25 | Texas | 15000 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 (3 linhas)
A seguinte consulta SELECT lista AGE(idade) campo não é 25 ou 27 Os dados:
w3codeboxdb=# SELECT * FROM COMPANY WHERE AGE NOT IN ( 25, 27 ); id | name | age | address | salary ----+-------+-----+------------+-------- 1 | Paul | 32 | California | 20000 3 | Teddy | 23 | Norway | 20000 6 | Kim | 22 | South-Hall | 45000 7 | James | 24 | Houston | 10000 (4 linhas)
A seguinte consulta SELECT lista AGE(idade) campo está 25 até 27 Os dados:
w3codeboxdb=# SELECT * FROM COMPANY WHERE AGE BETWEEN 25 E 27; id | name | age | address | salary ----+-------+-----+------------+-------- 2 | Allen | 25 | Texas | 15000 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 (3 linhas)
A seguinte consulta SELECT usou subconsulta SQL, a subconsulta lê SALARY(salário) campo maior que 65000 dados, em seguida, através de EXISTS Operador de comparação determina se ele retorna linhas, se houver retorno de linhas, ele lê todas as AGE(idade) campo.
w3codeboxdb=# SELECT AGE FROM COMPANY WHERE EXISTS (SELECT AGE FROM COMPANY WHERE SALARY > 65000); age ----- 32 25 23 25 27 22 24 (7 linhas)
A seguinte consulta SELECT usou subconsulta SQL, a subconsulta lê SALARY(salário) campo maior que 65000 do AGE(idade) Dado do campo,em seguida usando > Consulta operacional maior que AGE(idade) Dado do campo:
w3codeboxdb=# SELECT * FROM COMPANY WHERE AGE > (SELECT AGE FROM COMPANY WHERE SALARY > 65000); id | name | age | address | salary ----+------+-----+------------+-------- 1 | Paul | 32 | California | 20000