

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Lectura de los datos de una tabla con la instrucción CQL `SELECT` en Amazon Keyspaces
<a name="getting-started.dml.read"></a>

En la sección [Inserción y carga de datos en una tabla de Amazon Keyspaces](getting-started.dml.create.md), utilizó la instrucción `SELECT` para verificar que ha añadido correctamente los datos a su tabla. En esta sección, usted restringe el uso de `SELECT` para mostrar columnas específicas y solo las filas que cumplan criterios específicos.

La forma general de la instrucción `SELECT` es la siguiente.

```
SELECT column_list FROM table_name [WHERE condition [ALLOW FILTERING]] ;
```

**Topics**
+ [Selección de todos los datos de la tabla](#getting-started.dml.read.all)
+ [Selección de un subconjunto de columnas](#getting-started.dml.read.columns)
+ [Selección de un subconjunto de filas](#getting-started.dml.read.rows)

## Selección de todos los datos de la tabla
<a name="getting-started.dml.read.all"></a>

La forma más sencilla de la instrucción `SELECT` devuelve todos los datos de su tabla.

**importante**  
 En un entorno de producción, no suele ser una práctica recomendada ejecutar este comando, dado que devuelve todos los datos de la tabla. 

**Para seleccionar todos los datos de su tabla**

1. Abre Amazon Keyspaces AWS CloudShell y conéctate a ellos mediante el siguiente comando. Asegúrese de actualizar *us-east-1* con su propia región. 

   ```
   cqlsh-expansion cassandra.us-east-1.amazonaws.com 9142 --ssl
   ```

1. Ejecute la siguiente consulta.

   ```
   SELECT * FROM catalog.book_awards ;
   ```

   El uso del carácter comodín (`*`) para `column_list` selecciona todas las columnas. La salida de la instrucción tiene un aspecto semejante al del siguiente ejemplo.

   ```
    year | award            | category    | rank | author             | book_title            | publisher
   ------+------------------+-------------+------+--------------------+-----------------------+---------------
    2020 |             Wolf | Non-Fiction |    1 |        Wang Xiulan |      History of Ideas |  AnyPublisher
    2020 |             Wolf | Non-Fiction |    2 | Ana Carolina Silva |         Science Today | SomePublisher
    2020 |             Wolf | Non-Fiction |    3 |  Shirley Rodriguez | The Future of Sea Ice |  AnyPublisher
    2020 | Kwesi Manu Prize |     Fiction |    1 |         Akua Mansa |     Where did you go? | SomePublisher
    2020 | Kwesi Manu Prize |     Fiction |    2 |        John Stiles |             Yesterday | Example Books
    2020 | Kwesi Manu Prize |     Fiction |    3 |         Nikki Wolf | Moving to the Chateau |  AnyPublisher
    2020 |      Richard Roe |     Fiction |    1 |  Alejandro Rosalez |           Long Summer | SomePublisher
    2020 |      Richard Roe |     Fiction |    2 |        Arnav Desai |               The Key | Example Books
    2020 |      Richard Roe |     Fiction |    3 |      Mateo Jackson |      Inside the Whale |  AnyPublisher
   ```

## Selección de un subconjunto de columnas
<a name="getting-started.dml.read.columns"></a>

**Para consultar un subconjunto de columnas**

1. Abre Amazon Keyspaces AWS CloudShell y conéctate a ellos mediante el siguiente comando. Asegúrese de actualizar *us-east-1* con su propia región. 

   ```
   cqlsh-expansion cassandra.us-east-1.amazonaws.com 9142 --ssl
   ```

1. Para recuperar solo las columnas `award`, `category` y `year`, ejecute la siguiente consulta.

   ```
   SELECT award, category, year FROM catalog.book_awards ;
   ```

   La salida contiene solo las columnas especificadas en el orden indicado en la instrucción `SELECT`.

   ```
    award            | category    | year
   ------------------+-------------+------
                Wolf | Non-Fiction | 2020
                Wolf | Non-Fiction | 2020
                Wolf | Non-Fiction | 2020
    Kwesi Manu Prize |     Fiction | 2020
    Kwesi Manu Prize |     Fiction | 2020
    Kwesi Manu Prize |     Fiction | 2020
         Richard Roe |     Fiction | 2020
         Richard Roe |     Fiction | 2020
         Richard Roe |     Fiction | 2020
   ```

## Selección de un subconjunto de filas
<a name="getting-started.dml.read.rows"></a>

Al consultar un gran conjunto de datos, es posible que solo desee registros que cumplan determinados criterios. Para ello, puede añadir una cláusula `WHERE` al final de nuestra instrucción `SELECT`.

**Para consultar un subconjunto de filas**

1. Abre Amazon Keyspaces AWS CloudShell y conéctate a ellos mediante el siguiente comando. Asegúrese de actualizar *us-east-1* con su propia región. 

   ```
   cqlsh-expansion cassandra.us-east-1.amazonaws.com 9142 --ssl
   ```

1. Para recuperar solo los registros de los premios de un año determinado, ejecute la siguiente consulta.

   ```
   SELECT * FROM catalog.book_awards WHERE year=2020 AND award='Wolf' ;
   ```

   La instrucción `SELECT` anterior devuelve la siguiente salida.

   ```
    year | award | category    | rank | author             | book_title            | publisher
   ------+-------+-------------+------+--------------------+-----------------------+---------------
    2020 |  Wolf | Non-Fiction |    1 |        Wang Xiulan |      History of Ideas |  AnyPublisher
    2020 |  Wolf | Non-Fiction |    2 | Ana Carolina Silva |         Science Today | SomePublisher
    2020 |  Wolf | Non-Fiction |    3 |  Shirley Rodriguez | The Future of Sea Ice |  AnyPublisher
   ```

### Comprensión de la cláusula `WHERE`
<a name="getting-started.dml.where"></a>

La cláusula `WHERE` se utiliza para filtrar los datos y devolver solo los que cumplan los criterios especificados. Los criterios especificados pueden ser una condición simple o una condición compuesta. 

**Uso de condiciones en una cláusula `WHERE`**
+ Una condición simple: una única columna.

  ```
  WHERE column_name=value
  ```

  Puede utilizar una condición simple en una cláusula `WHERE` si se cumple alguna de las siguientes condiciones:
  + La columna es la única columna de la clave de partición de la tabla.
  + Ha añadido `ALLOW FILTERING` después de la condición en la cláusula `WHERE`.

    Tenga en cuenta que el uso de `ALLOW FILTERING` puede dar lugar a un rendimiento incoherente, sobre todo con tablas de gran tamaño y con varias particiones.
+ Una condición compuesta: múltiples condiciones simples conectadas por `AND`.

  ```
  WHERE column_name1=value1 AND column_name2=value2 AND column_name3=value3...
  ```

  Puede utilizar condiciones compuestas en una cláusula `WHERE` si se cumple alguna de las siguientes condiciones:
  + Las columnas que puede usar en la cláusula `WHERE` deben incluir todas o un subconjunto de las columnas de la clave de partición de la tabla. Si desea utilizar solo un subconjunto de las columnas de la cláusula `WHERE`, debe incluir un conjunto contiguo de columnas de clave de partición de izquierda a derecha, empezando por la primera columna de la clave de partición. Por ejemplo, si las columnas de la clave de partición son `year`, `month` y `award`, puede usar las siguientes columnas en la cláusula `WHERE`: 
    + `year`
    + `year` Y `month`
    + `year` Y `month` Y `award`
  + Añada `ALLOW FILTERING` después de la condición compuesta en la cláusula `WHERE`, como en el siguiente ejemplo.

    ```
    SELECT * FROM my_table WHERE col1=5 AND col2='Bob' ALLOW FILTERING ;
    ```

    Tenga en cuenta que el uso de `ALLOW FILTERING` puede dar lugar a un rendimiento incoherente, sobre todo con tablas de gran tamaño y con varias particiones.

### Pruébelo
<a name="getting-started.dml.try"></a>

Cree sus propias consultas CQL para obtener los siguientes resultados de su tabla `book_awards`:
+ Busque los ganadores de los premios Wolf de 2020 y haga que se muestren los títulos y autores de los libros, ordenados por su puesto en la clasificación.
+ Haga que se muestren los ganadores del primer puesto de todos los premios de 2020 y que aparezcan los títulos de los libros y los nombres de los premios.