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 oliver
conn 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_t
ORDER 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,salary
FROM emp_t
WHERE salary BETWEEN 5000 AND 8000;
--IN 限定内容,仅是括号内的值
SELECT name,dept_id
FROM emp_t
WHERE dept_id IN (2,3);
--LIKE 模糊查询 %表示0或多个字符 区分大小写,以下表示以O开头
SELECT name
FROM emp_t
WHERE name LIKE 'O%'
--IS NULL 判断是否为空,不能用 =运算符
SELECT name,age
FROM emp_t
WHERE age IS NULL;
--逻辑运算符
--NOT(非) AND(与) OR(或)
--AND 要求满足前后两个条件
SELECT name,salary
FROM emp_t
WHERE name='oliver'
AND salary>4000;
--优先级 NOT>AND>OR
--先判断salary>300 AND dept_id=3
SELECT name,salary,dept_id
FROM emp_t
WHERE salary>3000
AND dept_id=3
OR dept_id=2;
如果有错误或者是可以改进的地方,还请各位大神指点。