二、数据库查询

MySQL

二、数据库查询

1、数据的查询语句

  • 查询产生一个虚拟表,看到的是表形式显示的结果
  • 结果并不真正存储,每次执行查询只是从现有数据表中提取数据,并按照表的形式显示出来

1. from子句

语法: selcet * from 表名 where true; 
1. * 代表查询所有列,可以指定列名查询指定列,多个列名之间逗号隔开
2. where true 可以省略不写

2. 使用别名

语法: selcet 列名 as 别名 from 表名;

3. where子句

  当查询条件中和数字比较,可以使用单引号引起,也可以不用,当和字符及日期类型的数据比较,则必须用单引号引起
语法: selcet * from 表名 where 条件表达式;

4. 其它语句

  1. upper(char)/lower(char)用于将字符转换为大/小写形式 
    例子: selcet upper('hello world');
  2. 查询rose的信息(需要区分大小写)
    例子: selcet * from 表名 where 列名=upper('rose');
  3. 查询“id”列,包含所有重复值:
    例子: selcet id from 表名; 
    查询“id”列,去掉重复值:
    例子: selcet distinct id from 表名;
  4. 字符串的拼接
    例子: selcet concat('hello','world');
  5. length(字符串长度)
    例子: select length('love');

2. 运算符

1. 算术运算符

  1. +: 加;操作数之和。 例子: a+b
  2. -: 减;操作数之差。 例子: a-b
  3. -: 一元减号,操作数取负 例子: -b
  4. *:乘,操作数之积 例子: a*b
  5. /:除,操作数之商 例子: a/b
  6. %:模,操作数除后的余数 例子: a%b

2. 比较运算符

  对表达式的左边和右边进行比较,一个比较运算符的结果总是1(真),0(假),或是为NULL(不能确定)
  比较运算符可以用于比较数字和字符串。数字作为浮点值比较,而字符串以不区分大小写的方式进行比较(除非使用特殊的BINARY二进制关键字)
1. = 
2. != 或 <>
3. < 
4. <=
5. > 
6. >= 
7. in: 多个之中一个,例: a in(b1,b2,b3,……) 
8. between: 两个个之中一个,例: a between b and c 
9. like: 匹配,例: a like b 
10. not like
11. regexp: a regexp b 
12. not regexp
13. <=>: 相同为真(允许为null) 
14. is null: a is null 
15. is not null
16. >(或者>=)any: 大于(或者大于等于)最小
17. <(或者<=)any: 小于(或者小于等于)最大 
18. >(或者>=)all: 大于(或者大于等于)最大 
19. <(或者<=)all: 小于(或者小于等于)最小

3. 通配符

  如果想执行通配符数据搜索,应该使用like运算符。 1. % :百分号,任意长度(可为0)的字符串
2. _ :下划线,任意单个字符

3.DML(数据操作语言)

  1. 插入语句 
    语法: insert into 表名(列名1,列名2,……) values(值1,值2,……);
    1. 如果表名后面没写字段名,则默认是向所有的字段添加值
    2. 字符串值应该用单引号或双引号括起来
    3. 插入多行:insert into 表名(列名) values(值1),(值2),……;
  2. 更新语句
    语法: update 表名 set 列名=更新值 where 条件表达式
    • where 子句是判断语句,用来设定条件,限制只更新匹配的行,如果不带where子句,则更新所有行数据。
  3. 删除语句
    语法: delete from 表名 where 条件表达式
    • 此语句删除表中的行,如果不带where子句,则删除整个表中的记录,但是表不被删除

4. 子查询

  在select查询中,在where查询条件中的限制条件不是一个确定的值,而是来自于另外一个查询的结果。为了给查询提供数据而首先执行的查询语句叫做子查询。   嵌入在其它SQL语句中的select语句,大部分时候出现在where子句中。
  子查询嵌入的语句称作主查询或父查询 
  主查询可以是SELECT语句,也可以是其它类型的语句比如DML或DDL语句。
  根据返回结果的不同,子查询可分为单行子查询、多行子查询及多列子查询。

1. exists关键字

  • exists后边的子查询至少返回一行数据,则整个条件返回TRUE。如果子查询没有结果,则返回FALSE。

2.内视图(匿名视图)

  • 在查询语句中,from子句用来指定要查询的表。如果要在一个子查询的结果中继续查询,则子查询出现在from子句中,这个子查询也称作行内视图或者匿名视图。这时,把子查询当作视图对待,但视图没有名字,只能在当前的SQL语句中有效。

5. 排序

1. 单列排序

语法: select 列名 from 表名 where 条件表达式 order by 排序方式
1. order by 必须出现在select中的最后一个子句 
2. 排序时默认按升序排列,即由小及大, asc用来指定升序排序
3. desc用来指定降序排序
4. null值视作最小,则升序排列时,排在最前,降序排列时,排在最后

2. 多列排序

  当以多列作为排序标准时,首先按照第一列进行排序,如果第一列数据相同,再以第二列排序,以此类推。多列排序时,不管正序还是倒序,每个列需要单独设置排序方式。
语法: select 列1,列2 from 表名 where 条件表达式 order by 列1 排序方式, 列2 排序方式;


猜你喜欢

转载自www.cnblogs.com/Gavin520/p/10651295.html
今日推荐