sql问题

1、MySQL 中使用 REGEXP 或 NOT REGEXP 运算符 (或 RLIKE 和 NOT RLIKE) 来操作正则表达式。

选取 name 以 A 到 H 字母开头的 用户: SELECT * FROM user WHERE name REGEXP '^[A-H]';

选取 name 不以 A 到 H 字母开头的: SELECT * FROM user WHERE name REGEXP '^[^A-H]'; 不在字符列A-H中的任何单一字符 <=> [!A-H]

2、BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。

IN 操作符允许您在 WHERE 子句中规定多个值。 SELECT column_name(s) FROM table_name WHERE column_name IN (value1,...);

ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序。 ORDER BY 多列的时候,先按照第一个column name排序,在按照第二个column name排序;   

DISTINCT 关键词用于返回唯一不同的值。 SELECT DISTINCT column_name,column_name FROM table_name;


3、关联操作:

  • INNER JOIN:如果表中有至少一个匹配,则返回行
  • SQL INNER JOIN
  • LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行
  • SQL LEFT JOIN
  • RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行
  • SQL RIGHT JOIN
  • FULL JOIN:只要其中一个表中存在匹配,则返回行(mysql没有)
  • SQL FULL OUTER JOIN


4、UNION 操作符用于合并两个或多个 SELECT 语句的结果集。如果允许重复的值,请使用 UNION ALL。

请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。

只能在最后使用一个ORDER BY命令,是将两个查询结果合在一起之后,再进行排序!绝对不能写两个ORDER BY命令。

5、INSERT INTO SELECT 语句从一个表复制数据,然后把数据插入到一个已存在的表中。

格式:INSERT INTO table2  (column_name(s))  SELECT column_name(s) FROM table1;

 实例:INSERT INTO Websites (name, country) SELECT app_name, country FROM apps;

6、CREATE TABLE 语句用于创建数据库中的表。表由行和列组成,每个表都必须有个表名。

CREATE TABLE table_name
(column_name1 data_type(size),
column_name2 data_type(size),
column_name3 data_type(size),
....);

7、处理 NULL 值。  如果值是 NULL 则返回 0(预设的值)

ISNULL() ISNULL(列名,0) SQL Server / MS Access

NVL()、 NVL(列,0) Oracle

IFNULL()  IFNULL(列,0) MySQL

COALESCE()  COALESCE(列,0) MySQL

 8、group by用法

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;

有用的 Aggregate 函数

  • AVG() - 返回平均值 COUNT() - 返回行数
  • MAX() - 返回最大值 MIN() - 返回最小值
  • SUM() - 返回总和

WITH ROLLUP 可以实现在分组统计数据基础上再进行相同的统计

SELECT name, SUM(singin) as singin_count FROM  employee_tbl GROUP BY name WITH ROLLUP;

9、having HAVING 子句可以让我们筛选分组后的各组数据。

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value;


9、标量函数

ROUND() 函数用于把数值字段舍入为指定的小数位数。

SELECT ROUND(column_name,decimals) FROM table_name;

ROUND(X): 返回参数X的四舍五入的一个整数。

ROUND(X,D): 返回参数X的四舍五入的有 D 位小数的一个数字。如果D为0,结果将没有小数点或小数部分。

NOW() 函数返回当前系统的日期和时间。

IF(expr,v1,v2)如果表达式expr是TRUE(expr<>0 and expr<>NULL),则IF()的返回值为v1;否则返回值为v2。







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值