SQL平常使用简单操作(1)
连接数据库,操作数据库基本
conn 连接
disc 断开数据库连接
passw 修改用户密码
exit 断开数据库连接并且退出黑框或者退出sqlplus
show user 显示当前用户
检索数据
- 检索一个表
select a.* from student a;
简单的一条查询语句就出现了。要习惯给表起别名。
- 检索单个列
select a.STU_NO from student a;
STU_NO
0721001
0721002
0721003
0721004
0721005
- 检索多列
select a.STU_NO ,a.STU_NAME from student a;
STU_NO STU_NAME
0721001 张三
0721002 李四
0721003 王五
0721004 赵四
0721005 钱六
- 检索去重 distinct
select distinct a.STU_NO from student a;
使用DISTINCT关键字,它指示数据库只返回不同的值。如果使用DISTINCT关键字,它必须直接放在列名的前面。
警告:不能部分使用DISTINCTDISTINCT关键字作用于所有的列,不仅仅是跟在其后的那一列。
例如,你指定 select distinct a.STU_NO ,a.STU_NAME from student a;除非指定的两列完全相同,否则所有的行都会被检索出来
- 限制显示行数(数据库不同,使用的方法也不同)
如果你使用Oracle,需要基于ROWNUM(行计数器)来计算行,像这样:
select a.STU_NO ,a.STU_NAME from student a where rownum<=5;
只显示检索出的前5行
- 使用注释(类似于plsql中使用)
注释使用–(两个连字符)嵌在行内。–之后的文本就是注释,
select distinct a.STU_NO from student a; --这是一条注释
注释从/开始,到/结束,/和/之间的任何内容都是注释。这种方式常用于给代码加注释。
select distinct a.STU_NO from student a; /*这是一条注释*/
数据排序
检索出的数据并不是随机显示的。如果不排序,数据一般将以它在底层表中出现的顺序显示,这有可能是数据最初添加到表中的顺序。但是,如果数据随后进行过更新或删除,那么这个顺序将会受到DBMS重用回收存储空间的方式的影响。因此,如果不明确控制的话,则最终的结果不能(也不应该)依赖该排序顺序。关系数据库设计理论认为,如果不明确规定排序顺序,则不应该假定检索出的数据的顺序有任何意义。
order by
select a.STU_NO ,a.STU_NAME from student a order by a.STU_NAME;
- 按多个列排序
经常需要按不止一个列进行数据排序。例如,如果要显示雇员名单,可能希望按姓和名排序(首先按姓排序,然后在每个姓中再按名排序)。如果多个雇员有相同的姓,这样做很有用
SELECT prod_id,prod_price,prod_name
FROM Products
ORDER BY prod_price,prod_name;
重要的是理解在按多个列排序时,排序的顺序完全按规定进行。换句话说,对于上述例子中的输出,仅在多个行具有相同的prod_price值时才对产品按prod_name进行排序。如果prod_price列中所有的值都是唯一的,则不会按prod_name排序。
- 指定排序方向
DESC降序,ASC升序,默认升序。
SELECT prod_id,prod_price,prod_name
FROM Products
ORDER BY prod_price DESC;
对多行进行排序
SELECT prod_id,prod_price,prod_name
FROM Products
ORDER BY prod_price DESC,prod_name ASC;
使用where子句
学号为0721001的信息
select a.* from student a where a.stu_no=0721001;
商品价格小于10元(单位由设定的时候确定)
select prod_id,prod_price,prod_name
from Products
where prod_price<10;
操作符 | 说明 |
---|---|
= | 等于 |
< | 小于 |
<= | 小于等于 |
!= | 不等于 |
<> | 不等于 |
between and | 在范围内,包括边界值 |
is null | 等于空值 |