SQL基础

1、DataBase

创建:CREATE DATABASE DATABASE_NAME ;

使用:USE DATABASE_NAME ;

删除:DROP DATABASE DATABASE_NAME ;

2、Table

创建

CREATE TABLETABLE_NAME (

COLUMNS TYPES

......

)[CHARACTER SET UTF8] ;

删除

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

TRUNCATE TABLE TABLE_NAME ;

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

--按条件删除指定内容,使用十分至少,一般由改状态字段来实现伪删除(set isDelete=true)

DELETE FROM TABLE_NAME WHERECONDITION ;--清空表,与TRUNCATE作用相同,但将记录日志,且效率低

DELETE FROM TABLE_NAME ;

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

DROP TABLE TABLE_NAME;

表结构

查看

DESC TABLE_NAME ;

修改

--增加字段

ALTER TABLE TABLE_NAME ADDCOLUMNS TYPES, ... ;--修改字段

ALTER TABLETABLE_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 * FROMTABLE_NAME ;--按条件查询所有字段内容

SELECT * FROM TABLE_NAME WHERECONDITION ;--按条件查询指定字段内容

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 FROMTABLE1)D ;--WHERE 子查询

SELECT * FROM TABLE1 WHERE A=(SELECT MAX(B) FROMTABLE2) ;--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 FROMTABLE2 ;--当某个字段数不足时,通过拼接 '' 空字段等使之字段数相同

SELECT A, B, C FROM TABLE1 UNION ALL SELECT D, E, '' FROM TABLE2 ;

分组查询

--分组查询: 即将查询结果按字段进行分组--WHERE 条件需放在分组查询前

SELECT * FROM TABLE1 WHERE CONDITIONS GROUP BYA, 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;

java sql 基础_Java SQL基础相关推荐

  1. 零基础java自学就业_java零基础到就业需要多长时间呢?

    展开全部 先以肯定的语气说明一下自学e68a84e8a2ad62616964757a686964616f31333433663030Java,多久可以找到工作: 按照目前Java的体系来说,Java的 ...

  2. java preparedstatement 关闭_java - 如果基础连接已关闭,为什么isClosed()方法对PreparedStatements不返回true? - 堆栈内存溢出...

    就像标题所说的那样,我想知道为什么准备好的语句.isClosed()方法在关闭基础流(使用JDBC)后将返回false. public void someTest() throws SQLExcept ...

  3. java mina多线程_Java多线程基础总结九:Mina窥探(1)

    一直以来的多线程的基础总结都是脱离应用的,但是要说多线程的应用就不能不说Mina.Apache Mina作为一个高性能的Java异步并发网 络通讯框架,其内部的多线程的设计和实现可谓是学习多线程的良药 ...

  4. java面试基础_Java面试基础

    1.面向对象和面向过程的区别? 面向过程:面向过程性能比面向对象高 面向对象:面向对象易维护.易复用.易扩展 2.Java 语言有哪些特点? 简单易学.面向对象(封装,继承,多态).平台无关性( Ja ...

  5. java 正则表达式语法_Java 正则表达式基础语法

    基础符号 首尾匹配^:匹配输入字符串开始的位置 $:匹配输入字符串结尾的位置 例:"^hello$"含义为该字符串开头必须为h,结尾必须为oprivate static void ...

  6. java填空题_Java语言基础知识填空题

    Java语言基础知识填空题 想学java语言的人,要多做题才能巩固知识,下面小编为大家带来了Java语言基础知识的填空题,欢迎大家阅读! Java语言基础知识填空题. 1.浮点型数据根据数据存储长度和 ...

  7. java 关闭语句_java.sql.SQLRecoverableException: 关闭的语句

    数据库连接池配置: 数据库链接在运行时报错: Caused by: java.sql.SQLRecoverableException: 关闭的语句 at oracle.jdbc.driver.Orac ...

  8. java 并发 面试_Java 并发基础常见面试题总结

    1. 什么是线程和进程? 1.1. 何为进程? 进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的.系统运行一个程序即是一个进程从创建,运行到消亡的过程. 在 Java 中,当我们启 ...

  9. java+向前进一_Java 线程基础

    前言 线程并发系列文章: 熟练掌握线程原理与使用是程序员进阶的必经之路,网上很多关于Java线程的知识,比如多线程之间变量的可见性.操作的原子性,进而扩展出的Volatile.锁(CAS/Synchr ...

最新文章

  1. JW Player使用简介
  2. 简述进程的启动、终止的方式以及如何进行进程的查看。
  3. 实验1 C语言开发环境使用和数据类型、运算符、表达式
  4. feign client传递对象
  5. tomcat安装_基于CentOS 一键安装tomcat脚本
  6. 【转】log4j 设置将生成的日志进行gz压缩并删除过期日志
  7. [性能测试]:关于MQ协议脚本开发
  8. 电影院为何有散落的青瓜?
  9. sql语句ding_mybatis plus 写sql语句
  10. 解决mysql分页数据错乱问题
  11. POCO库中文编程参考指南(11)如何使用Reactor框架?
  12. sql数据库去重语法_浅谈sql数据库去重_MySQL
  13. three轨迹线在mapbox地图上显示
  14. Security+ 学习笔记1 恶意软件
  15. cjson构建_cJSON的构造和解析
  16. 最新安卓JAVA模拟器_安卓java模拟器完美版下载-安卓java模拟器直装最新版下载v1.4.6 - 欧普软件园...
  17. 读完这篇系列文章,前端offer手到擒来!!!
  18. linux 如何解压z01文件
  19. C语言之动态内存开辟之malloc
  20. 996的大公司和965的小公司,你怎么选?

热门文章

  1. 原创 | ArcGIS中受支持的地图投影
  2. 简单10秒教你解除复制限制
  3. SAP 财务月结与年结过程
  4. veloview读二维雷达数据_Windows下VLP16激光雷达数据解析
  5. 二分法和分治法概念区别--记录
  6. 用户 'sa' 登录失败。原因: 该帐户被禁用。的解决方案
  7. C语言基础09——数据在内存中的存储。整型的存储、大小端讲解、浮点数的存储、杨辉三角、找凶手、猜名次
  8. 使用Python和BitTorrentSync定期给Kindle推送电子书
  9. 正则表达式,匹配查找函数(preg_match_all)flags参数对比
  10. 查询学生各科前三名的学生成绩