这是我边学边总结的,总共花了一天一夜的时间,查资料和看视频完成的,但我对单行函数和多行函数没有做过多的研究,因为者可以查文档。还有就是多表查询研究也比较浅,这可以在以后用到的时候在具体研究。 还有就是要熟悉数据库的操作,增删改查,这些都要相当熟练,忘记时要及时看笔记。
SQL语言:
1.......数据类型
char(10)(这个是用来存储指定存储大小的字符开辟的空间为10),
varchar2(10)(这个是用来存储字符,开辟的空间为10当存储的字符空间不到10时多余的空间自动收回,中文站两个空间),number(10)(用来存储整数),number(10,3)(用来存储小数,一共10位小数占三位),date(用来存储日期)。
2.......创建表
例:
create table fg_user
( name char(10),
age number(3),
salary number(7,2),
birthday date
);
fg_user是表名(fg是前缀)。
3.......查询表
desc fg_user是查询表的(看看创建了那些类容如:name,age,salary,birthday等)。
4.......向表中写入数据:insert into fg_user values('冯俊','19','-700',','11-7月-1990');
当有的数据不确定时可以用后面两种写法中的一种:
insert into fg_user values('冯俊',19,-700,'11-7月-1990');
insert into fg_user values('黄小明',31,null,null);
insert into fg_user(name,age) values('李连杰',41);
commit;
5.......提交表
写完后要提交,不然不保存。提交是commit
6.......查询提交的表中的数据(限制的是列 如:select salary)
select * from fg_user;
select的使用方法:select name||'的工资'||salary from fg_user;
select name,salary from fg_user;
别名的使用: select name,salary from fg_user;
select name||'的工资'||salary sss from fg_user;当有格式限制时别名加双引号"s ss"。
去重复行distinct(不显示重复的):
select distinct name,age,salary from fg_user;
select distinct name from fg_user; (根据要求而定)。 使用where语句来限定返回的记录:(不等于的符号是 <>)
select age from fg_user where age>19;(age可以变和前面一样。name,salary)
范围:select age from fg_user where age>19 and age<38;
还可以是:select * from fg_user where age between 19 and 38;(小的放前面) 使用in语句方便写入多个条件
select age from fg_user where age in(19,41);
使用like语句实现模糊查询(%代表零或多个字符 _代表一个字符)
select * from fg_user where name like '_云';
select * from fg_user where name like '_云%';
is语句用来查询控制的记录:
select * from fg_user where age is null;
select * from fg_user where age is not null;
组合运算符:
not and or (按优先级排的not最高)
select * from fg_user where (name='冯俊' or name='马云') and salary>1000;
查询结果排序:
asc(升) desc(降) (默认是asc--升序)
select * from fg_user order by salary desc;
多条件排序
select * from fg_user order by salary desc,age asc;
7......to_date函数的作用
insert into fg_user values('贝志诚',29,13000,to_date('1980-6-11','YYYY-MM-DD'));
8......写入时间(HH24-MI-SS)
insert into fg_user values('马云',43,14000,to_date('1978-8-11 21-32-11','YYYY-MM-DD HH24-MI-SS'));
9.......查询时间的方法
select to_char(birthday,'YYYY-MM-DD HH24-MI-SS') from fg_user;
但没有写入时间时HH24-MI-SS部分默认为00-00-00.
10......系统当前时间
sysdate函数。
11........修改 update
update 表名 set 字段=值,字段=值 where 条件;
第二个字段要保证数据的唯一性(唯一的id)。不然符合条件的数据都要改
update fg_user set name='冯俊杰',___________ where name='冯俊';
例: update fg_user set name='冯俊杰' where name='冯俊';
12.........删除 delete
delete 表名 where 条件;
delete fg_user where age=34;
13.........系统提供的用来标记唯一性记录的函数
rowid;(但此数据ID标记是系统提供的,我们不能时便改变,所以还是用自己写的)
select name,salary,rowid from fg_user;
函数:
1..........upper(将字母转换为大写的)单行函数
select salary from fg_user where upper(name)='FENGJUN';
2..........svg(取平均值)多行函数或组函数
select avg(salary) from fg_user;
多表查询:
1.等值连接
/*
create table f_student
(
stuid number(3),
stuname varchar2(10),
password varchar2(10),
idname varchar(10)
);
*/
/*
insert into f_student values(1,'fg0711','001','fg');
insert into f_student values(2,'黄晓明','002','hxm');
insert into f_student values(3,'温家','003','wj');
insert into f_student values(4,'福布斯','004','fbs');
*/
/*
create table d_part
(
stuid number(3),
departname varchar2(10),
departadr varchar2(10),
schoolname varchar2(10)
);
commit;
*/
/*
insert into d_part values(1,'001','计算机','城建');
insert into d_part values(2,'002','艺术','城建');
insert into d_part values(3,'003','马克思','城建');
insert into d_part values(4,'004','计算机','城建');
commit;
*/
/*
create table c_college
(
sid number(3),
adr varchar2(10),
name varchar2(10)
);
commit;
*/
/*
insert into c_college values(1,'中国','城建');
insert into c_college values(2,'中国','城建');
insert into c_college values(3,'中国','城建');
insert into c_college values(4,'美国','城建');
commit;
*/
select f.stuid,f.stuname,d.departname,d.schoolname,d.departadr,c.adr
from f_student f,d_part d,c_college c
where f.stuid=d.stuid and f.stuid=c.sid ;