数据库——单表查询

需要执行的SQL语句:

 

一、语法:

select *|字段列表|表达式 from table_name [where 条件] [order by 字段列表]

说明:

1、*:相当于按照表中字段顺序罗列表中的所有字段

e.g

 

2、字段列表:当查询结果只是表中部分字段时,可将要显示的字段罗列出来,字段之间以逗号间隔

e.g

 

3、表达式:可以是算术运算符也可以是数据库中的函数

e.g

 

       字段别名:

           select所选字段后面可以指定别名以使查出来的结果所显示的字段更好理解,字段名与别名之间使用空格或as关键字间隔;为了阅读方便,推荐使用as关键字这种方式定义字段别名。

           e.g

   

               在默认情况下,查询结果中显示的字段名为大写字母,如果别名中包含空格、特殊字符(例如%)或者对大小写敏感,则别名需要使用引号引

起来。

               e.g

 

4、table_name:表名,表名也可以有别名,表名与别名之间使用空格间隔(MySQL数据库中表的别名可以使用as关键字间隔,但Oracle数据库不允许)。

e.g

 

注意:

a、表的别名最多可以有30个字符;

b、表别名的作用方法在整个select语句中都有效,离开select语句即无效。

5、where:指定查询过滤条件:

--like:进行数据模糊查询

%:匹配0次或多次

e.g

 

_:只匹配1次

e.g

 

escape:取消%或_字符的通配符特性

e.g

          

注意:

1escape后面单引号中只能是单个字符;

2escape后面可以是字母、#、$、,、_等字符;

--逻辑条件and、or

e.g

 

--between 下限 and 上限,等同于“(column_name>=下限) and (column_name<=上限)”

e.g

 

注意:

1、“between 下限 and 上限”一定是小值在前大值在后,否则查不出数据; 

2、“between 下限 and 上限”查询数据包括边界值;

--关系条件 =、!=、<、=<、>、>=等

e.g

 

--invalue1,value2,value3......valuen,等同于“ column_name = value1 or column_name = value2 or column_name = value3...... or column_name = valuen ”

e.g

 

-- null =包括is null  is not null

e.g

 

注意:is null不能写成 = null,同样,is not null不能写成!=null

6、order by:对查询结果进行排序,必须置于SQL语句的最后,语法:order by {column_name1, column_name2, column_name3, ......column_namen} [asc|desc]

说明:

a、{column_name1, column_name2, column_name3, ......column_namen}——指定需要排列的字段

b、[asc|desc]——指定排列策略,asc以升序排列,desc以降序排列,默认以升序排列。

不同数据类型,升序的含义如下:

①、数字类型:小值在前面显示;

②、日期类型:早的日期在前面显示;

③、字符类型:依据字母顺序显示,a在前,z最后;

④、空值:显示在最后;

e.g

 

order by 子句中,不仅可以使用字段,还可以使用字段别名进行排序,例如:

 

多重排序:也称多列排序,即先以一个字段对查询结果进行排序,然后在这个排序的基础上再对另一个字段进行排序,最终显示经多次排序后的查询结果;

 

二、去掉重复行

数据库使用distinct关键字去除相同行(“相同的行”指不同行之间的相同列中的数值相同)

例如:

select distinct type_name from book

select distinct price,vip_price from book

注意:该关键字必须紧跟select关键字的后面,即如下写法是错误的:select price, distinct vip_price from books

三、算术表达式

1Oracle数据库中的算术运算符包括+、-、*和/,其中/运算符的结果为浮点类型的数值

   例如:select vip_price + 1 new_price from book

2、Oracle数据库中没有取余运算符,如果要对数据进行取余运算只能借助数据库mod(x,y)来实现,其中x为被除数,y为除数

   例如:select mod(1,3) as result from dual

3Oracle数据库中可以对date或timestamp类型的数据进行加减操作(但不能进行乘除操作)

   例如:select sysdate + 365 new_date from dual

四、连字运算符

Oracle数据库中使用||作为连字运算符,连字运算符可将字段与字段、字段与表达式、字段与常数值之间连接成单列显示出来。

例如:select id || ',' || name as book_info from book

注意:如果连接的常数值是数字则可以不使用单引号将其引起来,但如果是字符串日期类型,则必须使用单引号将其引起来

五、dual表

dual表的所有者是sys用户,该表可以被所有用户使用,它只有一个dummy列,表中只有一条数据X。该表通常用于没有目标表的情况下,为了使select语法完整(select子句必须包括from子句)而使用的一个不需要从表中真实取数值的表。

原文地址:https://www.cnblogs.com/lyxcode/p/9406216.html