SQL常用

便捷工具 DataGrip(图形化界面工具)

一、sql语句执行顺序

SQL语句的执行顺序如下:

  1. FROM子句:确定数据来源,包括JOIN的表。

  2. ON:执行JOIN条件。

  3. JOIN:如果有JOIN,根据JOIN类型(如INNER、LEFT),将相关行组合起来。

  4. WHERE子句:过滤记录。

  5. GROUP BY子句:根据指定的列分组记录。

  6. HAVING子句:过滤分组。

  7. SELECT子句:选取特定的列。

  8. DISTINCT子句:去除重复数据。

  9. ORDER BY子句:最后对结果进行排序。

  10. LIMIT子句(MySQL特有):限制输出行数。

这是一个简单的SQL查询例子,展示了上述各个步骤的顺序:

SELECT DISTINCT column1 FROM table1 
JOIN table2 ON table1.column_id = table2.column_id
 WHERE column2 = 'some_value' 
GROUP BY column1 HAVING COUNT(*) > 1 
ORDER BY column1 L
IMIT 10;

在这个例子中,数据首先从table1table2中获取,通过ON子句进行JOIN,然后应用WHERE子句进行过滤,接着根据column1进行分组并使用HAVING子句过滤分组,选取column1,去除重复记录,最后按column1排序,并限制输出结果为10行。

二、
-- 创建索引
CREATE INDEX index_name
ON table_name (column_name)
eg: 
CREATE index 名称 on resume(rname); //注:名称不加引号
-- 删除索引
DROP INDEX index_name
ON table_name
eg:
DROP INDEX 名称 on resume;
 -- 新增列
 ALTER TABLE table_name
ADD column_name data_type
eg:
alter table resume add sex char(2);
-- 删除列
ALTER TABLE table_name
DROP  column_name
eg:
alter TABLE resume DROP sex ;
-- MySQL创建表 并插入数据 表必须存在
-- 创建新表  复制表结构,不包括数据
CREATE TABLE selinto like resume;
-- 插入数据 
insert into selinto SELECT * from resume WHERE rname like'工程%';
-- SQL Server、 PostgreSQL 可支持 创建表同时插入语句
SELECT * INTO selinto FROM resume WHERE rname='工四';

eg:
-- SQL 语句选取 name 以 "G"、"F" 或 "s" 开始的语句
SELECT * FROM Websites WHERE name REGEXP '^[GFs]';
-- name 以 A 到 H 字母开头的语句
SELECT * FROM Websites WHERE name REGEXP '^[A-H]';
-- name 不以 A 到 H 字母开头的语句
SELECT * FROM Websites WHERE name REGEXP '^[^A-H]';
-- 选取name 为 "Google" 或 "菜鸟教程" 的语句
SELECT * from resume where rname in('项目4号','工程项目三号');
-- 选取 name 以介于 'A' 和 'H' 之间字母开始的所有语句
SELECT * FROM Websites WHERE name BETWEEN 'A' AND 'H';
-- 把两列结合在一起 并命名
SELECT CONCAT(sid,',',rname) as othername from resume;
-- EXPLAIN 关键字查看索引
explain SELECT * from ss;
-- show index关键字用于查看某一表中的所有索引
show index from ss;
-- 创建索引 alter 普通索引 index normal_index(id),唯一索引 unique index unique_index(username),多列索引 index multi_index(username, email)
alter table ss add index multi_index(sname(9));
-- alter 关键字删除索引
alter table [表名] drop index [索引名];
-- 从ss表中删除multi_index索引
alter table ss drop index multi_index;
-- drop 关键字删除索引
drop index [索引名] on [表名]
drop index  unique_index on ss;
-- 创建索引
create unique [unique|fulltext|spatial] index [索引名] ON [表名](
		[属性名1] [(长度)] [asc | desc],
		...
		[属性名n] [(长度)] [asc | desc]
	);
CREATE UNIQUE index unique_index on ss(price);

-- 查看排序缓冲区大小
show VARIABLES like 'sort_buffer_size';
  • INNER JOIN(简写 join):如果表中有至少一个匹配,则返回行

  • LEFT JOIN(也可写为 left outer join):即使右表中没有匹配,也从左表返回所有的行

  • RIGHT JOIN(也可写为 right outer join):即使左表中没有匹配,也从右表返回所有的行

  • FULL JOIN(也可写为 full outer join):只要其中一个表中存在匹配,则返回行

    索引

    优点:

    提高查询效率,

    提高排序效率

    缺点:(可忽略)

    占用磁盘空间(便宜)

    影响增删改的效率注:如果没有特别指明,都是指B+树结构组织的索引。

       二叉树、红黑树二叉树缺点:顺序插入时,会形成一个链表,查询性能大大降低。大数据量情况下,层级较深,检索速度慢。 (最多有两个分支)
红黑树缺点:大数据量情况下,等级较深、检索速度慢。

绿色为数据内容

不断更新中.......

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值