zoukankan      html  css  js  c++  java
  • Java SQL基础

    SQL基础

    1、DataBase

    • 创建:CREATE DATABASE DATABASE_NAME ;
    • 使用:USE DATABASE_NAME ;
    • 删除:DROP DATABASE DATABASE_NAME ;

    2、Table

    创建

    CREATE TABLE TABLE_NAME (
        COLUMNS TYPES
        ......
    ) [CHARACTER SET UTF8] ;

    删除

    1) TRUNCATE 。清空表内容,保留表结构。效率非常高,且不记录日志。

    TRUNCATE TABLE TABLE_NAME ;

    2) DELETE 。删除表内容,按条件删除。若无删除条件,则将表内容全部删除。不影响表结构。很少使用。

    -- 按条件删除指定内容,使用十分至少,一般由改状态字段来实现伪删除(set isDelete=true)
    DELETE FROM TABLE_NAME WHERE CONDITION ;
    -- 清空表,与TRUNCATE作用相同,但将记录日志,且效率低
    DELETE FROM TABLE_NAME ;

    3) DROP 。删除表内容及表结构。

    DROP TABLE TABLE_NAME;

    表结构

    查看

    DESC TABLE_NAME ;

    修改

    -- 增加字段
    ALTER TABLE TABLE_NAME ADD COLUMNS TYPES, ... ;
    -- 修改字段
    ALTER TABLE TABLE_NAME MODIFY COULMNS TYPES, ... ;
    -- 删除字段
    ALTER TABLE TABLE_NAME DROP COLUMNS;

    增加

    INSERT INTO TABLE_NAME (COLUMNS TYPES , ...) VALUES (VALS , ...) ;

    删除

    DELETE FROM TABLE_NAME WHERE CONDITION ;

    修改

    UPDATE TABLE_NAME SET COLUMN_NAME=VAL WHERE CONDITION ;

    3、查询SELECT

    基本查询语句

    -- 查询表所有字段内容
    SELECT * FROM TABLE_NAME ;
    
    -- 按条件查询所有字段内容
    SELECT * FROM TABLE_NAME WHERE CONDITION ;
    
    -- 按条件查询指定字段内容
    SELECT COLUMNS, ... FROM TABLE_NAME WHERE CONDITION ;

    条件查询

    -- IN 查询, 判断字段值是否在指定内容之中
    SELECT * FROM TABLE_NAME WHERE COLUMN_NAME IN (VAL1, VAL2, ...) ;
    
    -- EXISTS 查询,与 IN 效果类似,EXISTS之内为一个SELECT子查询,并将外部字段作为参数传入内部查询
    -- EXISTS函数中参数只要有结果,则返回TRUE
    SELECT * FROM TABLE_NAME WHERE EXISTS (SELECT * FROM SUB_TABLE WHERE TABLE_COLUMN=SUB_TAB_COLUMN) ;

    模糊查询

    -- LIKE + 通配表达式 实现模糊查询
    SELECT * FROM TABLE WHERE A LIKE "N%" ;

    SQL常用通配符:

    单个占位符: _

    匹配0到N个字符: %

    匹配所有: *

    子查询:将查询结果作为一个表或字段值成为SELECT、IN等的操作对象

    -- SELECT 子查询,注意标要取别名
    SELECT * FROM (SELECT A, B, C FROM TABLE1)D ;
    
    -- WHERE 子查询
    SELECT * FROM TABLE1 WHERE A=(SELECT MAX(B) FROM TABLE2) ;
    
    -- IN 子查询
    SELECT * FROM TABLE1 WHERE A IN (SELECT B FROM TABLE2) ;

    联合查询

    -- UNION ALL 查询,将多个查询结果进行拼接,使之在同一个表中展示
    -- 唯一条件:各查询字段数必须一致,否则将报错
    SELECT A, B, C FROM TABLE1 UNION ALL SELECT D, E, F FROM TABLE2 ;
    
    -- 当某个字段数不足时,通过拼接 '' 空字段等使之字段数相同
    SELECT A, B, C FROM TABLE1 UNION ALL SELECT D, E, '' FROM TABLE2 ;

    分组查询

    -- 分组查询: 即将查询结果按字段进行分组
    -- WHERE 条件需放在分组查询前
    SELECT * FROM TABLE1 WHERE CONDITIONS GROUP BY A, B ;
    
    -- 对分组查询结果进行筛选时,WHERE条件将不再起作用,WHERE为查询时过滤,HAVING为查询后过滤,此时用到HAVING 关键字
    SELECT * FROM TABLE1 WHERE CONDITIONS GROUP BY A, B HAVING CONDITIONS;

    常用分组聚合函数

    MAX()   MIN()  AVG()  SUM()  COUNT()

    COUNT函数将参数所有非空值进行统计,返回统计值

    当不分组时,函数的默认参数为所有对象的值

    排序

    SELECT * FROM TABLE1 WHERE CONDITION GROUP BY A HAVING CONDITION ORDER BY B ;

    默认为升序排序 ASC

    降序排序

    SELECT * FROM TABLE1 WHERE CONDITION GROUP BY A HAVING CONDITION ORDER BY B DESC ;

    分页查询

    SELECT * FROM TABLE ORDER BY A LIMIT M, N ;

    LIMIT后跟一个或者两个参数。当参数为一个时,代表限制前N条数据被查询。当参数为两个时,第一个参数为偏移量,第二个参数为被查询的条目数,即展示内容为第 m+1至第 m+n 条。

    通过分页查询与排序的结合,可以轻易取得排在第n位的数据: ORDER BY A LIMIT N-1, 1 ;

    连接查询

    内连接

    取所被连接表的交集

    SELECT * FROM TABLE_A INNER JOIN TABLE_B ON A_ID=B_ID ;

    被连接的两表:TABLE_A 、TABLE_B

    连接条件:A_ID = B_ID

    左连接

    取所连接表的左表值

    SELECT * FROM TABLE_A LEFT JOIN TABLE_B ON A_ID=B_ID ;

    假如A表共有18行,但可以与B表进行关联内容(A_ID=B_ID)只有15行,如果是INNER JOIN内连接,所得连接结果为15行,但左连接取值为左表的所有值,所以连接结果仍为18行,且右表所没有的3行将展示为空(NULL)

    右连接

    与左连接相类似,取值为右表所有值

    多表关联

    SELECT * FROM TABLE_A  A INNER JOIN TABLE_B B ON A.ID=B.ID INNER JOIN TABLE_C C ON C.C_ID=B.C_ID;
    -- 连接的WHERE实现
    SELECT * FROM TABLE_A A, TABLE_B B, TABLE_C C WHERE A.ID=B.ID AND B.C_ID=C.C_ID;
  • 相关阅读:
    每日总结2021.9.14
    jar包下载mvn
    每日总结EL表达语言 JSTL标签
    每日学习总结之数据中台概述
    Server Tomcat v9.0 Server at localhost failed to start
    Server Tomcat v9.0 Server at localhost failed to start(2)
    链表 java
    MVC 中用JS跳转窗体Window.Location.href
    Oracle 关键字
    MVC 配置路由 反复走控制其中的action (int?)
  • 原文地址:https://www.cnblogs.com/JuanF/p/9502795.html
Copyright © 2011-2022 走看看