ORACLE常用的SQL
程序员文章站
2022-04-22 08:57:55
...
ORACLE常用命令 spool host 无 -- 使用sqlplus连接数据库-- 标准用法sqlplus username/password@hostname:port/SERVICENAME-- 示例sqlplus payment/password@192.168.117.1/pay-- hostname:port/SERVICENAME 可配置为别名到 tnsnames.ora 文件sqlplus payment
ORACLE常用命令spool
host
-- 使用sqlplus连接数据库 -- 标准用法 sqlplus username/password@hostname:port/SERVICENAME -- 示例 sqlplus payment/password@192.168.117.1/pay -- hostname:port/SERVICENAME 可配置为别名到 tnsnames.ora 文件 sqlplus payment/password@tnsname -- 先进入 sqlplus, 然后使用 conn 方法进行连接 sqlplus /nolog conn payment/password@192.168.117.1/pay -- copy 几条 -- 操作系统认证,不需要listener进程 sqlplus / as sysdba -- 只能连接本机数据库,同样不需要listener进程 sqlplus username/password -- 这种方式需要listener进程处于可用状态。最普遍的通过网络连接。 sqlplus username/password@tnsname
-- 登录服务器, 切换至oracle用户 su - oracle -- 进入文件夹,后续所有对文件的操作都是基于该目录 cd /oracle/database/ -- sqlplus 连接具体的数据库 sqlplus payment/password -- 确定用户是否正确 show user; -- 执行payment.sql -- 所有的内容输出至 payment.log,该文件位于 /oracle/database/ 目录 spool payment.log @payment_indexs_execute.sql spool off -- 使用host 命令可以转为 linux 命令执行 host more payment.log -- 还可使用 conn 命令连接数据库 conn payment/password show user;
-- 查看数据库表的索引 SELECT * FROM USER_INDEXS WHERE TABLE_NAME=’TableName’; -- 查看索引所建立的列信息 SELECT * FROM USER_IND_COLUMNS WHERE INDEX_NAME=UPPER(‘IndexName’); -- 创建主键 --1) 创建表的时候指定主键 CREATE TABLE Persons ( P_ID int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), CONSTRAINT PK_Persons PRIMARY KEY (P_ID,LastName) ) --2) ALTER Table 添加的两种方法 ALTER TABLE TableName ADD PRIMARY KEY(Column1); -- 这种方式是否支持多列? 这种方式没有指定主键名称,主键默认名称是什么 ALTER TABLE TableName ADD CONSTRAINT PK_TabeName PRIMARY KEY(Column1, Column2); -- 创建唯一性索引 ALTER TABLE TableName ADD CONSTRAINT U_INDEX_NAME UNIQUE (Column1, Column2); CREATE UNIQUE INDEX U_INDEX_NAME ON TableName(Column1, Column2); -- 创建普通索引 是否有ALTER 方法创建? CREATE INDEX I_INDEX_NAME ON TableName (Column1, Column2); -- 当索引列存在重复时, 创建唯一性索引会报 “找到重复关键字" /*1. 将重复的记录进行修改 2. 建立 enable novalidate 索引*/ ALTER TABLE TableName ADD CONSTRAINT U_IDX_NAME ENABLE NOVALIDATE; -- 修改索引类型: ENABLE NOVLIDATE —> ENABLE VALIDATE ALTER TABLE TableName ENABLE VALIDATE CONSTRAINT U_IDX_NAME; -- 删除索引 ALTER TABLE TableName DROP CONSTRAINT U_IDX_NAME; -- 将表设置为只读表 ALTER TABLE T READ ONLY; -- 取消只读(设置为读写) ALTER TABLE T READ WRITE;
-- 更新一个字段 /* 括号内的conditions 为 Table1和Table2的关联 括号外的conditions 为 Table1更新的范围 */ UPDAE Table1 SET Column1=( SELECT Column FROM Table2 WHERE Conditions ) WHERE Conditions; -- 更新多个字段,多个字段之间使用逗号 , 分割 UPDATE Table1 SET Column1, Column2=( SELECT Column1, Column2 FROM Table2 WHERE Conditions ) WHERE Conditions; -- 将001和002机构的MCC,MCCDescription 两个字段 关联MCCDetail表 进行更新 UPDATE Merchant t1 SET MCC,MCCDescription=( SELECT MCC,MCCDescription FROM MCCDetail t2 WHERE T1.MCC=T2.MCC ) WHERE T1.MerchantNo IN ('001', '002');