SQL学习3

SQL运算符

1、算术运算符

  • +:执行加法运算。
  • -:执行减法运算。
  • *:执行乘法运算。
  • /:用左操作数除右操作数。
  • %:用左操作数除右操作数并返回煜书余数。
    2、比较运算符
  • =:检查两个操作数的值是否相等,如果是,则条件为真(true)。
  • !=或<>:检查两个操作数的值是否相等,如果值不相等则条件为真(true)。
  • <或>:检查左操作数的值是否小于或大于右操作数的值,如果是则条件为真(true)。
  • <=或>=::检查左操作数的值是否小于等于或大于等于右操作数的值,如果是则条件为真(true)。
  • !<或!>::检查左操作数的值是否不小于或不大于右操作数的值,如果是则条件为真(true)。
    3、逻辑运算符
    1)、ALL:用于将值与另一个值集中的所有值进行比较。
    2)、AND:允许在SQL语句的WHERE子句中指定多个条件。
    3)、ANY:用于根据条件将值与列表中的任何适用值进行比较。
    4)、BETWEEN:用于选取在给定最小值和最大值内的值。值可以是数字,文本或日期。语法:
SELECT column_name(s)
FROM table_name
WHERE column_name (NOT)BETWEEN value1 AND value2;

eg(选择价格在10到20之间但CategoryID不是1、2或3的所有产品):

SELECT * FROM Products 
WHERE (Price BETWEEN 10 AND 20) 
AND NOT CategoryID IN (1,2,3); 

5)、EXISTS:用于搜索指定表中是否存在满足特定条件的行。
6)、IN:允许在WHERE子句中指定多个值。
IN运算符是多个OR条件的简写。语法:

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1, value2, ...);

SELECT column_name(s)
FROM table_name
WHERE column_name IN (SELECT STATEMENT);

7)、LIKE:用于使用通配符运算符将值与类似值进行比较。
在WHERE子句中使用LIKE运算符来搜索列中的指定模式。
有两个通配符与LIKE运算符一起使用:

  • :表示零个,一个或多个字符
  • _:表示单个字符
    语法:
SELECT column1, column2, ...
FROM table_name
WHERE columnN LIKE pattern;
LIKE运算符 描述
WHERE CustomerName LIKE ‘a%’ 查找以“a”开头的任何值
WHERE CustomerName LIKE ‘%a’ 查找以“a”结尾的任何值
WHERE CustomerName LIKE ‘%or%’ 在任何位置查找任何具有“or”的值
WHERE CustomerName LIKE ‘_r%’ 在第二个位置查找任何具有“r”的值
WHERE CustomerName LIKE ‘a_%_%’ 查找以“a”开头且长度至少为3个字符的值
WHERE ContactName LIKE ‘a%o’ 找到以"a"开头,以"o"结尾的值

8)、NOT:否定运算符,翻转使用它的逻辑运算符的含义。
9)、OR:用于组合SQL语句的WHERE子句中的多个条件。
10)、IS NULL:用于将值与NULL值进行比较。
11)、 UNIQUE:搜索指定表的每一行的唯一性(无重复项)。

ildcards通配符

通配符用于替换字符串中的任何其他字符。通配符与SQL LIKE运算符一起使用。
SQL [charlist] 通配符(选择所有客户City以"b"、"s"或"p"开头)。eg:

SELECT * FROM Customers 
WHERE City LIKE '[bsp]%';

[!charlist]通配符(选择所有客户的城市不以“b”,“s”或“p”开头)eg:

SELECT * FROM Customers
WHERE City LIKE '[!bsp]%';

SELECT * FROM Customers
WHERE City NOT LIKE '[bsp]%';

SQL表达式

表达式是计算值的一个或多个值、运算符和SQL函数的组合。

句法:

SELECT语句的基本语法,eg:

SELECT column1, column2, columnN 
FROM table_name 
WHERE [CONDITION|EXPRESSION];

1、布尔表达式(基于匹配单个值获取数据),句法:

SELECT column1, column2, columnN 
FROM table_name 
WHERE SINGLE VALUE MATCHING EXPRESSION;

eg:

(表)
SQL> SELECT * FROM CUSTOMERS;
+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+
7 rows in set (0.00 sec)
SQL> SELECT * FROM CUSTOMERS WHERE SALARY = 10000;
+----+-------+-----+---------+----------+
| ID | NAME  | AGE | ADDRESS | SALARY   |
+----+-------+-----+---------+----------+
|  7 | Muffy |  24 | Indore  | 10000.00 |
+----+-------+-----+---------+----------+
1 row in set (0.00 sec)

2、数值表达式(用于在任何查询中执行任何数学运算),句法:

SELECT numerical_expression as  OPERATION_NAME
[FROM table_name
WHERE CONDITION] ;

eg:

SQL> SELECT (15 + 6) AS ADDITION
+----------+
| ADDITION |
+----------+
|       21 |
+----------+
1 row in set (0.00 sec)

有几个内置函数,如avg()、sum()、count()等,用于对表或特定表列执行所谓的聚合数据计算。

SQL> SELECT COUNT(*) AS "RECORDS" FROM CUSTOMERS; 
+---------+
| RECORDS |
+---------+
|       7 |
+---------+
1 row in set (0.00 sec)

3、日期表达式(返回当前系统日期和时间值)。eg:

SQL>  SELECT CURRENT_TIMESTAMP;
+---------------------+
| Current_Timestamp   |
+---------------------+
| 2009-11-12 06:40:23 |
+---------------------+
1 row in set (0.00 sec)

SQL>  SELECT  GETDATE();;
+-------------------------+
| GETDATE                 |
+-------------------------+
| 2009-10-22 12:07:18.140 |
+-------------------------+
1 row in set (0.00 sec)

4、选择数据库 USE语句
SQL USE语句用于选择SQL架构中的任何现有数据库。句法:

USE DatabaseName;

查看可用的数据库,eg:

SQL> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| AMROOD             |
| TUTORIALSPOINT     |
| mysql              |
| orig               |
| test               |
+--------------------+
6 rows in set (0.00 sec)
SQL SELECT TOP 子句

用于指定要返回的记录数量。语法:

 SELECT TOP number|percent column_name(s)
FROM table_name
WHERE condition;

SELECT TOP 实例(从"Customers" 表中选择前两条记录),eg:

SELECT TOP 2 * FROM Customers;

SELECT TOP PERCENT 实例(从 “Customers” 表中选择前50%的记录),eg:

SELECT TOP 50 PERCENT * FROM Customers;

TOP,LIMIT和ROWNUM(从"Customers"表中选择国家为"Germany"的前三个记录):

SELECT TOP 3 * FROM Customers;
WHERE Country='Germany';

LIMIT:

SELECT * FROM Customers
WHERE Country='Germany';
LIMIT 3;

ROWNUM:

SELECT * FROM Customers
WHERE Country='Germany' AND ROWNUM <= 3;

LIMIT是一种简单地分页方法,使用它可以减少查询数据返回的时间,提高效率

Join连接

用于把来自两个或多个表的行结合起来。
1)、INNER JOIN(内部连接):如果表中有至少一个匹配,则返回行
语法:

SELECT column_name(s)
FROM table1
INNER JOIN table2 ON table1.column_name = table2.column_name;

2)、LEFT JOIN(左连接):即使右表中没有匹配,也从左表返回所有的行
语法:

SELECT column_name(s)                
FROM table1                
LEFT JOIN table2                
ON table1.column_name=table2.column_name;       

SELECT column_name(s)                
FROM table1                
LEFT OUTER JOIN table2                
ON table1.column_name=table2.column_name;     

3)、RIGHT JOIN(右连接):即使左表中没有匹配,也从右表返回所有的行
语法:

SELECT column_name(s)
FROM table1
RIGHT JOIN table2 ON table1.column_name = table2.column_name;

4)、FULL JOIN(完整外部连接):只要其中一个表中存在匹配,则返回行
语法:

SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2 ON table1.column_name = table2.column_name;

5)、SELF JOIN(自连接):用于将表连接到自己,就好像该表是两个表一样,临时重命名了SQL语句中的至少一个表
语法:

SELECT column_name(s)
FROM table1 T1, table1 T2
WHERE condition;

6)、?CARTESIAN JOIN:从两个或多个连接表返回记录集的笛卡儿积

发布了11 篇原创文章 · 获赞 1 · 访问量 239

猜你喜欢

转载自blog.csdn.net/qq_45949348/article/details/105322365