1 表的建立
语法:CREATE TABLE 表名 [表约束]
(列名1 数据类型 [缺省值1,列约束1]
(列名2 数据类型 [缺省值2,列约束2]
…
列名n 数据类型 [缺省值n,列约束n]
[TABLESPACE 表空间名称]
[STORAGE (存贮的子句)]
[ENABLE 约束名]
[DISABLE 约束名]
2 插入数据
INSERT INTO 表名[(列名1,…)] VALUES(值1,值2,…,值n)
INSERT INTO STUDENT VALUSE(1003, 'E',12);
对表中已有数据进行修改,语句句法:
UPDATE 表名SET 列名1=表达式1,列名2=表达式2,…
WHERE 条件;
将B的年纪改为18;应该执行以下语句:
UPDATE STUDENT SET AGE=18 WHERE NAME='B';
删除表中已有数据,不能删除不存在的数据。
语句句法:
DELETE FROM 表名 WHERE 条件;
- 表结构的修改
ALTER TABLE 表名 ADD(新列名 数据类型(长度));
例如:
ALTER TABLE STUDENT ADD (DEPARTMENT CHAR(8));
b.增加已有列的数据类型。
例如:
ALTER TABLE STUDENT MODIFY(NAME VARCHAR2(25));
将已经存在的表删除,语句句法:
DROP TABLE表名;
例如:
DROP TABLE EMP;
SELECT命令的语法为:
SELECT [DISTINCT|ALL] {*|模式名.] {表名|视图名|
快照名] .*…| {表达式[列别名]…} } [, [模式名. ] {表名|
视图名|} .*…| 表达式[列别名] ]…
FROM [模式名.] {表名|视图名|快照名} [@数据库链名] [表别名]
[, [模式名.] {表名|视图名|快照名} [@数据库链名]
[表别名] ]…
[WHERE条件]
[START WITH条件 CONNECT BY 条件]
[GROUP BY表达式[,表达式] …[HAVING条件]
[UNION|UNION ALL |INTERSECT|MINUS]SELECT命令
[ORDER BY{表达式|位置} [ASC|DESC] [, {表达式|位置[ASC|DESC]}]…]
NO NAME AGE 1001 AE 12 1002 BT 14 (1) 查询年纪为12的学生姓名;
SELECT STUDENT.NAME FROM STUDENT WHERE AGE=12;
(2) 查询年纪在12至16岁之间的学生姓名;
SELECT STUDENT.NAME FROM STUDENT WHERE AGE BETWEEN 12 AND 16;
(3) 查询年纪不在12至16岁之间的学生姓名;
SELECT STUDENT.NAME FROM STUDENT WHERE AGE NOT BETWEEN 12 AND 16;
(4) 查询所有姓名以A开头的学生的姓名;
SELECT STUDENT.NAME FROM STUDENT WHERE NAME LIKE 'A%';
(5) 列出所有学生年纪的和,年纪的平均值,最大值,最小值,最大值与最小值之间的差值;
SELECT AVG(AGE), SUM(AGE), MAX(AGE), MIN(AGE), MAX(AGE)-MIN(AGE);
(6) 将所有学生按学号顺序升序排列;
SELECT * FROM STUDENT ORDER BY NO DESC;
(7) 将所有学生按学号顺序升序排列;
SELECT * FROM STUDENT ORDER BY NO ASC;
例如:对于STUDENT表:在已存在的表中增加新列,语句句法:
向表中增加一个 VARCHAR 列:
ALTER TABLE distributors ADD COLUMN address VARCHAR(30);
对现存列改名:
ALTER TABLE distributors RENAME COLUMN address TO city;
对现存表改名:
ALTER TABLE distributors RENAME TO suppliers;
表结构:
--用户表
CREATE TABLE users (
u_id VARCHAR(64) NOT NULL ,-- '用户ID',
d_id varchar(64) references department(d_id), -- '所属部门id',
u_serial INTEGER default 0, -- '排序编号',
u_name VARCHAR(50) NOT NULL,-- '用户名',
password VARCHAR(45) NOT NULL, --'密码',
gender VARCHAR(8), --'性别',
real_name VARCHAR(45), --'用户真实姓名',
email VARCHAR(60), --'电子邮件地址',
address VARCHAR(100), -- '用户地址',
tel VARCHAR(45), -- '用户电话号码',
fax VARCHAR(45),-- '用户传真号码',
mobile VARCHAR(45), -- '用户手机号码',
status VARCHAR(45) default 'Active', --'用户状态',
PRIMARY KEY(u_id)
)
--角色表
CREATE TABLE roles (
r_id VARCHAR(64) NOT NULL,-- '角色ID',
r_name VARCHAR(45) NOT NULL,-- '角色名称',
r_serial INTEGER default 0,--'角色排序编号',
d_id varchar(64) references department(d_id), -- '所属部门id',
comments VARCHAR(100),--'角色备注',
PRIMARY KEY (r_id),
)
--用户角色对应关系表(多对多)
CREATE TABLE users_roles_relation (
u_id VARCHAR(64) references users(u_id),--'用户ID',
r_id VARCHAR(64) references roles(r_id),--'角色ID',
primary key(u_id,r_id)
)
要求: 传入一个部门id和角色名找出相对应的用户信息。
select * from users where u_id in ( select u_id from users_roles_relation where r_id in (select distinct r_id from roles where d_id = '42114800-6f22-1000-83e5-c505cae624fd' and r_name = '经理'))
优化后:
select a.* from users a ,roles b, users_roles_relation c where a.u_id = c.u_id and b.r_id = c.r_id and b.d_id = '42114800-6f22-1000-83e5-c505cae624fd' and b.r_name = '经理'
access 数据导入mssql2005
use javaoa;
exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
insert into test select * from openrowset('Microsoft.Jet.OLEDB.4.0','c:/Data.mdb';'admin';'',tblmold)