sql plus及SQL语句

1.sql plus

1,SQL plus的定义
sql plus是用来和oracle进行交互的工具。可电脑端使用,也可以在服务器上使用

2,启动SQLplus
   在cmd界面直接输入SQLplus就可进入
3,常用命令
         show  显示SQL plus中的信息
      connect (缩写conn) 先无条件断开数据库用户的链接,再次输入可再次建立链接
   disconnect (缩写desc) 断开当前连接
      注意:desc 为描述命令,只能在命令窗口执行
            语法:desc 表名   查询表的表头名字及类
          
           set    设置SQLplus中的相关信息
          help    获取SQLplus命令帮助
   clear scree    清屏
    exit或quit    退出

4,创建用户
       第一部分:创建一个普通用户
   
                 语法:create user 用户名 identified  by 密码;       

       第二部分:授权此用户   
            
                 授权角色在oracle中有3个
                         DBA  系统管理权限  
                     connect  创建会话链接权限
                    resource  操作数据库对象的权限
      
                    语法:grant 权限,权限..to 用户名;
              

                  修改密码:alert user 用户名 identified 新密码;
                  删除用户:drop user 用户名;
                  账户解锁:alert user 用户名 account unlock;

                  

         最后导入SQL脚本:第一,把脚本内容复制黏贴到SQLplus;
                          第二,@文件路径  文件名.后缀名

2.sql查询语句

 1,SQL条件查询
      where字句用来过滤查询的数据,它对字面量大小写是敏感

     语法:
        select 列名1,列名2...
        from 表名
        where 筛选的条件;
   
  2.  --select后面是*,代表查列表的所有的内容
      select * from 表名;

3.SQL运算符

a.比较运算符
>, <, =, <=, >=, !=(^=,<>) --不等于

   --查询在41部门的员工名字,工资  
      select 
       first_name,salary   --(此处布局为select语句的书写格式)
      from 
         s_emp           
      where
     dept_id=41;


    --找出工资大于1200的员工的全名、工资、职位(把两个名字连起来用||' '|| 在引号中间可放符号        汉字等根据客户需要)
      select 
          first_name||' '||last_name 全名,salary 工资,title 职位 
                            --汉字代表前面的别名(salary显示出来的列名是工资)
      from s_emp
      where salary >1200;

     b.逻辑运算符 
        and  ,or   --and优先级高于or
     
      --查出41部门中工资高于1200的员工名字,工资;
         select first_name, salary ,dept_id
            from s_emp
         where 
           dept_id = 41 and salary > 1200;   
      --查出41,50,42部门的员工名字,薪水;
         select first_name,salary from s_emp where dept_id=41 or dept_id=42  or dept_id=50;
     
 
     c.其它运算符 
1.in()    相当于or 。 取多个数值,多个值之间使用逗号隔开
          not in() 相当于and。 显示出来的意思为不包含括号里面的内容

            例:deot_id in(41,42,50)相当于dept_id=41 or dept_id=42  or dept_id=50;
             
               --查出在41,42,50部门的员工名字,薪水;
                  select first_name,salary from s_emp where dept_id in(41,42,50); 

            例:dept_id between 2 and 6 在指定的范围之内,是全闭空间;相当于dept_id>=2 and                      dept_id<=6
                dept_id>2 and dept_id<6 非全闭空间
              
               --找出工资在1200到1500之间的员工名字;(全闭和不全闭)
                全闭:
                   select first_name,salary 
                   from s_emp 
                   where salary between 1200 and 1500;
                非全闭:
                    select first_name,salary 
                    from s_emp 
                    where salary >1200 and salary <1500;


        
        2.is null
          is not null
          注意:查询数据时条件是否为null,我们使用关键字is null 或者is not null ,千万不能使                用=(即等号)
             
            --找出工资大于1500并且没有提成的员工;
              select * from s_emp 
              where salary > 1500 and commission_pct is null;

        3.模糊查询:like ''
                   not like '' 
                   引号里面用通配符: _ 英语状态下的下划线,代表任意单个字符
                                      % 代表任意多个字符 
                  --查询名字是以M打头的员工;
                    select * from s_emp where first_name like 'M%';
                  
                  --查出姓名中第三个字母是e的员工;
                    select * from s_emp where first_name like '__e%';
                 
                  --查出姓名不带a的员工;
                    select * from s_emp where first_name not like'%a%'; 

4.order   by排序

排序字句:
  select 列名1,列名2...
  from 表名
  where 查询条件
  order by 列名 asc(升序,默认可以不写)|desc(降序)

   --找出查询职位是Stock Clerk的员工全名、工资,并按照工资的降序排序
     select first_name||' '||last_name 全名,salary 工资 
     from s_emp
     where title = 'Stock Clerk'
     order by salary desc;

   --查询职位中带vp(大写)的员工名字,工资,并按照工资降序排序;
      select first_name,salary,title  from s_emp where title like '%VP%' 
      order by salary desc;

   --查询出年薪(包含提成)低于25000的员工名称,职位,年薪,并按照年薪升序排序;
      select
         first_name 名字,title 职务,salary 薪资,salary*12*(1+nvl(commission_pct/100,0)) 年薪
      from
         s_emp
      where
         salary*12*(1+nvl(commission_pct/100,0))<25000 
      order by
         salary*12 asc;
原文地址:https://www.cnblogs.com/lxy151/p/7806173.html