| = | Equal | `SELECT * FROM students WHERE first_name = 'Tantia'` |
| != or <> | Not equal | `SELECT * FROM students WHERE first_name != 'Tantia'` |
| NOT | NOT | `SELECT * FROM students WHERE NOT first_name = 'John'` |
| > | Greater than | `SELECT * FROM students WHERE iq > 150` |
| < | Less than | `SELECT * FROM students WHERE age < 100` |
| >= | Greater than or equal | `SELECT * FROM students WHERE age >= 18` |
| <= | Less than or equal | `SELECT * FROM students WHERE age <= 18` |
| AND | AND | `SELECT * FROM students WHERE first_name = 'Tantia' AND last_name = 'Tope'` |
| OR | OR | `SELECT * FROM students WHERE first_name = 'John' OR last_name = 'Mycroft'` |
| IN | IN | `SELECT * FROM students WHERE first_name IN ('John', 'Mycroft')` |
| BETWEEN | BETWEEN | `SELECT * FROM students WHERE iq BETWEEN 100 AND 150` |
| LIKE | LIKE | `SELECT * FROM students WHERE first_name LIKE '%T%'` |
| REGEXP | REGEXP | `SELECT * FROM students WHERE first_name REGEXP '^[A-Z]{1}'` |
| NULL | NULL | `SELECT * FROM students WHERE first_name IS NULL` |
| NOT NULL | NOT NULL | `SELECT * FROM students WHERE first_name IS NOT NULL` |
#### String matching wildcards
With `LIKE` you can use the following two wildcard characters in the pattern:
*`%` matches any number of characters, even zero characters.
*`_` matches exactly one character.
```sql
SELECT * FROM students WHERE first_name LIKE 'T%';
```
```sql
SELECT * FROM students WHERE first_name LIKE 'T_';
```
### Update rows
**Keyword**: `UPDATE`
**Syntax**: `UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition`
##### Examples
1. Update a row
```sql
UPDATE students SET first_name = 'Tantia' WHERE id = 1;
```
2. Update a row with a condition
```sql
UPDATE students SET first_name = 'Tantia' WHERE id = 1 AND first_name = 'John';
```
3. Update multiple columns
```sql
UPDATE students SET first_name = 'Tantia', last_name = 'Tope' WHERE id = 1 AND first_name = 'John';
```
### Delete rows
**Keyword**: `DELETE`
**Syntax**: `DELETE FROM table_name WHERE condition`
##### Examples
1. Delete a row with a condition
```sql
DELETE FROM students WHERE id = 1 AND first_name = 'John';
```
2. Delete a multiple rows
```sql
DELETE FROM students WHERE id IN (1, 2, 3);
```
## Join
Join is the widely-used clause in the SQL Server essentially to combine and retrieve data from two or more tables. In a real-world relational database, data is structured in many tables and which is why, there is a constant need to join these multiple tables based on logical relationships between them.
### Inner join
Inner Join clause in SQL Server creates a new table (not physical) by combining rows that have matching values in two or more tables. This join is based on a logical relationship (or a common field) between the tables and is used to retrieve data that appears in both tables.
Assume, we have two tables, Table A and Table B, that we would like to join using SQL Inner Join. The result of this join will be a new result set that returns matching rows in both these tables. The intersection part in black below shows the data retrieved using Inner Join.