学习参考网站: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;

sql基础学习的更多相关文章

  1. Oracle SQL 基础学习

    oracel sql 基础学习 CREATE TABLE USERINFO ( ID ,) PRIMARY KEY, USERNAME ), USERPWD ), EMAIL ), REDATE DA ...

  2. SQL 基础学习(2) Joining 和function , 作业没有做,需要看百宝箱。NOsql的概念

    SQL 基础学习(2) Joining 可以同时关联(joining)多张表进行复杂的查询. 相比于用Rails捞出数据再用Ruby进行过滤组合,使用SQL更加高效,节能. 以下是 users has ...

  3. SQL 基础学习(1):下载DB Browser for SQLite. 下载graphviz(为了使用Rails ERD的前提)出现❌,已debug.

    SQL is a standard language for storing, manipulating and retrieving data in databases. 关系型数据库:RDBMS( ...

  4. SQL基础学习_04_视图

    视图 1. 视图的创建     视图就是保存好的SELECT语句,这些SELECT语句执行之后会产生新的表,所以在SQL中,视图和表是不做差别对待的,也就是SQL也可以对视图做一些操作:     由于 ...

  5. SQL基础学习_05_函数、谓词、CASE表达式

    函数 算术函数 1. 四则运算: +.-.*./  2. ABS:求绝对值, ABS(数值) 3. MOD: 求余,MOD(被除数,除数) 4. ROUND:四舍五入,ROUND(对象数值,保留小数的 ...

  6. SQL基础学习_03_数据更新

    数据的插入 1. 基本INSERT语句     INSERT的基本语法为:     INSERT INTO  <表名> (列1, 列2, 列3,  -) VALUES (值1, 值2, 值 ...

  7. SQL基础学习_02_查询

    SELECT语句 1. SELECT语句查询列(字段):     SELECT <列名>    FROM <表名>;     该语句使用了两个SQL子句,SELECT子句列举了 ...

  8. SQL基础学习_01_数据库和表

    SQL语句及其种类 1. SQL语句分为三类:     DDL(Data Definition Language): CREATE.DROP.ALTER;     DML(Data Manipulat ...

  9. SQL基础学习篇--字符函数

    字符函数可与SELECT,UPDATE,DELETE RIGHT()----从右侧开始选择  SELECT RIGHT(列,字符数量) FROM 表 LEFT()----从左侧开始选择  SUBSTR ...

随机推荐

  1. 同源策略 - JSONP - CORS

    1.  Jquery 对象可以通过 .index() 进行取出自当前元素在父级元素中存放的索引: 2. 浏览器的同源策略 -- Ajax 在访问非本网站的时候,在数据返回的时候,会被浏览器拦截 - 后 ...

  2. Office应用程序对照表

    任何Office应用程序(包括excel)的类型库都作为Office安装的一部分安装.类型库是特定于版本的(即,安装了哪个版本的Office). 例如,Office 2007版本为12.0,Offic ...

  3. luoguP2148 [SDOI2009]E&D [sg函数][组合游戏]

    题目描述 小E 与小W 进行一项名为“E&D”游戏. 游戏的规则如下: 桌子上有2n 堆石子,编号为1..2n.其中,为了方便起见,我们将第2k-1 堆与第2k 堆 (1 ≤ k ≤ n)视为 ...

  4. 【LeetCode 13】罗马数字转整数

    题目链接 [题解] 就是上一题反过来的过程. 因为有说一般情况下后面的罗马数字是小于前面的罗马数字的. 如果前面的罗马数字小于后面的罗马数字了. 说明出现了4,9,40,90这些特殊情况. 那么就得判 ...

  5. Minimum Snap轨迹规划详解(3)闭式求解

    如果QP问题只有等式约束没有不等式约束,那么是可以闭式求解(close form)的.闭式求解效率要快很多,而且只需要用到矩阵运算,不需要QPsolver. 这里介绍Nicholas Roy文章中闭式 ...

  6. LUOGU P5061 秘密任务(背包+二分图染色)

    传送门 解题思路 \(orz\)出题人的神仙做法.本蒟蒻看不懂,就水个求补图再二分图染色的方法来\(%1%\)出题人. 首先我们对图中\(m\)个关系连边,发现这样是没法做的,因为我们最后要关注的是谁 ...

  7. CSS中各种百分比(%)

    1.固定定位  position:absolute;width:100%;height:100%: 中%相对的   都是浏览器的可视窗口宽高. 2.标准文档流中,标签的 % 单位除了height以外, ...

  8. 实验报告&总结

    Java实验报告 班级计科二班 学号 20188429 姓名 罗璇哲 完成时间 评分等级 实验三 String类的应用 一. 实验目的 (1) 掌握类String类的使用: (2) 学会使用JDK帮助 ...

  9. BOM 3.1 location对象 | history对象 | navigator对象 | 定时器 | 三大系列

    JavaScript分三个部分: 1. ECMAScript标准---基本语法 2. DOM--->Document Object Model 文档对象模型,操作页面元素的 3. BOM---& ...

  10. pycharm的第一次使用(其实并不是第一次)

    file --> settings --> editor -->general --> change font size file --> settings --> ...