常用sql语句

sql语句用于对数据库中的表数据进行增删改查操作

-- distinct  用于不重复的字段值

SELECT DISTINCT plan_code FROM verification_project_info;

-- and or  用于连接过滤条件

SELECT * FROM verification_project_info WHERE project_id=43 OR project_id=38 (project_id!=44) ORDER BY create_time DESC;

SELECT Store_Name FROM Store_Information WHERE Sales > 1000 OR (Sales < 500 AND Sales > 275);

-- in  用于过滤某些不连续的特定字段值的数据

SELECT * FROM verification_project_info WHERE type_collection IN ('宣导会费','第三方人员激励');

-- between 用于过滤连续范围内的数据

SELECT * FROM verification_project_info WHERE create_time BETWEEN "2019-01-22 13:15:54" AND "2019-01-25 15:44:15";

-- like 模糊查询

SELECT * FROM verification_project_info WHERE project_name LIKE “%人员激励%” '提供%‘ ’%宣导会费)';

% (百分比符號):代表零個、一個、或數個字母

_ (底線):代表剛好一個字母

-- order by 排序

asc 由小往大排序

desc 由大往小排序

-- 函数

AVG(平均) COUNT(计数) MAX(最大值) MIN(最小值) SUM(求和)

-- group by 分组

SELECT Store_Name, SUM(Sales) FROM Store_Information GROUP BY Store_Name;

-- having 对函数产生的值来设定条件,并不一定要包含group by子句

SELECT Store_Name, SUM(Sales) FROM Store_Information GROUP BY Store_Name HAVING SUM(Sales) > 1500;

-- 连接 内部连接:选取多表格中的相同值 外部连接:第二個表格沒有相對的資料時, SQL 會傳回 NULL 值

SELECT A1.Store_Name, SUM(A2.Sales) SALES FROM Georgraphy A1, Store_Information A2 WHERE A1.Store_Name = A2.Store_Name (+) GROUP BY A1.Store_Name;

-- null / not null

SELECT * FROM verification_project_info WHERE parent_id IS NULL (parent_id IS NOT NULL) ORDER BY create_time DESC

-- left join

SELECT SUM(item.voucher_price) FROM promotion_voucher_item item LEFT JOIN promotion_voucher_info info ON item.voucher_type_id = info.id AND item.store_code = "SFA202055871" AND (info.generation_type = 0 OR info.generation_type = 1) AND item.generate_time >= '2019-03-01 00:00:00' AND item.generate_time <= '2019-04-01 00:00:00'

-- 创建表格

CREATE TABLE Customer (First_Name char(50), Last_Name char(50), Address char(50), City char(50);

-- 主键

用来标识独一无二的记录;主键可包含一个或多个字段,包含多个字段时,称为组合键

-- 外键

一个表的字段指向另一个表主键,该键就称为外键;目的确保资料的完整性

-- 索引

用于加快表格中查询速度;CREATE INDEX "索引名" ON "表格名" (欄位名);

-- 改变表结构 alter table

-- 删表 DROP TABLE Customer;

-- 清除表内容,保留表结构 TRUNCATE TABLE Customer;

-- 表中插入数据

一次输入一笔 INSERT INTO "表格名" ("欄位1", "欄位2", ...) VALUES ("值1", "值2", ...);

一次输入多笔 INSERT INTO "表格1" ("欄位1", "欄位2", ...) SELECT "欄位3", "欄位4", ... FROM "表格2";

-- 修改表中数据 UPDATE "表格名" SET "欄位1" = [新值] WHERE "條件";

-- 删除表中的数据 DELETE FROM "表格名" WHERE "條件";

DELETE FROM Store_Information WHERE Store_Name = 'Los Angeles';

-- union

将两个sql语句的结果合并起来,结果是只会看到不同的字段值

一个限制是两个sql语句所产生的字段需要是相同的

SELECT Txn_Date FROM Store_Information UNION SELECT Txn_Date FROM Internet_Sales;

-- union all 结果允许相同的字段值

-- 子查询 在where或having子句中插入另一个sql语句时,为子查询架构

SELECT SUM(Sales) FROM Store_Information WHERE Store_Name IN (SELECT Store_Name FROM Geography WHERE Region_Name = 'West');

SELECT SUM(a1.Sales) FROM Store_Information a1 WHERE a1.Store_Name IN (SELECT Store_Name FROM Geography a2 WHERE a2.Store_Name = a1.Store_Name);

-- exists exists用来检测内查询有没有产生结果,若有,则执行外查询的sql,若没有的话,整个sql不会产出任何结果

SELECT SUM(Sales) FROM Store_Information WHERE EXISTS (SELECT * FROM Geography WHERE Region_Name = 'West');

-- case

SQL中的CASE表达式是一种通用的 条件表达式,类似于其他语言中的if/else语句。 它用于在SQL语句中实现条件逻辑。 CASE表达式以WHEN子句开始,后面跟着一个或多个WHEN条件,每个WHEN条件后面跟着一个THEN子句。 如果任何WHEN条件为真,则返回相应的THEN子句中的表达式。 如果没有任何WHEN条件为真,则可以选择性地使用ELSE子句来指定一个默认的表达式。

SELECT CASE ("欄位名") WHEN "條件1" THEN "結果1" WHEN "條件2" THEN "結果2" ... [ELSE "結果N"] END FROM "表格名";

SELECT Store_Name, CASE Store_Name WHEN 'Los Angeles' THEN Sales * 2 WHEN 'San Diego' THEN Sales * 1.5 ELSE Sales END FROM Store_Information;

--SQL的delete, drop, truncate 区别

  1. 执行速度:drop > truncate > detele。
  2. delete 和 truncate 只删除表数据,而 drop 会删除表数据和表结构以及表的索引、约束和触发器。
  3. delete 可以加 where 条件实现部分数据删除,而 truncate 和 drop 不能加 where 条件是整体删除。
  4. truncate 和 drop 是立即执行,且不能恢复;而 delete 会走事务,可以撤回和恢复。
  5. truncate 会重置自增列为 1,而 delete 不会重置自增列。
  6. truncate 和 drop 是 DDL 语句,而 delete 是 DML 语句。
posted @ 2022-01-14 15:58  meiyouyou  阅读(34)  评论(0编辑  收藏  举报