`

SQL基础语法(3)

    博客分类:
  • DB
阅读更多
这篇blog是SQL基础语法,只是作为我平时查阅和备份,仅适合初学者学习阅读,高手绕行。
转载时注明地址:http://fuchangle.iteye.com/blog/1772779
SQL基础语法(1)访问 http://fuchangle.iteye.com/blog/1772395
SQL基础语法(2)访问 http://fuchangle.iteye.com/blog/1772523

单表查询
select语句的功能就是查询数据。select语句也是SQL语句中功能最丰富的语句,select语句不仅可以执行单表查询,而且可以执行多表连接查询,还可以进行子查询,select语句

用于从一个或多个数据表中选出特定行、特定列的交集。
单表查询的select语句的语法如下:
select colimn1 colimn2 
form 数据源 
[WHERE condition]

上面的语法格式中的数据源可以是表、视图等。从上面的语法格式中可以看出,select后的列表用于选择哪些列,where条件用于确定选择哪些行,只有满足where条件的记录才会
被选择出来;如果没有where条件,则默认选出所有行。

下面的SQL语句将会选择出teacher_table表中的所有行、所有列的数据。
select * from teacher_table;

如果增加where条件,则只选择符合where条件的记录,如下SQL语句将选择出student_table表中java_teacher值大于3的记录student_name列的值为
select student_name from student_table where java_teacher > 3;


当使用select语句进行查询时,还可以在select语句中使用算术运算符(+、-、*、/),从而形成算术表达式:使用算术表达式的规则如下:
1.对数值型数据列、变量、常量可以使用算术运算符(+、-、*、/) 创建表达式;
2.对日期型数据列、变量、常量可以使用部分算术运算符(+、-、)创建表达式,两个日期之间可以进行减法运算,日期和数值之间可以进行加、减运算;
3.运算符不仅可以在列和常量、变量之间进行运算,也可以在两列之间进行运算。

下面的select语句中使用了算术运算符
#数据列实际上可当成一个变量
select teacher_id + 5 from teacher_table;
#查询出teacher_table表中teacher_id * 3 大于4的记录
select * from teacher_table where teacher_id * 3 > 4;

需要指出的是,select后的不仅可以是数据列,也可以是表达式,还可以是变量、常量等,例:
#数据列实际上可当成一个变量
select 3*5, 20 from teacher_table;

SQL语言中算术符的优先级与java语言的运算符优先级完全相同,Mysql使用concat函数来进行字符串连接运算。
select concat(teacher_name, 'xx') form teacher_table;

对于MySQL而言,如果在算术表达式中使用null,将会导致整个算术表达式的返回值为null;如果在字符串连接运算符中出现null,将会导致连接后的结果也是null,如
select concat(teacher_name, null) from teacher_table;


如果不希望直接使用列名作为列标题,则可以为数据列或表达式起一个别名,为数据列或表达式起别名时,别名紧跟数据列,中间以空格隔开,或者使用as关键字隔开。如
select teacher_id + 5 as MY_ID from teacher_table;

如果需要选择多列,并为多列起别名,则多列与列之间以逗号隔开,但列和列名之间以空格隔开。
select teacher_id + 5 MY_ID, teacher_name 老师名
from teacher_table;

不仅可以为列或表达式起别名,也可以为表起别名,为表起别名的语法和为列或表达式起别名的语法完全一样,如
select teacher_id + 5 MY_ID, teacher_name 老师名
from teacher_table t;


select 默认会把所有符合条件的记录全部选出来,即使两行记录完全一样。如果想去除重复行,则可以使用distinct关键字从查询结果中清除重复行,比较下面两条SQL语句的执
行结果:
#选出所有记录,包括重复行
select student_name,java_teacher from student_table;
#去除重复行
select distinct student_name, java_teacher from student_table;

注:使用distinct去除重复行时,distinct紧跟select关键字,它的作用是去除后面字段组合的重复值,而不管对应对应记录在数据库是否重复。

前面已经看到了where字句的作用:可以控制只选择指定的行。因为where字句里包含的是一个条件表达式,所以可以使用>、>=、<、<=、=和<>等基本的比较运算符。SQL中的比较

运算符不仅可以比较数值之间的大小,也可以比较字符串、日期之间的大小。
SQL判断两个值是否相等的比较运算符是单等号=,判断不等的运算符是<>;SQL中的赋值运算符不是等号,而是冒号等号(:=);
除此之外,SQL还支持如表所示的特殊的比较运算符
运算符-----------含义
expr1 between expr2 and expr3 -------------- 要求expr1 >= expr2 并且 expr2 <= expr3
expr1 in(expr2,expr3,expr4,...)-------------- 要求expr1等于后面括号里任意一个表达式的值
like-------------- 字符串匹配,like后的字符串支持通配符
is null-------------- 要求指定值等于null

下面的SQL语句选出student_id大于等于2,且小于等于4的所有记录.
select * from student_table where student_id between 2 and 4;


使用in比较运算时,必须在in后的括号里列出一个或多个值,它要求指定列必须与in括号里任意一个值相等,如
#选出student_id、java_teacher列的值为2或4的所有记录
select * from student_table where student_id in(2,4);
与之类似的是,in括号里的值既可以是常量,也可以是变量或者列名,如:
#选出student_id、java_teacher列的值为2的所有记录
select * from student_table where 2 in(student_id,java_teacher);


like运算符主要用于进行模糊查询,例如,若要查询名字以“孙”开头的所有记录,这就需要用到迷糊查询,在模糊查询中需要使用like关键字。
SQL语句中可以使用两个通配符:下划线(_)和百分号(%),其中下划线可以代表一个任意的字符,百分号可以代表任意多个字符。
如下SQL语句将查询出所有学生中名字以"孙"开头的学生。
select * from student_table
where student_name like '孙%';


下面的SQL语句将查出名字为两个字符的所有学生
select * from student_table
#下面使用两个下划线代表来个字符
where student_name like '__';


is null 用于判断某些值是否为空,判断是否为空不能用=null来判断,因为SQL中null=null返回null。
如下SQL语句将选择出student_table表中student_name为null的所有记录。
select * from student_table
where student_name is null;


如果where字句后面有多个条件需要组合,SQL提供了and 和 or 逻辑运算符来组合2个条件,并提供了not来对逻辑表达式求否,如下SQL语句将选出学生名字为2个字符,
且student_id 大于3的所有记录。
select * from student_table
where student_name like '__' and studnent_id > 3;


下面的SQL语句将选出student_table表中姓名不以下划线开头的所有记录。
select * from student_table
#使用not 对where 条件取否
where not student_name like '\_%'; 


执行查询后的结果默认按插入顺序排序;如果需要在查询结果按某列值的大小进行排序,则可以使用order by字句。order by字句的语法如下:
order by column_name1 [desc], column_name...

进行排序时默认按升序排序排列,如果强制按降序排序,则需要在列后使用desc关键字(与之对应的是asc关键字,用不用该关键字的效果完全一样,因为默认是按升序排列)。
上面语法中设定排序列时可采用列名、序列名和列别名。如下SQL语句选出student_table表中的所有记录,选出后按java_teacher列的升序排列。
select * from student_table
order by java_teacher;


如果需要按多列排序,则每列的asc、desc必须单独设定。如果指定了多个排序列,则第一个排序列是首要排序列,只有当第一列中存在多个相同值时,第二个排序才会起作用。如
果SQL语句先按java_teacher列的降序排序,当java_teacher列的值相同按student_name 列的升序排列。
select * from student_table
order by java_teacher desc, student_name;

---------------------------------

数据库函数
每个数据库都会在标准的SQL基础上扩展一些函数,这些函数用于进行数据处理或复杂计算,他们通常对一组数据进行计算,得到最终需要的输出结果。
函数一般都会有一个或者多个输入,这些输入被称为函数的参数,函数内部会对这些参数进行判断和计算,最终只有一个值作为返回值。函数可以出现在SQL语句中的各个位置,比

较常用的位置是select之后的where子句中。
根据函数对多行数据的处理方式,函数被分为单行函数和多行函数,单行函数对每行输入值单独计算,每行得到一个计算结果返回给用户;多行函数对多行输入值整体计算,最后

只会得到一个结果,
SQL中的函数和java语言中的方法有点相似,但SQL中的函数是独立的程序单元,也就是说,调用函数时无需使用任何类、对象作为调用者,而是直接执行函数。如下:
function_name(arg1,arg2...)


多行函数也称为聚集函数、分组函数,主要用于完成一些统计功能,在大部分数据库中基本相同。但不同数据库中的单行函数差别

非常大,MySQL中的单行函数具有如下特征.
1.单行函数的参数可以是变量、常数或数据列。单行函数可以接收多个参数,但只返回一个值.
2.单行函数会对每行单独起作用,每行(可能包括多个参数)返回一个结果。
3.使用单行函数可以改变参数的数据类型。单行函数支持嵌套使用,即内层函数的返回值是外层函数的参数。

MySQ数据库的数据类型大致分为数值型、字符型、和日期时间型。所以mysql分别提供了对应的函数。转换函数主要负责完成类型转

换,其他函数又大致分为如下几类。
1.位函数
2.流程控制函数
3.加密解密函数
4.信息函数

每个数据库都包含了大量的单行函数,这些函数的用法也存在一些差异,但有一点是相同的--每个数据库都会为一些常用的计算功能提供相应的函数,这些名字可能不同,用法可能有差异,但所有数据库提供的函数库所能完成的功能大致形似。下面通过一些例
子来介绍MySQ单行函数的用法.

#选出teacher_table表中teacher_name列的字符长度
select char_length(teacher_name) from teacher_table;

#计算teacher_name列的字符长度的sin值
select sin(char_length(teacher_name)) from teacher_table;

#为指定日期添加一定的时间,在这种用法下interval是关键字,需要一个数值还有一个单位
select DATE_ADD('1998-01-02', interval 2 MONTH);

#获取当前日期
select CURDATE();

#获取当前时间
select curtime();

#下面的MD5是MD5加密函数
select MD5('testing');


待续...
1
1
分享到:
评论

相关推荐

    sql server 基础语法

    SQL Server 基础语法 SQL Server 是一种关系数据库管理系统,提供了强大的数据存储和管理功能。 SQL Server 的基础语法包括数据定义、数据操纵和数据控制三个方面。 1. 数据定义功能 数据定义功能是 SQL Server ...

    易飞SQL常用基础语法

    易飞SQL常用基础语法易飞SQL常用基础语法易飞SQL常用基础语法易飞SQL常用基础语法

    SQL基础语法

    ### SQL基础语法详解 #### 一、数据定义语言(Data Definition Language, DDL) 在数据库管理系统中,数据定义语言主要用于创建、修改或删除数据库对象,如表、索引等。以下是一些常用的DDL命令及其解释。 ##### ...

    SQL基础语法和高级语法示例

    SQL基础语法和高级语法示例 SQL基础语法和高级语法示例

    SQL语法,SQL语句大全,SQL基础

    ### SQL语法、SQL语句大全及SQL基础知识 #### 一、SQL简介 SQL(Structured Query Language)是一种用于管理关系数据库的标准编程语言。SQL最初由IBM研发,并在1970年代后期作为SEQUEL(Structured English Query ...

    sql基础语法考试必备小抄

    ### SQL基础语法考试必备知识点 #### 一、SQL简介 SQL(Structured Query Language)是一种用于管理关系数据库的标准语言。它提供了强大的数据操作能力,包括数据查询、数据定义、数据操纵和数据控制等功能。 ####...

    SQL语句大全、SQL基础、SQL基本语法

    3. **备份 SQL Server 数据库** - **创建备份设备**: - **语法**: ```sql USE master; EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'; ``` - **说明**: 在进行数据库备份之前...

    SQL 语法 SQL 总结 SQL教程

    SQL 基础 SQL 首页 SQL 简介 SQL 语法 SQL select SQL distinct SQL where SQL AND & OR SQL Order By SQL insert SQL update SQL delete SQL 高级 SQL Top SQL Like SQL 通配符 SQL In SQL Between ...

    SQL语法教学课件

    适合教学使用的SQL语法课件,内容相对精炼。

    SQL基础语法讲解以及常用函数

    ### SQL基础语法与常用函数详解 #### 一、SQL基础语法概述 SQL(Structured Query Language,结构化查询语言)是一种用于管理关系数据库的标准语言。它主要用于处理存储在关系数据库管理系统中的数据,支持数据...

    SQL Server基础语法

    在SQL Server中,基础语法主要涵盖以下几个方面: 1. **数据查询**:SQL的基础是SELECT语句,用于从数据库中检索数据。例如,`SELECT * FROM Customers`将获取Customers表中的所有记录。通过指定列名、使用WHERE...

    SQL基本语法知识

    在这个“SQL基本语法知识”中,我们将深入理解SQL的一些核心概念和基本语法。 首先,数据库是组织和存储数据的系统,而表则是数据库中的基本单元,用于存储具体的信息。例如,描述中的"Persons"表,包含ID、Last ...

    SQL语句之基础语法汇总

    "SQL语句之基础语法汇总" SQL语句之基础语法汇总是一篇详细的SQL语句基础知识总结,包括创建表、修改表、删除表、添加数据、更新数据、删除数据等基础语法。下面是对该篇文章的知识点总结: 一、创建表、修改表、...

    sql基础语法示例 标准sql

    总结来说,这个SQL基础语法示例教程涵盖了创建表、插入数据、更新数据和删除数据等核心操作,是初学者学习SQL的绝佳起点。通过深入理解和实践这些基本语句,你将能够有效地管理和操纵数据库,为你的IT职业生涯打下...

    SQL基础SQL语法

    SQL(Structured Query ...总结,SQL是数据库管理和分析的核心,熟练掌握其基础语法和常见用法是每个IT专业人员的必备技能。通过学习提供的PDF文档,你可以深入理解SQL Server的具体应用,并提升你的SQL编程能力。

    sql大学讲义(比较全的sql基础语法)

    SQL,即Structured Query Language...掌握这些SQL基础语法和RDB基本概念是理解和操作关系数据库的关键,无论你是初学者还是经验丰富的开发人员,都需要深入理解这些知识点,以便在实际工作中有效地进行数据管理和分析。

    Oracle sql基础语法

    Oracle SQL是用于管理和操作Oracle...以上是Oracle SQL基础语法的一些关键概念,通过实践和学习,你可以逐步掌握这个强大的查询语言,并有效管理Oracle数据库。记住,实践中遇到的问题和解决方案往往是学习的最佳途径。

    Visual FoxPro中SQL命令语法及示例

    ### Visual FoxPro中SQL命令语法及示例 #### 1. 准备 - **1.1 创建文档中所要使用到的数据库及环境配置** 在开始学习Visual FoxPro (VFP) 中的SQL命令之前,需要创建一个用于演示的基础数据库环境。以下是创建...

    sql/sql语法基础手册

    在“sql/sql语法基础手册”中,我们可以深入学习SQL的基础知识,包括但不限于以下几个方面: 1. **SQL简介**:SQL代表结构化查询语言,由IBM的System R项目开发,用于操作关系型数据库系统。它支持多种操作,如创建...

    SqlParser C++实现的SQL语法解释器

    在数据库系统中,SQL(Structured Query Language)是用于管理关系数据库的标准语言,而词法分析和语法分析是编译原理中的基础概念,对于理解SqlParser的工作原理至关重要。 首先,我们来谈谈SQL。SQL包含了数据...

Global site tag (gtag.js) - Google Analytics