sql 基础(增删改查)

sql执行顺序

1 执行where子句,从表中选行。
2 执行group by子句,对结果进行分组。
3 执行聚集函数(如count()、max())。
4 执行having子句,过滤分组。

5 排序。

注释

可以使用/**/,表示块注释。也可以使用"-- a comment",表示行注释。

引号问题

既有单引号又有双引号怎么办?
答:连续两个单引号就表示一个单引号。例:
sql中,insert into yourTable(f1) values(特殊字符串);
字符串内容若为'a"b"c'd'
应写为values('‘'a"bc''d''’)

字符串如何表示?

答:在sql语句中表示字符串类型,单双引号都可以,如'小明'或"小明"都可以。

增添

insert into Student values(‘13’,’小明’,’男’,’20’)

按次序将值放在表中。

insert into student (studentName,age) values("小明",10);

将值插入在指定的列中。

删除

delete from Student  where id=’1’;

删除指定的列。

更改

update Student set age=’18’ where name=’小明’;

字符串替换函数:REPLACE(field,targetStr,replacementStr);在field字段副本中,将targerStr替换为replacementStr并返回。例子:

//action字段中,将'blockIp,60'子串替换为'blockIp,2'
UPDATE `cep_rule` set action=REPLACE(action,'blockIp,60','blockIp,2');

查询

查询语句中,from后跟表名,可以写from student ,也可以写 from `student`,注意符号不是单引号,而是tab键上面的那个。

select name
as studentName from person;

将原列名换个名字体现在查询结果中。

select * from Student 

‘*’为通配符,查询表中所有信息

并集与连接

union
查询多张表的结果,取并集,扩展行数。
如 select name from studentTable1 union select name from studentTable2

join
连接多张表中查询的结果,扩展列数。
SELECT * FROM Table1 JOIN Table2
ON Table1.ColumnA=Table2.columnA

left join,左连接,以左边表为基准;

right join,右连接,以右边表为基准。

两个表见图3,三条左连接语句见下,结果见图4。

图3 两张表t1与t2

/*1*/SELECT table1.id as id,table1.theValue as value1,table2.theValue as value2 FROM `t1` as table1 left JOIN t2 as table2 on table1.id=table2.id;

/*2*/SELECT table1.id as id,table1.theValue as value1,(case WHEN table2.theValue is null then 0 else table2.theValue end) as value2 FROM `t1` as table1 left JOIN t2 as table2 on table1.id=table2.id;

/*3*/select id from(SELECT table1.id as id,table1.theValue as value1,(case WHEN table2.theValue is null then 0 else table2.theValue end) as value2 FROM `t1` as table1 left JOIN t2 as table2 on table1.id=table2.id) AS A WHERE (value1-value2)/value1 > 0.1;

图4  三条语句的执行结果

分组

Group By,分组。例 group by field1,依据field1字段的不同,将表划分成若干个“小区域”,然后针对这些“小区域”分别进行数据处理。

group by 单个字段,见下。

图5 原始表
执行分组语句后:

select 类别, sum(数量) as 数量之和
from A
group by 类别

图6 group by 之后的结果

没有聚合函数的时候使用group by field1,效果就是field1字段相同的数据只保留一条。

group by 多个字段,见下。

例group by field1,field2, 这两个字段对应一致的数据才会进入同一个分组。

having

在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数(如 min,sum等)一起使用。例子见图3.

图3 having用法

in 与 exists 的区别

1.in后面跟的是一个集合;exists 后面跟的是一个子查询,若查询到有行存在则输出父查询;
2.in 语句先执行子查询,将结果缓存;exists先执行父查询。

时间: 2024-09-10 04:49:31

sql 基础(增删改查)的相关文章

【黑马Android】(04)数据库的创建和sql语句增删改查/LinearLayout展示列表数据/ListView的使用和BaseAdater/内容提供者创建

数据库的创建和sql语句增删改查 1. 加载驱动. 2. 连接数据库. 3. 操作数据库.   创建表: create table person( _id integer primary key, name varchar(20), age integer );   添加: insert into person(name, age) values('lisi', 19);   删除: delete from person where _id = 1;   修改: update person se

处女篇:ObjectDataSource+CodeSmith实现基础增删改查功能

前言:     看别的人博客看多了,自己写博客还是第一次.这里就分享点破东东.         SqlDataSource:初学入门者,大伙都会用得比较多,里面一个代码也不用写,排序分页编辑删除插入等功能都给你弄好了.很好用! 缺点:     可惜一个缺点,代码和html都搅在一块了,所以,为了分层结构的需要:ms推荐使用SqlObjectDataSource,可是这个控件需要自己写代码的.     每个方法都要自己写代码,有点烦,不过不用担心,从现在开始,你一个代码不用写,也能用的和SqlDa

[Android] SQLite数据库之增删改查基础操作

    在编程中经常会遇到数据库的操作,而Android系统内置了SQLite,它是一款轻型数据库,遵守事务ACID的关系型数据库管理系统,它占用的资源非常低,能够支持Windows/Linux/Unix等主流操作系统,同时能够跟很多程序语言如C#.PHP.Java等相结合.下面先回顾SQL的基本语句,再讲述Android的基本操作. 一. adb shell回顾SQL语句     首先,我感觉自己整个大学印象最深的几门课就包括<数据库>,所以想先回顾SQL增删改查的基本语句.而在Androi

MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)

[正文] 首先需要回顾一下上一篇文章中的内容:MySQL数据库学习笔记(八)----JDBC入门及简单增删改数据库的操作 一.ResultSet接口的介绍: 对数据库的查询操作,一般需要返回查询结果,在程序中,JDBC为我们提供了ResultSet接口来专门处理查询结果集. Statement通过以下方法执行一个查询操作: ResultSet executeQuery(String sql) throws SQLException  单词Query就是查询的意思.函数的返回类型是ResultSe

sql2005-eclipse对数据库sql server2005的增删改查

问题描述 eclipse对数据库sql server2005的增删改查 package Frame; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.*; import java.awt.*; import javax.swing.*; public class data extends JFrame implements ActionListener{ //priv

二、SQL语句映射文件(2)增删改查、参数、缓存

 二.SQL语句映射文件(2)增删改查.参数.缓存 2013-09-06 17:05:42 标签:配置文件 动态 元素 MyBatis学习 之 一.MyBatis简介与配置MyBatis+Spring+MySql MyBatis学习 之 二.SQL语句映射文件(1)resultMap MyBatis学习 之 二.SQL语句映射文件(2)增删改查.参数.缓存 MyBatis学习 之 三.动态SQL语句 MyBatis学习 之 四.MyBatis配置文件 2.2 select 一个select 元素

什么是Pro*C/C++,嵌入式SQL,第一个pro*c程序,pro*c++,Makefile,Proc增删改查

 1 什么是Pro*C/C++ 1.通过在过程编程语言C/C++中嵌入SQL语句而开发出的应用程序 2.什么是嵌入式SQL 1.在通用编程语言中使用的SQL称为嵌入式SQL 2.在SQL标准中定义了很多中语言的嵌入式SQL 3.各个厂商对嵌入式SQL的具体实现不同 3.什么是Pro*C/C++ 1.在C/C++语言中嵌入SQL语句而开发出的应用程序. 2.目的:使c/c++这种效率语言称为访问数据库的工具. 4.嵌入式SQL的载体是宿主语言 宿主语言          Pro程序 C/C++

新手 基础-用java在用户的增删改查中遇到的问题

问题描述 用java在用户的增删改查中遇到的问题 final static String的意义try{}catch的用法Connection conn = DriverManager.getConnection的意义关于这一段boolean用法的正确与否public boolean addUser(User newUser){ boolean flag=false; String addUserSQL=""INSERT INTO Users(UserNamePassword) VALU

MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)

[正文] 这一周状态不太好,连续打了几天的点滴,所以博客中断了一个星期,现在继续. 我们在之前的几篇文章中学习了JDBC对数据库的增删改查.其实在实际开发中,一般都是使用第三方工具类,但是只有将之前的基础学习好了,在使用开源工具的时才能得心应手.如果对JDBC基础不太清楚,或者对本文看不太懂,建议先回顾一下本人之前的几篇和"MySQL数据库学习笔记"相关的文章.但是不管怎样,今后如果用到了数据库的增删改查,肯定是这篇文章中的代码用的最多. 一.DbUtils简介: DBUtils是ap