Oracle-SQL命令复习总结_1

来源:互联网 发布:江边城外 知乎 编辑:程序博客网 时间:2024/06/06 15:30

SQL命令复习:

  • 取值语句:SELECT

  • 数据操作语句 Data manipulation language(DML)
    INSERT UPDATE DELETE

  • 数据定义语句 Data definition language(DDL)
    CREATE ALTER DROP RENAME TRUNCATE

  • 事务控制语句 Transaction control
    COMMIT ROLLBACK SAVEPOINT

  • 数据控制语句 Data control language(DCL)
    GRANT REVOKE

登陆sys超管账户:

conn sys as sysdba--提示输入密码

创建新用户:

create user name identified by password;--name:新用户的名字--password:新用户的密码

给创建的用户授权:

grant connect,resource to Oliver [with admin option 同时获得权限分配权];--将连接数据库和进入数据缓存区权限赋予给Oliver用户--还有其他权限可用赋予,根据需要授权

用户登陆:

conn oliverconn oliver/password--第一种会提示输入密码,第二种密码直接输入,但是密码会显示,不安全

导入SQL脚本

start e:\oracle.sql;--start 后面接文件路径,或者可以直接@ 文件路径

查看表结构:

desc user_table --user_table为自带的数据字典表

调整表显示结构:

col colname format 9999;--设置colname列显示4个数字的宽度col colname format a10;--设置colname列占有10个字符的宽度set linesize 20;--设置行宽为20个字符--不要设置的小于该列数据的宽度,否则显示会乱码

查询语句:

  • SELECT语句
SELECT [DISTINCT] {*,column[alias],....} FROM table;--DISTINCT表示查找不重复的语句--*为通配符,代表查询table中所有的列,或查指定的列,table为查找的表名--SELECT 语句可以写成一行或者多行,语句长时分行有益于理解,不区分大小写,关键字最好大写--算术表达式--可使用加减乘除来处理查到的列值,但仅限数字和日期类型,若是有一项为null,结果也为null--可用NVL(column,value)函数将空值换成指定值,value为替换的值--查询员工年薪SELECT name,salary*12 FROM emp_t;--列的别名--别名用来替换原来的列名,增加可读性--若是别名里包含了空格、特殊的字符或者要区分大小写则需要双引号SELECT name "名字" FROM emp_t;
  • ORDER BY 子句
SELECT [DISTINCT] {*,column[alias],....} FROM table[ORDER BY {column,expr,alias} [ASC|DESC]];--ORDER BY 总是放在SELECT语句末尾--column为列名,expr为表达式,alias为别名,ASC为升序(默认可省略),DESC为降序--后面可接多列,按顺序排列过来,空值永远是最大的!SELECT name,dept_id,salary FROM emp_tORDER BY dept_id,salary DESC;--这里dept_id按升序排列,salary按降序排列 
  • WHERE子句
SELECT [DISTINCT] {*,column[alias],....} FROM table[WHERE condition(s)][ORDER BY {column,expr,alias} [ASC|DESC]];--在FROM子句后面,condition(s)为一个或者多个条件--对SQL语句返回的数据集进行筛选,数据集可以是一张表,也可以是另一条SELECT语句返回的数据集--字符串和日期用单引号括起来,数值不用,日期格式为显示格式(‘DD-MON-YY’),否则作为一个字符串--比较运算符:-- = > >= < <= != <> --BETWEEN...AND..., IN(list), LIKE, IS NULL,NOT BETWEEN,NOT IN,NOT LIKE,IS NOT NULL --BETWEEN...AND...包括起止值SELECT name,salaryFROM emp_tWHERE salary BETWEEN 5000 AND 8000;--IN 限定内容,仅是括号内的值SELECT name,dept_idFROM emp_tWHERE dept_id IN (2,3);--LIKE 模糊查询 %表示0或多个字符 区分大小写,以下表示以O开头SELECT name FROM emp_tWHERE name LIKE 'O%'--IS NULL 判断是否为空,不能用   =运算符SELECT name,ageFROM emp_tWHERE age IS NULL;--逻辑运算符--NOT(非) AND(与) OR(或)--AND 要求满足前后两个条件SELECT name,salaryFROM emp_tWHERE name='oliver'AND salary>4000;--优先级 NOT>AND>OR--先判断salary>300 AND dept_id=3SELECT name,salary,dept_idFROM emp_tWHERE salary>3000AND dept_id=3OR dept_id=2;

如果有错误或者是可以改进的地方,还请各位大神指点。
原创粉丝点击