SQL简单总结

SQL简单总结

NOTE:本文所用的都以postgreSQL为例,对标准SQL语句进行简单的总结,语法等细节详细参考《SQL基础教程》,下称《教程》。

1. 数据库

1.1 分类

  1. 层次数据库

  2. 关系数据库(最常用)

  3. 面向对象数据库

  4. xml数据库

  5. 键值存储数据库

    1.2 结构

    客户端sql语句》服务器《======》数据库(一般存储在硬盘上)

    ​ /|\<=====请求的数据\|/

2. 什么是SQL

SQL是为了操作数据库而开发的语言。

国际标准化组织(ISO)为 SQL 制定了相应的标准,以此为基准的SQL 称为标准 SQL 。大多数SQL语法都类似,但是不同的数据库的SQL语法还是不一样的。

3. 表的创建、删除、更新

目前在关系型数据库中,用来管理数据的二维表称之为(table)。表存储在数据库中,一个数据库中可以有多个表。

  • 创建

    数据库的创建:

    ​ 语法:CREATE DATABASE <数据库名称>;

    表的创建:

    ​ 语法:

    CREATE TABLE <表名>
    ( <列名1> <数据类型> <该列所需约束>,
    <列名2> <数据类型> <该列所需约束>,
    <列名3> <数据类型> <该列所需约束>,
    <列名4> <数据类型> <该列所需约束>,
    .
    .
    .
    <该表的约束1>, <该表的约束2>,……);
    

    ​ eg. 创建一个名为Product的表,存储商品ID、商品名、类型、销售价格、购买价格等列。并且,所有列必须指定数据类型。

    CREATE TABLE Product
    (product_id CHAR(4) NOT NULL,
     product_name VARCHAR(100) NOT NULL,
     product_type VARCHAR(32) NOT NULL,
     sale_price INTEGER ,
     purchase_price INTEGER ,
     regist_date DATE ,
     PRIMARY KEY (product_id));	  -- 主键约束
    

    其中:数据类型有:

    1. 数字型
      1. INTEGER。只能存储整数,不能存储小数。
    2. 字符型
      1. CHAR(10)。定长字符串,长度为10,不足的用空格补齐。
      2. VARCHAR(10)。变长字符串,最大长度为10,不足的时候不用空格补齐。
    3. 日期型
      1. DATE。存储日期的类型。

    约束条件指的是对存入数据的限制。如:NOT NULL,指的就是必须存入数据,不能为NULL。

  • 删除

    语法:DROP TABLE <表名>; 。需要注意的是删除的表是不能恢复的。

  • 更新

    • 表定义更新:ALTER TABLE <表名> ADD COLUMN <列的定义>; 。eg. ALTER TABLE Product ADD COLUMN product_name_pinyin VARCHAR(100); ALTER TABLE Product DROP COLUMN product_name_pinyin;

    • 向表中插入数据

      -- DML :插入数据
      BEGIN TRANSACTION;—————————①
      INSERT INTO Product VALUES ('0001', 'T恤衫', '衣服',1000, 500, '2009-09-20');
      INSERT INTO Product VALUES ('0002', '打孔器', '办公用品',500, 320, '2009-09-11');
      INSERT INTO Product VALUES ('0003', '运动T恤', '衣服',4000, 2800, NULL);
      INSERT INTO Product VALUES ('0004', '菜刀', '厨房用具',3000, 2800, '2009-09-20');
      INSERT INTO Product VALUES ('0005', '高压锅', '厨房用具',6800, 5000, '2009-01-15');
      INSERT INTO Product VALUES ('0006', '叉子', '厨房用具',500, NULL, '2009-09-20');
      INSERT INTO Product VALUES ('0007', '擦菜板', '厨房用具',880, 790, '2008-04-28');
      INSERT INTO Product VALUES ('0008', '圆珠笔', '办公用品',100, NULL,'2009-11-11');
      COMMIT;
      

4. 查询

  • SELECT

    语法:SELECT <列名>,……FROM <表名>; 。eg. SELECT product_id, product_name, purchase_price FROM Product;

    SELECT * FROM Product; 表示选取所有的列。

    SELECT product_id as id FROM Product;AS可以为列起别名。

  • DISTINCT

    效果:删除重复的行,达到去重效果。

    语法:SELECT DISTINCT product_type FROM Product;

  • WHERE

    效果:通过制定WHERE后面的条件,来筛选出想要的数据行。

    语法:SELECT <列名>, ……FROM <表名> WHERE <条件表达式>;

    eg. SELECT product_name, product_type FROM Product WHERE product_type = '衣服';

5. 运算符

  • 算数运算符:+、-、*、/。注意:所有包含 NULL 的计算,结果肯定是 NULL。

  • 比较运算符:=、<>、>、>=、<、<=。注意:不能对NULL使用比较运算符 。

  • 逻辑运算符:NOT、AND、OR。注意:AND运算符的优先级高于OR运算符。想要优先执行OR运算符时可以使用括号。

    但是当运算符涉及到NULL时,情况就不太一样了,详见教程P77。
    SQL简单总结

6. 函数

  • 聚合函数(聚合函数会将NULL排除在外。但COUNT(*)例外,并不会排除NULL。)

    • COUNT:计算表中的记录数(行数)

      eg. SELECT COUNT(*) FROM Product;

      注意:COUNT(*)会得到包含NULL的数据 行数,而COUNT(<列名>)会得到NULL之外的数据行数。

    • SUM:计算表中数值列中数据的合计值

    • AVG:计算表中数值列中数据的平均值

    • MAX:求出表中任意列中数据的最大值

    • MIN:求出表中任意列中数据的最小值

上一篇:mysql中 查询一对多关系的时候,获取最新的一条


下一篇:PbootCms兼容模式下微信分享网址无法访问修复方法