首页 > 数据库 > SQL Server >

基础SQL语句整理(建议收藏)

2017-09-11

基础SQL语句整理(建议收藏)。好久没写sql语句了,面试的时候被怼到,回来之后花了一个晚上怒补了sql的基本知识,下面是参考的sql必知必会写出的基本sql语句,方便以后查看

好久没写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 &#39;fish%&#39;;
--找出所有fish开头的项
--%fish%: 包含fish的项
--f%h: f开头h结尾

拼接SELECT元素结果

SELECT Concat(a1, a2,&#39;(&#39;, RTRIM(a3), &#39;)&#39;)
FROM A
WHERE NOT a1 = 1;
--RTRIM用来去除多余的空格

使用别名

SELECT Concat(a1, a2,&#39;(&#39;, RTRIM(a3), &#39;)&#39;)
    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);
相关文章
最新文章
热点推荐