学习参考网站:http://www.runoob.com/sql/sql-tutorial.html

一、SQL命令

1、SELECT 语句

用于从数据库中选取数据。

select column_name,column_name from table_name;    #数据库中选取某个表格某几列数据
select * from table_name; #数据库中选取某个表格所有列数据

2、SELECT DISTINCT 语句

用于返回唯一不同的值。

select distinct column_name from table_name;             #返回某表中某列唯一不同的值
select distinct column_name,column_name from table_name; #返回某表中多列唯一不同的值

3、WHERE 子句

用于过滤记录。

select column_name,column_name from table_name where column_name operator value;       #选取满足某个条件的数据

WHERE 子句中条件判断会使用的运算符:

运算符 描述
= 等于
<> 不等于。注释:在 SQL 的一些版本中,该操作符可被写成 !=
> 大于
< 小于
>= 大于等于
<= 小于等于
BETWEEN 在某个范围内
LIKE 搜索某种模式
IN 指定针对某个列的多个可能值
AND 同时满足多个条件
OR 多条件满足其中某个条件值

1) is null (空值判断)

如查询 A 表中 a 列中为空的数据。

select * from A where a is null;

2)between and (在之间的值,包含临界值)

如查询 A 表中 a 列中大于 100 的小于 200的数据。

select * from A where a between 100 and 200;

3)In(某列多个可能值)

如查询 A 表 a 列中等于 100,200,300 的数据。

select * from A where a in (100,200,300);

4)like(模糊查询)

 % 表示多个字值,_ 下划线表示一个字符;

M% : 为能配符,正则表达式,表示的意思为模糊查询信息为 M 开头的;

%M% : 表示查询包含M的所有内容;

%M_ : 表示查询以M在倒数第二位的所有内容。

如查询 A 表中 a 列中有 M 的数据:

select * from A where a like '%M%';

5) and (多个条件同时满足查询)

如查询A表中a列等于100与b列等于200的数据:

select * from A where a=100 and b=200;

6)or (多个条件满足某个条件的查询)

如查询A表中a列等于100或b列等于100的数据:

select * from A where a=100 or b=200;

4、ORDER BY 关键字

用于对结果集进行排序,可以按照一个列或者多个列进行排序,默认按照升序对数据进行排序。如果需要按照降序对记录进行排序,可以使用 DESC 关键字。

select column_name,column_name from table_name order by column_name,column_name asc|desc;    #语法结构

如查询A表中按a列升序排序展示数据:

select * from A order by a;    #默认asc升序排列

如查询A表中按a列降序排序展示数据:

select * from A order by a desc;

注:多列排序时,先按第一个列排序,然后按第二个列排序。如下A表

id a b
1 200 10
2 100 30
3 100 20

如:

select * from A order by a,b;

多条件升序排序查找数据后:

id a b
3 100 20
2 100 30
1 200 10

5、INSERT INTO 语句

用于向表中插入新数据。

insert into table_name values (value1,value2,value3,...);                 #无需指定列名,需要列出这一列的每个数据
insert into table_name (column1,column2,...) values (value1,value2,...); #指定列和被插入的值,一一对应

如向A表中a列中插入数据123,b列中插入111:

insert into A (a,b) values (123,111)     

6、UPDATE 语句

用于更新表中已存在的数据。

update table_name set column1=value1,column2=value2,... where some_column=some_value;

如更新A表中a=100的数据改为a=666,b=888:

update A set a=666, b=888 where a=100;    #不加where条件会把整个表格数据相应的数据都更新掉

注:MySQL 中可以通过设置 sql_safe_updates 这个自带的参数来解决不带where的误操作,当该参数开启的情况下,你必须在update 语句后携带 where 条件,否则就会报错。set sql_safe_updates=1; 表示开启该参数。

7、DELETE 语句

用于删除表中某行的数据。

delete from table_name where some_column=some_value;   #不带where删除表中所以数据,但是不释放空间,需要注意

如删除A表中a=100的那行:

delete from A where a=100;    

DROP:

drop test;

删除表test,并释放空间,将test删除的一干二净。

TRUNCATE:

truncate test;

删除表test里的内容,并释放空间,但不删除表的定义,表的结构还在。

8、GROUP BY 语句

用于结合聚合函数,根据一个或多个列对结果集进行分组。

select column_name, aggregate_function(column_name) from table_name where column_name operator value group by column_name;

如下面这个access_log表:

+-----+---------+-------+------------+
| aid | site_id | count | date |
+-----+---------+-------+------------+
| 1 | 1 | 45 | 2016-05-10 |
| 2 | 3 | 100 | 2016-05-13 |
| 3 | 1 | 230 | 2016-05-14 |
| 4 | 2 | 10 | 2016-05-14 |
| 5 | 5 | 205 | 2016-05-14 |
| 6 | 4 | 13 | 2016-05-15 |
| 7 | 3 | 220 | 2016-05-15 |
| 8 | 5 | 545 | 2016-05-16 |
| 9 | 3 | 201 | 2016-05-17 |
+-----+---------+-------+------------+

对site_id字段进行分类统计count:

select site_id, sum(access_log.count) as nums from access_log group by site_id;          #sum()是聚合函数

得到的结果是:

site_id nums
1 275
2 10
3 521
4 13
5 750

二、SQL函数

1、Aggregate 函数

1)AVG()

函数返回数值列的平均值。

select avg(column_name) from table_name

如查询A表中a列的平均值以a_average字段展示出来:

select avg(a) as a_average from A        #如果不给出展示字段,就直接以avg为展示字段

也可以作为一种结果作为查询条件,如查询A表中a值大于平均值的数据:

select * from A where a > (select avg(a) from A);

2)COUNT()

函数返回匹配指定条件的行数。

select count(column_name) from table_name;     #返回指定列的值的数目(不包括null值的数目)
select count(*) from table_name; #返回表中的记录数,也就是有多少条数据

如查看A表中a列有多少条数据:

select count(a) from A

如查看A表中a列有多少条不相同的数据:

select count(distinct a) from A;

3)FIRST()

返回指定的列中第一个记录的值。

select first(column_name) from table_name;    

只有 MS Access 支持 FIRST() 函数,其他形式的first函数效果语法:

SQL Server 语法

select top 1 column_namefrom table_name order by column_name asc;
MySQL 语法
select column_name from table_name order by column_name asc limit 1;
Oracle 语法
select column_name from table_name order by column_name asc where rownum <=1;

4)LAST()

返回指定的列中最后一个记录的值。

select last(column_name) from table_name;

只有 MS Access 支持 LAST() 函数,其他形式的last函数效果语法:

SQL Server 语法

select top 1 column_namefrom table_name order by column_name desc;
MySQL 语法
select column_name from table_name order by column_name desc limit 1;
Oracle 语法
select column_name from table_name order by column_name desc where rownum <=1;

5)MAX()

函数返回指定列的最大值。

select max(column_name) from table_name;

如查询A表中a列的最大值:

select max(a) from A;

6)MIN()

函数返回指定列的最小值。

select min(column_name) from table_name;

如查询A表中a列的最小值:

select min(a) from A;

7)SUM()

函数返回数值列数值的总和,适合对数值列求和。

select sum(column_name) from table_name;

如查询A表中a列数值的总和:

select sum(a) from A;

2、Scalar 函数

1)UCASE()

函数把字段的值转换为大写,适合数值有字母的值转换。

select ucase(column_name) from table_name;
select upper(column_name) from table_name; #用于 SQL Server 的语法

如把A表中a列数值小写字母转换为大写字母:

select ucase(a) from A;

2)LCASE()

函数把字段的值转换为小写,适合数值有字母的值转换。

select lcase(column_name) from table_name;
select lower(column_name) from table_name; #用于 SQL Server 的语法

如把A表中a列数值大写字母转换为小写字母:

select lcase(a) from A;

3)MID()

函数用于从文本字段中提取字符。

select mid(column_name,start[,length]) from table_name;
参数 描述
column_name 必需。要提取字符的字段。
start 必需。规定开始位置(起始值是 1)。
length 可选。要返回的字符数。如果省略,则 MID() 函数返回剩余文本。

如把A表中取a列中前4位字符:

select mid(a,1,4) from A;

4)LEN()

函数返回文本字段中值的长度。

select len(column_name) from table_name;
select length(column_name) from table_name; #MySQL中使用length()函数

如回去A表中a列值的长度:

select len(a) from A;

5)ROUND()

函数用于把数值字段四舍五入为指定的小数位数。

select round(column_name,decimals) from table_name;     #column_name需要舍入的字段,decimals返回的小数位数

如:

select round(1.298, 1);            #结果是1.3

如把A表中a列的值按小数点后2位四舍五入处理:

select round(a, 2) from A; 

6)NOW()

函数返回当前系统的日期和时间。

select now() from table_name;

7)FORMAT()

函数用于对字段的显示进行格式化。

select format(column_name,format) from table_name;     #column_name需要格式化的字段,format规定格式

如把A表所处的当前日期和时间格式化:

select date_format(now(),'%Y-%m-%d') as date from A;

最新文章

  1. Delphi_05_Delphi_Object_Pascal_基本语法_03
  2. Java多线程系列--“JUC集合”08之 LinkedBlockingQueue
  3. QT 数据库编程四
  4. .net 服务器端文件下载
  5. 在PHP中如何获取用户的真实IP
  6. 【nodemailer】之 work with mustache
  7. ArcMap制图_显示指定区域地图内容
  8. Cocos2d-x 3.1.1 Lua实例-AccelerometerTest(重力加速计)
  9. eclipse的插件
  10. 从移动硬盘开机,引导VHD(Win10)
  11. 100. Same Tree(leetcode)
  12. KAPTCHA验证码使用步骤
  13. Python 3 教程
  14. kernel(一)编译体验
  15. E - Tears of Drowned
  16. VScode 光标乱跳
  17. c++11变长参数函数模板
  18. 南邮PHP反序列化
  19. JavaScript深入之参数按值传递
  20. 1、搭建Struts2开发环境

热门文章

  1. Spring Boot下启用https
  2. shell重定向的顺序问题
  3. java 原生 HttpClient
  4. 5、通过Appium Desktop实现页面元素定位
  5. linux get current thread count and system threads limit
  6. 第六篇 xpath的用法
  7. SQL Server2012 Offset Fetch子句 分页查询
  8. mongodb入门篇
  9. Tomcat7安装和配置以及优化
  10. Vue报错type check failed for prop