SQL基础复习03--数据查询SQL语句(单表查询)参考教材《数据库系统:原理、设计与编程(MOOC版)》,陆鑫张凤荔陈安龙终于到查询这⼀块了。
3.4 数据查询SQL语句3.4.1 查询语句基本结构SELECT [ALL/DISTINCT] <⽬标列>[,<⽬标列>...][INTO <新表>]FROM <表名>[,<表名>...][WHERE <条件表达式>][GROUP BY <列名> [HAVING <条件表达式>]ORDER BY <列名> [ASC/DESC]];SELECT语句由多种字句组成:1. SELECT⼦句,⽤来指明从数据库表中需要查询的⽬标列。
ALL是默认操作,获取所有满⾜条件的数据⾏;DISTINCT⽤来去掉结果集中的重复数据⾏;<⽬标列>为被查询表的指定列名,可以有多个。
2. INTO⼦句,⽤来将被查询的结果集数据插⼊新表。
3. FROM⼦句,⽤来指定被查询的数据来⾃哪个表或哪些表。
多表⽤逗号分隔。
4. WHERE⼦句,⽤来给出查询的检索条件,多个条件之间可以⽤AND、OR进⾏连接。
5. GROUP BY⼦句,⽤来对查询结果进⾏分组,并进⾏分组统计等处理,在分组中,还可以使⽤HAVING关键词定义分组条件。
6. ORDER BY⼦句,⽤来对查询结果集进⾏排序。
ASC当然是升序,DESC是降序。
默认为ASC。
从SELECT语句的操作结果看,<⽬标列>实现对关系表的投影操作,WHERE <条件表达式>实现对关系表的元组选择操作。
当前Student表的全部数据:下⾯将会对该表进⾏⼀系列查询操作3.4.2 从单表读取指定列SELECT <⽬标列>[,<⽬标列>...]FROM <表名>;例3-191. 从Student表中读取学⽣的学号、姓名、专业三列数据:SELECT StudentID, StudentName, MajorFROM Student;GO2. 从Student表中查询所有列数据:SELECT *FROM Student;GO3. 只查Major数据:SELECT MajorFROM Student;GO倘若只想查出不同的专业名称,可以消除重复⾏,⽤DISTINCT:SELECT DISTINCT MajorFROM Student;GO3.4.3 从单表读取指定⾏SELECT *FROM <表名>WHERE <条件表达式>;例3-20从Student表中读取专业为“软件⼯程”,性别为“男”的学⽣数据:SELECT *FROM StudentWHERE Major='软件⼯程' AND StudentGender='男';GO3.4.4 从单表读取指定⾏和列SELECT <⽬标列> [,<⽬标列>...]FROM <表名>WHERE <条件表达式>;例3-21从Student表中读取专业为“软件⼯程”,性别为“男”的学⽣的学号、姓名、性别、专业四列的数据:SELECT StudentID, StudentName, StudentGender, MajorFROM StudentWHERE Major='软件⼯程' AND StudentGender='男';GO3.4.5 WHERE⼦句条件在WHERE⼦句条件中,可以⽤BETWEEN...AND关键词来限定列值范围,还可以⽤关键字LIKE与通配符来限定查询范围,NOT LIKE⽤于给出不在范围的条件。
基础sql语句1. SELECT: 用于查询表中的数据,可以使用通配符(*)表示所有列或者指定列名。
例子:SELECT * FROM table_name;3. WHERE: 用于筛选满足条件的数据行,可以使用比较运算符(>,<,=,!=,>=,<=)等。
例子:SELECT * FROM table_name WHEREcolumn_name >= 10;4. ORDER BY: 用于将查询结果按照某个列进行排序,可以指定升序或降序(ASC或DESC)。
例子:SELECT * FROM table_name ORDER BYcolumn_name ASC;5. GROUP BY: 用于将查询结果按照某个列进行分组,通常使用聚合函数(SUM,COUNT,AVG,MAX,MIN)进行数据计算。
例子:SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name;6. LIMIT: 用于限制查询结果的数量,只返回前几条数据。
例子:SELECT * FROM table_name LIMIT 10;7. JOIN: 用于将多张表按照共同的字段进行连接,可以有多种连接方式(INNER JOIN,LEFT JOIN,RIGHT JOIN,FULL OUTER JOIN)。
SQl数据库快速入门必须掌握的四大基本语句做一个系统的后台,基本上都少不了增删改查,作为一个新手入门,我们必须要掌握SQL 四条最基本的数据操作语句:Insert,Select,Update和Delete!下面对这四个语句进行详细的剖析:熟练掌握SQL是数据库用户的宝贵财富。
在本文中,我们将引导你掌握四条最基本的数据操作语句—SQL的核心功能—来依次介绍比较操作符、选择断言以及三值逻辑。
当你完成这些学习后,显然你已经开始算是真正SQ L入门了。
在我们开始之前,先使用CREA TE TABLE语句来创建一个表。
DDL语句对数据库对象如表、列和视进行定义。
它们并不对表中的行进行处理,这是因为DDL语句并不处理数据库中实际的数据。
这些工作由另一类SQL语句—数据操作语言(DML)语句进行处理。
SQL中有四种基本的DML操作:INSERT,SELECT,UPDATE和DELETE。
由于这是大多数SQL用户经常用到的,我们有必要在此对它们进行一一说明。
在图1中我们给出了一个名为EMPLOY EES的表。
其中的每一行对应一个特定的雇员记录。
请熟悉这张表,我们在后面的例子中将要用到它。
INSERT语句用户可以用IN S ERT语句将一行记录插入到指定的一个表中。
这些列按照我们创建表时定义的顺序排列。
SQL语句基本语句CREATE TABLE语句CREATE TABLE语句用于创建数据库中的表。
SQL CREATE TABLE语法CREATE TABLE表名称(列名称1数据类型,列名称2数据类型,列名称3数据类型,....)SQL SELECT语句SELECT语句用于从表中选取数据。
结果被存储在一个结果表中(称为结果集)。
SQL SELECT语法SELECT列名称FROM表名称以及:SELECT*FROM表名称注释:SQL语句对大小写不敏感。
SELECT等效于select。
SQL SELECT DISTINCT语句在表中,可能会包含重复值。
这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。
关键词DISTINCT用于返回唯一不同的值。
语法:SELECT DISTINCT列名称FROM表名称使用DISTINCT关键词如果要从"Company"列中选取所有的值,我们需要使用SELECT语句:SELECT Company FROM OrdersWHERE子句用于规定选择的标准。
WHERE子句如需有条件地从表中选取数据,可将WHERE子句添加到SELECT语句。
语法SELECT列名称FROM表名称WHERE列运算符值AND和OR运算符用于基于一个以上的条件对记录进行过滤。
AND和OR运算符AND和OR可在WHERE子语句中把两个或多个条件结合起来。
如果第一个条件和第二个条件都成立,则AND运算符显示一条记录。
如果第一个条件和第二个条件中只要有一个成立,则OR运算符显示一条记录。
AND运算符实例使用AND来显示所有姓为"Carter"并且名为"Thomas"的人:SELECT*FROM Persons WHERE FirstName='Thomas'AND LastName='Carter'OR运算符实例使用OR来显示所有姓为"Carter"或者名为"Thomas"的人:SELECT*FROM Persons WHERE firstname='Thomas'OR lastname='Carter'结合AND和OR运算符我们也可以把AND和OR结合起来(使用圆括号来组成复杂的表达式):SELECT*FROM Persons WHERE(FirstName='Thomas'OR FirstName='William')AND LastName='Carter'ORDER BY语句用于对结果集进行排序。
SQL语句的基本语法一.SELECT语句的完整语法为:SELECT[ALL|DISTINCT|DISTINCTROW|TOP]{*|talbe.*|[table.]field1[AS alias1][,[table.]field2[AS alias2][,…]]}FROM tableexpression[,…][IN externaldatabase][WHERE…][GROUP BY…][HAVING…][ORDER BY…][WITH OWNERACCESS OPTION]说明:用中括号([])括起来的部分表示是可选的,用大括号({})括起来的部分是表示必须从中选择其中的一个。
FROM子句后面是包含一个或多个的表达式(由逗号分开),其中的表达式可为单一表名称、已保存的查询或由 INNER JOIN、LEFT JOIN 或 RIGHT JOIN 得到的复合结果。
如果表或查询存储在外部数据库,在IN 子句之后指明其完整路径。
如果没有指明这个谓词,默认为ALL。
例:SELECT ALL FirstName,LastNameFROM Employees(2) DISTINCT 如果有多个记录的选择字段的数据相同,只返回一个。
(3) DISTINCTROW 如果有重复的记录,只返回一个(4) TOP显示查询头尾若干记录。
也可返回记录的百分比,这是要用 TOP N PERCENT子句(其中N 表示百分比)例:返回5%定货额最大的定单SELECT TOP 5 PERCENT*FROM [ Order Details]ORDER BY UnitPrice*Quantity*(1-Discount) DESC3 用 AS 子句为字段取别名如果想为返回的列取一个新的标题,或者,经过对字段的计算或总结之后,产生了一个新的值,希望把它放到一个新的列里显示,则用AS保留。
SQL基础知识大全SQL语言由命令、子句、运算和集合函数等构成。
在SQL中,数据定义语言DDL(用来建立及定义数据表、字段以及索引等数据库结构)包含的命令有CREATE、DROP、ALTER;数据操纵语言DML(用来提供数据的查询、排序以及筛选数据等功能)包含的命令有SELECT、INSERT、UPDATE、DELETE。
sql的基础语句SQL(Structured Query Language,结构化查询语言)是用于管理关系数据库管理系统的标准计算机语言。
下面是一些 SQL 的基础语句:1. **SELECT 语句**:用于从数据库中获取数据。
```sqlSELECT column1, column2 FROM table_name;```2. **INSERT INTO 语句**:用于将新数据插入到数据库表中。
```sqlINSERT INTO table_name (column1, column2) VALUES (value1, value2);```3. **UPDATE 语句**:用于更新数据库表中的现有数据。
```sqlUPDATE table_name SET column1 = value1 WHERE conditions;```4. **DELETE 语句**:用于从数据库表中删除数据。
```sqlDELETE FROM table_name WHERE conditions;```5. **CREATE TABLE 语句**:用于创建新的数据库表。
```sqlCREATE TABLE table_name (column1 datatype, column2 datatype);```6. **ALTER TABLE 语句**:用于修改数据库表的结构。
```sqlALTER TABLE table_name ADD column_name datatype;```7. **DROP TABLE 语句**:用于删除数据库表。
```sqlDROP TABLE table_name;```8. **CREATE INDEX 语句**:用于创建数据库表的索引。
```sqlCREATE INDEX index_name ON table_name (column1);```9. **ALTER INDEX 语句**:用于修改数据库表的索引。
一、基本查询语句 1、基本的语法格式:【select (SQL 关键字)[distinct (滤除重复记录)] * /列名称…… 别名 from table ;】2、书写SQL 语句遵循的基本原则:①不区分大小写,除非特别指定;②可以写成一行或多行;③关键字不能简写或分割于多行;④子句通常单独行书写,便于编辑和提高可读性;⑤使用Tab 和缩进提高程序可读性;⑥关键字最好使用大写,其他使用小写;⑦在SQL*Plus 中,SQL 语句是在SQL prompt 状态下输入,并且每行都有编号。
是SQL 的缓冲区,任何时候在缓冲区中只会存放当前一条语句。
3、| | 表示列与列、列与算术表达式、列与常量之间的合成。
第2章、限定查询和排序语句 1、限定数据行的查询语法格式:【select [distinct] */ 列名称…… 别名 from table where (限定条件)列名/表达式/常量/比较运算符;】 (其中比较运算符包括:=:等于、>:大于、>=:大于等于、<:小于、<=:小于等于、<>.!=.^=:不等于。
(要查询的列)between (下限)and (上限):两个值之间包括边界范围比较。
(要查询的列)in (集合,用逗号隔开):和多个值中任意一个匹配,相当于多个or 并列在一起。
(要查询的列)like+‘通配符和查询的内容’:模糊查询、is null :是否是空值)1.1、where 子句中,字符串和日期数值必须用单引号引起来,数值型常量则不需要,字符型数据区分大小写,默认的日期形式是:DD-MON-YY 。
1.2、like (模糊查询):把握不准查询确切的值,通过字形匹配来查询。
可以使用通配符:%:表示0或更多任意的字符;_:代表一个字符。
可以同时使用。
当查询的内容包括%或_时,可以使用escape ,即“/”转义符。
Not::如果条件为假则返回真值。
在where 子句中。
通过使用and 和or 在where 中使用多个条件。
1.4运算符优先规则:算数运算符>连接符>比较运算符>not>and>or 。
2、order by 子句:查询结果按照某种顺序排列显示。
order by 子句语法格式:【select [distinct] */ 列名称…… 别名 from table where (限定条件)列名/表达式/常量/比较运算符Order by (要查询的列) asc(生序排列)/desc (降序排序);】注意:order by 子句必须放在select 语句的最后,并且可以指定一个参与排序的表达式或别名。
可使用别名进行排序。
Select 语句中只能有一个order by 子句。
2.1、默认的排序方式是升序,不同类型数据的升序排列原则: ☆ 数值型数据按照从小到大的顺序排列的; ☆ 日期型数据按照时间从早到晚的顺序排列的; ☆ 字符型数据按照字母顺序排列的;☆ 空值在升序排列方式下排在最后,降序排列排在最前。
SQL 运行过程:from 首先运行,where 其次运行,select再运行,order by 最后运行。
对查询结果进行排序。
1、单行函数的特点:☆对查询返回的每一行都起作用。
☆可以返回一个数据值或相对于原类型不同类型的数据值。
☆可以有一个或多个参数,参数可以是一列或一个表达式。
☆每行返回一个结果。
☆可以用于select、where、order by子句,并且可以相互嵌套。
☆只对一行进行操作。
2、单行查询语法格式:【function_name(函数名称) column(列名)/ expression(字符串或计算表达式) [arg1(参数),arg2……]】3、字符函数:接受字符输入并且返回字符或数值。
①大小写转换函数:lower(需转换的内容):将字符串转换成小写。
Upper(需转换的内容):将字符串转换成大写。
initcap(需转换的内容):将每个单词的第一个字母转换成大写,其余字母转换成小写。
②字符处理函数:concat:将字符串连接在一起。
substr:提取字符串的某一特定部分;参数:(字符串,截取起始点[负数:从右往前数,然后从前往后截取],截取个数[省略表示截取到最后])。
length:获得字符串的个数。
instr:在字符串中查找某个字串的位置;参数(字符串,要查找的字符,从那个位置开始查找[默认值为1,负数:一直从右往左数],第几次出现的位置)。
lpad:以右对齐的方式填充字符型数据;参数:(字符串,填充长度,填充内容)。
rpad:以左对齐的方式填充字符型数据(参数同上)。
trim:去掉字符串头部或尾部,如果被去除的字符串和被处理的字符串是原义字符串则必须使用单引号引起来;参数:(去掉的字符串from 被去掉的字符串)。
replase:替换;参数(字符串,被替换字符,替换的字符)。
4、数值函数:接受数值输入并返回数值。
包括:round:四舍五入;参数:(数字,四舍五入后的小数点后位数[默认值为0,负数为从小数点往左边数])。
trunc:截取;参数:(数字,截取后小数点后面的位数[同上,但无四舍五入功能])。
mod:求余,多用于判断奇数偶数;参数:(被除数,除数)。
5、日期函数:对日期型进行操作,所有的日期函数都返回一个日期型数据,除了months_between函数,返回一个数值。
Oracel9i默认的显示和输入形式是DD-MON-RR。
日期的运算如下表:YY与RR的比较:Array◇day:对星期的计算。
6.1数据类型的显示转换:6.2数据类型转换函数包括如下:6.4使用日期模式时注意的问题:☆必须用单引号引起来,对大小写敏感。
☆可以包含任意的有效的日期元素。
☆可以用fm消除前导空格或前导0。
☆使用‘,’与日期型数据分隔开。
7、通用函数:8、单行函数的嵌套:嵌套的函数是从里层向最外层的顺序依次计算的。
第四章、多表查询1、连接:从多个表中获取数据时,需要使用连接条件。
通过使用相对应列的公共值进行连接,需在where子句中写出连接条件。
1.1连接语法格式如下:【select table1.column, table2.column…from table1,table2…where table1.column1=table2.column2 】注:table1.column:指明查询的数据来源的表名和列名;table1.column1:连接条件。
连接条件的情况包括:等值连接(内部连接或简单连接),非等值连接,外部连接,和集合运算符。
1.2在编写访问多表的SQL语句时,需注意的问题:☆用到表连接时,需要在列名之前标示出表名,以提高数据库的访问效率。
☆多个表中存在相同的列名时,列名之前必须用表名标示。
☆n个表相连时,至少需要n-1个链接条件。
1.3连接中使用表的别名需注意的事项:表的别名>=30个字符,但原越短越好;若在from语句中定义了表的别名,在整个select语句中必须使用别名;表的别名要具有一定的意义;表的别名只在当前select语句中有效。
2、笛卡尔积:当连接条件无效或完全被省略以及第一个表中的所有行和第二个表中的所有行都发生连接时,所有行的组合都出现,这种结果称为笛卡尔积。
是一种交叉连接,当需要产生大量的数据行模拟海量的数据时才会用到。
3、等值连接(内部链接):在where子句中用“and”加入其它条件进行连接。
4、非等值连接:不用“=”的连接为非等值连接。
例如:5、外部连接:在SQL: 1999中,内连接只返回满足连接条件的数据。
两个表在连接过程中除了返回满足连接条件的行以外还返回左(或右)表中不满足条件的行,这种连接称为左(或右)外连接。
两个表在连接过程中除了返回满足连接条件的行以外还返回两个表中不满足条件的行,这种连接称为全外联接。
在连接时,允许出现不匹配的记录。
使用外部连接注意的事项:(+)必须放在连接条件表达式的一侧,即缺少相关连接信息的表一侧,返回该表中那些在另一个表中没有得到匹配的记录;外部连接条件中不能使用in运算符,也不能用or运算符与其他条件相连。
6、自身连接:一般在人事系统当中使用自连接,因为再高级的领导,在财务人员来看,他们也是员工。
7、SQL:1999语法连接:使用连接从多个表中查询数据。
可以写成等值连接方式;若要使用其他连接方式可以通过where 子句实现。
注意事项:▪ 自然连接子句基于两个表存在相同名称的列;▪ 返回两个表相匹配列中具有相同值的记录; ▪ 如果相同名称的列的数据类型不同,则会产生错误。
9、using 子句连接:使用时注意的问题:在natural join 子句创建等值连接时,如果有多个名字相同,数据类型不同的列,那么可以使用 using 子句指定等值连接中需要用到的列。