SQL语言基础考核(一)(oracle)
1.利用下面的脚本创建BOOK,READER 和 BORROW 表,并完成后面的联系。
CREATE TABLE BOOK(
NO CHAR(8) PRIMARY KEY,
TITLE VARCHAR2(50) NOT NULL,
AUTHOR VARCHAR2(20) ,
PUBLISH VARCHAR2(20),
PUB_DATE DATE,
PRICE NUMBER(6,2)
);
CREATE TABLE READER(
RNO CHAR(6) PRIMARY KEY,
RNAME VARCHAR2(20) NOT NULL
);
CREATE TABLE BORROW(
NO CHAR(8),
RNO CHAR(6),
BORROW_DATE DATE DEFAULT SYSDATE,
PRIMARY KEY(NO,RNO),
FOREIGN KEY (NO) REFERENCES BOOK(NO),
FOREIGN KEY (RNO) REFERENCES READER(RNO)
);
1).利用SQL 语句实现向 BOOK,READER 和BORROW 表中插入数据,插入后表中数据如下
BOOK
NO
TITLE
AUTHOR
PUBLISH
PUB_DATE
PRICE
100001
Oracle9i数据库系统管理
李代平
冶金工业出版社
2003-01-01
38
100002
Oracle9i中文版入门
赵松涛
人民邮电出版社
2002-07-01
35
100003
Oracle9i开发指南
Joan Casteel
电子工业出版社
2004-04-03
49
100004
数据库原理
盛定宇
电子工业出版社
2004-03-01
34
100005
Oracle9i中文版实用培训
赵伯山
电子工业出版社
2002-01-01
21
100006
Oracle9i实用教程
翁正科
电子工业出版社
2003-07-08
38
READER
RNO
RNAME
200001
张三
200002
李凤
200003
孟欣
200004
谢非
200005
刘英
BORROW
相关文档:
create PROCEDURE pagelist
@tablename nvarchar(50),
@fieldname nvarchar(50)='*',
@pagesize int output,--每页显示记录条数
@currentpage int output,--第几页
@orderid nvarchar(50),--主键排序
@sort int,--排序方式,1表示升序,0表示降序排列
......
where 1=1有什么用?在SQL语言中,写这么一句话就跟没写一样。
select * from table1 where 1=1与select * from table1完全没有区别,甚至还有其他许多写法,1<>2,'a'='a','a'<>'b',其目的就只有一个,where的条件为永真,得到的结果就是未加约束条件的。
在SQL注入时会用到这个,例如select * from table1 ......
第一部分、SQL&PL/SQL
[Q]怎么样查询特殊字符,如通配符%与_
[A]select * from table where name like 'A_%' escape ''
[Q]如何插入单引号到数据库表中
[A]可以用ASCII码处理,其它特殊字符如&也一样,如
insert into t values('i'||chr(39)||'m'); -- chr(39)代表字符'
或者用两个单引号表示一个
or ......
1. 选用适合的Oracle优化器
Oracle的优化器共有3种:
a. RULE (基于规则)
b. COST (基于成本)
c. CHOOSE (选择性)
设置缺省的优化器,可以通过对init.ora文件中OPTIMIZER_MODE参数的各种声明,如RULE,COST,CHOOSE,ALL_ROWS,FIRST_ROWS . 你当然也在SQL句级或是会话(session)级对其进行覆盖。 ......
背景:系统要支持多种数据库,统一insert的时候获取自动增长列的处理方式
问题1:insert select方案
sqlserver2000能够使用insertSql SELECT @@IDENTITY AS 'Identity'的方式来获得,但是mysql则只能使用executeUpdate(insertSql);
executeQuery('SELECT last_insert_id() ')这样的方式,否则会抛出异常:java.sql.SQ ......