作者 小荷||【转载时请务必以超链接形式标明文章原始出处和作者信息】
· 永久链接: http://www.oracleblog.cn/useful-script/prompt-of-sqlplus/
misc@ORALOCAL(192.168.0.49)>
如果你也想和我一样,在sqlplus登录数据库的时候,能提示不少像上面这样详细登录的信息:
1.登录的用户名。当你的数据库中有多个用户时,它能告诉你当前登录的是哪个用户。
2.登录的实例名。如果登录的rac,用这个能知道当前登录在哪个node。
3.登录主机的IP。有的时候,你可能登录在2台数据库主机上,2个数据库用户名相同,instance相同,只是数据库存在在不同的主机上——往往在数据库迁移的时候会遇到这样的情况。那么通过知道数据库主机的IP,将能防止你出错。
你可以可以和我一样在$ORACLE_HOME/sqlplus/admin/glogin.sql文件中添加以上语句。
define_editor=vi
settimingon
setserveroutputonsize100000
setlinesize100
settrimspoolon
setlong5000
settermoutoff
defaultgname=idle
columnglobal_namenew_valuegname
SELECTlower(USER) || '@' ||upper(instance_name)||'('||nvl(UTL_INADDR.GET_HOST_ADDRESS,SYS_CONTEXT('userenv', 'ip_add ......
USE dxdb;
DELIMITER //
#获取流水号
DROP PROCEDURE IF EXISTS get_sid;
CREATE PROCEDURE get_sid(para_domain VARCHAR(20), out para_sid BIGINT UNSIGNED)
BEGIN
START TRANSACTION;
UPDATE t_sid SET sID=sID+1 WHERE cDomain=para_domain;
SELECT sID INTO para_sid from t_sid WHERE cDomain=para_domain;
COMMIT;
END
//
DELIMITER ; ......
格式:grant [PRIVILEGES] on [databaseName.tableName] to [userName]@[host] identified by [password] with grant option;
eg1: grant select on mysql.user to wqh@localhost
eg2:GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON expenses.* TO custom@whitehouse.gov IDENTIFIED BY 'stupid'; ......
1.查看档案
mysql> show binary logs;
+----------------+-----------+
| Log_name | File_size |
+----------------+-----------+
| ablelee.000001 | 150462942 |
| ablelee.000002 | 125 |
| ablelee.000003 | 106 |
+----------------+-----------+
2.删除bin-log(删除ablelee.000003之前的而没有包含ablelee.000003)
mysql> purge binary logs to 'ablelee.000003';
Query OK, 0 rows affected (0.16 sec)
3. 查询结果(现在只有一条记录了.)
mysql> show binlog events\G
*************************** 1. row ***************************
Log_name: ablelee.000003
Pos: 4
Event_type: Format_desc
Server_id: 1
End_log_pos: 106
Info: Server ver: 5.1.26-rc-log, Binlog ver: 4
1 row in set (0.01 sec)
(ablelee.000001和ablelee.000002已被删除)
mysql> show binary logs;
+----------------+-----------+
| Log_name | File_size |
+----------------+-----------+
| ablelee.000003 | 106 |
+----------------+-----------+
1 row in set (0.00 sec)
(删除的其它格式运用!)
PURGE {MASTER | BINARY} LOGS TO 'log ......
mysql中INSTR函数的用法
INSTR(字段名, 字符串)
这个函数返回字符串在某一个字段的内容中的位置, 没有找到字符串返回0,否则返回位置(从1开始)
SELECT * from tblTopic ORDER BY INSTR( topicTitle, 'ha' ) > 0 DESC
SELECT INSTR( topicTitle, 'ha' ) from tblTopic
mysql中使用instr配合IN排序
将instr结果作为一列,按其排序
select id,1 from world_guide where id = 32
union
select * from
(select id, instr('30,35,31,',id+',') as d from
world_blog where id in (30,35,31) order by d) as t;
输出
+----+---+
| id | 1 |
+----+---+
| 32 | 1 |
| 30 | 1 |
| 35 | 4 |
| 31 | 7 |
+----+---+
4 rows in set, 6 warnings (0.02 sec)
表A
字段:姓名 name
张三
王五
表B
字段:标题 title
信息一 张三发布
信息二 王五发布
信息三 张三发布
排行榜,按表A的姓名 like %‘name’% 匹配 表B的 title 的条数进行排序,
排行榜样例
张三 2
王五 1
select 姓名,count(b.title) from a inner join b on instr(b.title,a.姓名)>0
group by 姓名
order by count(b.ti ......
这几天学习了触发器的用法,觉得触发器很好用啊。
触发器的基本语法:
CREATE TRIGGER <触发器名><--
{BEFORE | AFTER}
{ INSERT | UPDATE | DELETE }
ON <表名称>
FOR EACH ROW
<触发器SQL语句>
规则:
1.触发器必须有名字,最多64个字符,可能后面会附有分隔符.它和MySQL中其他对象的命名方式基本相象
2.我们不能给同一张表的同一个事件安排两个触发器
3.FOR EACH ROW子句通知触发器每隔一行执行一次动作,而不是对整个表执行一次。
4.你必须拥有相当大的权限才能创建触发器(CREATE TRIGGER)。
5.触发器包含所要触发的SQL语句:这里的语句可以是任何合法的语句,包括复合语句,但是这里的语句受的限制和函数的一样:
ALTER 'CACHE INDEX' CALL COMMIT CREATE DELETE
DROP 'FLUSH PRIVILEGES' GRANT INSERT KILL
LOCK OPTIMIZE REPAIR REPLACE REVOKE
ROLLBACK SAVEPOINT 'SELECT from table'
'SET system variable' 'SET TRANSACTION'
SHOW 'START TRANSACTION' TRUNCATE UPDATE
6.可以使用NEW与OLD关键字来访问更新前后的数据
例如:
create trigger t3
after
delete on article for each row
insert into xy_user( ......