数据库之SQL查询语句
SQL(Structured Query Language) :结构化查询语言
SQL是在关系数据库上执行数据操作、检索及维护所使用的标准语言,可以用来查询数据、操纵数据、定义数据、控制数据。所有数据库都使用相同或者相似的语言。
(1) 数据定义语言(DDL ): Data Definition Language
用于建立、修改、删除数据库对象。
数据库对象包括:表、视图、索引、序列。
包括:
CREATE :创建表或其他对象的结构
ALTER :修改表或其他对象的结构
DROP:删除表或其他对象的结构
TRUNCATE:删除表数据,保留表结构
(2) 数据操纵语言(DML):Data Manipulation Language
用于改变数据表中的数据。和事务相关,执行完后需要经过事务控制语句提交后才能真正的将改变应用到数据库中。
包括:
INSERT:将数据插入到数据表中
UPDATE:更新数据表中已存在的数据
DELETE:删除数据表中的数据
(3) 事务控制语言(TCL):Transaction Control Language
用来维护数据一致性的语句。
包括:
COMMIT:提交,确认已经进行的数据改变
ROLLBACK:回滚,取消已经进行的数据改变
SAVEPOINT:保存点,使当前的事务可以回退到指定的保存点,便于取消部分改变
(4) 数据查询语言(DQL):Data Query Language
用来查询所需要的数据。
SELECT语句
(5) 数据控制语言(DCL):Data Control Language
用于执行权限的授予和收回操作。
包括:
GRANT:授予,用于给用户或角色授予权限
REVOKE:用于收回用户或角色已有的权限
CREATE USER:创建用户
常用数据库查询语句
V2.X版本查询语句:
1、查询过车表的所有过车数据:Select * from BAYONET_VEHICLEPASS;
2、查询某时间段内的过车数据:Select * from BAYONET_VEHICLEPASS
Where PASSTIME between
to_date('2014-03-15 00:00:00', 'yyyy-mm-dd hh24:mi:ss') and
to_date('2014-04-15 00:00:00', 'yyyy-mm-dd hh24:mi:ss');
限定卡口
select * from BAYONET_VEHICLEPASS where CROSSING_ID=’卡口
限定车牌号
select * from BAYONET_VEHICLEPASS where plate_no=’车牌号’
限定过车流水号
select * from BAYONET_VEHICLEPASS where pass_id=’流水号值’
统计一段时间内的过车量
Select count(1) from BAYONET_VEHICLEPASS where pass_time
between
to_date('2014-09-01',.'yyyy-mm-dd') and
to_date('2015-09-10',.'yyyy-mm-dd')
3、查询违章过车数据:Select * from BAYONET_VEHICLEALARM;
4、查询某段时间内的违章数据:Select * from BAYONET_VEHICLEALARM
Where ALARMTIME between
to_date('2014-03-15 00:00:00', 'yyyy-mm-dd hh24:mi:ss') and
to_date('2014-04-15 00:00:00', 'yyyy-mm-dd hh24:mi:ss');
V3.0版本查询语句:
traffic_crossing_info:卡口路口表
crossing_id:路口id
traffic_lane_info:车道信息表
traffic_vehicle_pass:过车表
traffic_violative_alarm:违法过车表
traffic_sysdict:数据字典
traffic_special_vehicle:特权车辆表
V3.5.0-V3.5.2数据库管理员为“system”
V3.5.3-3.5.5数据库管理员为“sys”
1、查询过车表的所有过车数据:Select * from traffic_vehicle_pass;
2、查询某时间段内的过车数据:Select * from traffic_vehicle_pass
where PASS_TIME between
to_date('2014-03-15 00:00:00', 'yyyy-mm-dd hh24:mi:ss') and
to_date('2014-04-15 00:00:00', 'yyyy-mm-dd hh24:mi:ss');
限定车牌号
select * from traffic_vehicle_pass where plate_no=’车牌号’
限定过车流水号
select * from traffic_vehicle_pass where pass_id=’流水号值’
限定时间一天内的数据
select * from traffic_vehicle_pass where
pass_time>sysdate-1
查询大于某个时间的过车
select * from traffic_vehicle_pass where pass_time > to_date ('2019-09-11 10:40:00','yyyy-mm-dd hh24:mi:ss')
3、查询违章表的所有数据:Select * from traffic_violative_alarm
4、查询某时间段内的违章过车数据:Select * from traffic_violative_alarm where PASS_TIME between to_date('2014-03-15 00:00:00', 'yyyy-mm-dd hh24:mi:ss') and to_date('2014-04-15 00:00:00', 'yyyy-mm-dd hh24:mi:ss');
5、查询正常过车数据最大流水号:Select max(pass_id) from traffic_vehicle_pass;
6、查询违章过车数据最大流水号:Select max(pass_id) from traffic_violative_alarm;
7、加限定词:select * from TRAFFIC_VEHICLE_PASS t where CROSSING_ID='44' or LANE_NO='7';
8、查看数据库的等待队列:
select q.SQL_TEXT,s.* from v$session s ,v$sqlarea q,v$session_wait w where s.sid=w.sid and s.SQL_ID=q.SQL_ID(+) and w.WAIT_CLASS<>'Idle'
9、过滤日期:select * from traffic_vehicle_pass where pass_time>to_date('2019-10-22 23:00:00','yyyy-mm-dd hh24:mi:ss')
10、匹配汉字:SELECT * FROM Store_Information WHERE Store_Name LIKE '%AN%';
11、删除触发器:DROP TRIGGER trigger_name;
12、删除表数据:select * from 表名 for uodate 然后点减号删除,勾选最后提交(执行旁边有个按钮)
13、统计表总数:select count(*) from 表名
14、数据库连接数满:SELECT b.MACHINE,b.PROGRAM,COUNT(*) FROM v$process a, v$session b WHERE a.ADDR=b.PADDR?AND b.USERNAME IS NOT NULL GROUP BY b.MACHINE, b.PROGRAM ORDER BY COUNT(*) DESC;(注意,空格会变成中文下的符号)
15、统计数据库各表数据总数:select t.table_name,t.num_rows from user_tables t ORDER BY NUM_ROWS DESC;
16、清空表:truncate table traffic_detail_flow_summary(清空流量表)
17、重建索引:Alter index indexname rebuild online;
18、查询索引状态:select table_name, index_name, status from user_indexes ui where ui.index_name = '索引名'; --status='VALID' 表示有效不需要重建;