基础SQL语句整理

来源:互联网 发布:js获取index 编辑:程序博客网 时间:2024/05/29 15:29

好久没写sql语句了,面试的时候被怼到,超级郁闷:(
回来之后花了一个晚上怒补了sql的基本知识,
下面是参考的sql必知必会写出的基本sql语句,方便以后查看~~_(:з)∠)_

检索数据

SELECT a1, a2, a3FROM A;

检索所有数据

SELECT *FROM A;

去掉检索中重复的值

SELECT DISTINCT vend_idFROM A;

限制检索结果的行数

SELECT a1, a2, a3FROM ALIMIT 5; --这是一条注释

排序检索结果(DESC降序排列)

SELECT a1, a2, a3FROM AORDER BY a1 DESC, a2;

过滤检索结果

SELECT a1, a2, a3FROM Awhere a1 = 1;-- 其他过滤条件: >, <, BETWEEN, IS NULL

高级过滤

SELECT a1, a2, a3FROM AWHERE a1 = 1 AND a2 = 2;--ANDOR--AND优先级大于OR
SELECT a1, a2, a3FROM AWHERE a4 IN (1, 2, 3);
SELECT a1, a2, a3FROM AWHERE NOT a1 = 1;

通配符过滤

SELECT a1, a2, a3FROM AWHERE pro_name LIKE 'fish%';--找出所有fish开头的项--%fish%: 包含fish的项--f%h: f开头h结尾

拼接SELECT元素结果

SELECT Concat(a1, a2,'(', RTRIM(a3), ')')FROM AWHERE NOT a1 = 1;--RTRIM用来去除多余的空格

使用别名

SELECT Concat(a1, a2,'(', RTRIM(a3), ')')    AS unitFROM AWHERE NOT a1 = 1;

常见的数据处理函数

提取字符串组成部分:    SUBTRING()数据类型转换:    CONVERT()取当前日期:    CURDATE()SQL常用文本处理函数:    ...(sql必知必会p67)

SQL聚集函数

AVG(): 返回某列的平均值COUNT(): 返回某列的行数SUM(): 返回某列值之和MAX(): 返回某列的最大值MIN(): 返回某列的最小值

创建分组

SELECT id, COUNT(*) AS NUMFROM AGROUP BY id;--GROUP BY出现在WHERE语句之后,  ORDER BY语句之前

过滤分组后的数据

SELECT id, COUNT(*) AS NUMFROM AGROUP BY idHAVING COUNT(*) >=2;--过滤分组前的数据使用WHERE--HAVING结合GROUP BY使用

子查询

复合语句有时可以用内联结代替 P110

联结

关系表的设计就是要把信息分解成多个表;一类数据一个表;各个表通过某些共同的值互相关联;使用联结在多个关系表中SELECT数据;
SELECT a1, a2, a3FROM A, BWHERE A.b1 == B.b1;--其中a3在另一个表中--这种联结成为内联结

内联结的另一个语法

SELECT a1, a2, a3FROM A INNER JOIN BON A.b1 == B.b1;--检索的表之间存在关联

外联结

SELECT A.a1, B.a2FROM A LEFT OUTER JOIN BON A.b1 == B.b1;--用于没有关联行的情况--LEFT表示OUT JOIN左边的表--(选择左边的表的所有行)--还有一种FULL OUTER JOIN,全部关联

组合查询(执行多条查询语句后汇总)

SELECT a1, a2, a3FROM A;UNIONSELECT a4FROM A;--可以使用UNION ALL保留所有行

插入数据

INSERT INTO A(              id,              name,              product)VALUES(       1,       breavo,       a1);
--复制一个表至另一个表INSERT INTO A(              id,              name,              product)SELECT id, name, productFROM A_NEW;
--上条的简化语法CREATE TABLE B ASSELECT * FROM A;

更新数据

UPDATE ASET a1 = 2,    a2 = 1WHERE id = 001;--删除某列的值,可将值SET为NULL

删除数据

DELETE FROM AWHERE 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 AADD project CHAR(20);

使表中的某一列成为主键

ALTER TABLE AADD CONSTRAINT PRIMARY KEY(project);

设置外键

ALTER TABLE AADD CONSTRAINT FOREIGN KEY (project) REFERENCES B(project)

删除表

DROP TABLE A;

SQL视图

P155

使用存储过程

p166可以理解为SQL语句的封装

事务处理

使用事务处理,确保成批的SQL操作要么完全执行,要么完全不执行,用来维护数据库的完整性
事务(transaction)指一组SQL语句回退(roll back)指撤销执行SQL语句的过程提交(commit)将未存储的SQL语句结果写入数据库表保留点(savepoint)指事务处理中设置的临时占位符
事务用来管理的语句INSERTDELETEUPDATE

游标

作用:在检索出来的行中前进或者后退一行或者多行。

主键\外键

主键:保证一列(或一组列)中的值是唯一的外键:表中的一列,其值必须在另一表的主键中

索引(需要继续寻找资料)

--想象一本书后的索引CREATE INDEX pro_name_indexON A(pro_name);
原创粉丝点击