基础SQL语句整理(建议收藏)
程序员文章站
2022-05-25 12:44:46
好久没写sql语句了,面试的时候被怼到,回来之后花了一个晚上怒补了sql的基本知识,下面是参考的sql必知必会写出的基本sql语句,方便以后查看
检索数据
SELECT a...
好久没写sql语句了,面试的时候被怼到,回来之后花了一个晚上怒补了sql的基本知识,下面是参考的sql必知必会写出的基本sql语句,方便以后查看
检索数据
SELECT a1, a2, a3 FROM A;
检索所有数据
SELECT * FROM A;
去掉检索中重复的值
SELECT DISTINCT vend_id FROM A;
限制检索结果的行数
SELECT a1, a2, a3 FROM A LIMIT 5; --这是一条注释
排序检索结果(DESC降序排列)
SELECT a1, a2, a3 FROM A ORDER BY a1 DESC, a2;
过滤检索结果
SELECT a1, a2, a3 FROM A where a1 = 1; -- 其他过滤条件: >, <, BETWEEN, IS NULL
高级过滤
SELECT a1, a2, a3 FROM A WHERE a1 = 1 AND a2 = 2; --AND 和 OR --AND优先级大于OR
SELECT a1, a2, a3 FROM A WHERE a4 IN (1, 2, 3);
SELECT a1, a2, a3 FROM A WHERE NOT a1 = 1;
通配符过滤
SELECT a1, a2, a3 FROM A WHERE pro_name LIKE 'fish%'; --找出所有fish开头的项 --%fish%: 包含fish的项 --f%h: f开头h结尾
拼接SELECT元素结果
SELECT Concat(a1, a2,'(', RTRIM(a3), ')') FROM A WHERE NOT a1 = 1; --RTRIM用来去除多余的空格
使用别名
SELECT Concat(a1, a2,'(', RTRIM(a3), ')') AS unit FROM A WHERE NOT a1 = 1;
常见的数据处理函数
提取字符串组成部分: SUBTRING() 数据类型转换: CONVERT() 取当前日期: CURDATE() SQL常用文本处理函数: ...(sql必知必会p67)
SQL聚集函数
AVG(): 返回某列的平均值 COUNT(): 返回某列的行数 SUM(): 返回某列值之和 MAX(): 返回某列的最大值 MIN(): 返回某列的最小值
创建分组
SELECT id, COUNT(*) AS NUM FROM A GROUP BY id; --GROUP BY出现在WHERE语句之后, ORDER BY语句之前
过滤分组后的数据
SELECT id, COUNT(*) AS NUM FROM A GROUP BY id HAVING COUNT(*) >=2; --过滤分组前的数据使用WHERE --HAVING结合GROUP BY使用
子查询
复合语句 有时可以用内联结代替 P110
联结
关系表的设计就是要把信息分解成多个表; 一类数据一个表; 各个表通过某些共同的值互相关联; 使用联结在多个关系表中SELECT数据;
SELECT a1, a2, a3 FROM A, B WHERE A.b1 == B.b1; --其中a3在另一个表中 --这种联结成为内联结
内联结的另一个语法
SELECT a1, a2, a3 FROM A INNER JOIN B ON A.b1 == B.b1; --检索的表之间存在关联
外联结
SELECT A.a1, B.a2 FROM A LEFT OUTER JOIN B ON A.b1 == B.b1; --用于没有关联行的情况 --LEFT表示OUT JOIN左边的表 --(选择左边的表的所有行) --还有一种FULL OUTER JOIN,全部关联
组合查询(执行多条查询语句后汇总)
SELECT a1, a2, a3 FROM A; UNION SELECT a4 FROM A; --可以使用UNION ALL保留所有行
插入数据
INSERT INTO A( id, name, product) VALUES( 1, breavo, a1);
--复制一个表至另一个表 INSERT INTO A( id, name, product) SELECT id, name, product FROM A_NEW;
--上条的简化语法 CREATE TABLE B AS SELECT * FROM A;
更新数据
UPDATE A SET a1 = 2, a2 = 1 WHERE id = 001; --删除某列的值,可将值SET为NULL
删除数据
DELETE FROM A WHERE id = 2;
创建表
CREATE TABLE A ( id CHAR(10) NOT NULL, name CHAR(254) NOT NULL DEFAULT 1, product VARCHAR(1000) NOT NULL PRIMARY KEY project VARCHAR(1000) NOT NULL REFERENCES );
更新表
--给表增加一列数据 ALTER TABLE A ADD project CHAR(20);
使表中的某一列成为主键
ALTER TABLE A ADD CONSTRAINT PRIMARY KEY(project);
设置外键
ALTER TABLE A ADD CONSTRAINT FOREIGN KEY (project) REFERENCES B(project)
删除表
DROP TABLE A;
SQL视图
P155
使用存储过程
p166 可以理解为SQL语句的封装
事务处理
使用事务处理,确保成批的SQL操作要么完全执行,要么完全不执行, 用来维护数据库的完整性
事务(transaction)指一组SQL语句 回退(roll back)指撤销执行SQL语句的过程 提交(commit)将未存储的SQL语句结果写入数据库表 保留点(savepoint)指事务处理中设置的临时占位符
事务用来管理的语句 INSERT DELETE UPDATE
游标
作用:在检索出来的行中前进或者后退一行或者多行。
主键\外键
主键:保证一列(或一组列)中的值是唯一的 外键:表中的一列,其值必须在另一表的主键中
索引(需要继续寻找资料)
--想象一本书后的索引 CREATE INDEX pro_name_index ON A(pro_name);