oracle创建表的语法:
create table Student(
Num number(4),
Name varchar2(20),
Age number(3),
Sex char(4),
Birthday date,
primary key(列名); 【注释】
oracle不支持在创建表的时候设置自动增长,需要在表外面创建序列(也就是指标识列)
create table Student(
Num number(4) primary key,
Name varchar2(20),
Age number(3),
Sex char(4),
Birthday date);
oracle删除表的语法:
删除表drop table 表名;
添加(插入)数据
insert into 表名(列名1,列名2,列名3)values(列值1,列值2,列值3)
注意点:1列名和列值要一一对应,数据类型也要对应,如果是字符串类型/日期要用单引号(日期类型:29-9月-2000)
例:insert into Student(Num,Name,Age,Sex,Birthday)values(1001,‘张三’,20,‘男’,‘29-9月-2010’);
多行插入dual【orcal自带的一张虚拟表】 union【连接】
insert into 表名(列名1,列名2,列名3)select 列值1,列值2,列值3 from dual union
select 列值1,列值2,列值3 from dual;
例:insert into Student(Num,Name,Age,Sex,Birthday)select 1001,‘张三’,20,‘男’,‘29-9月-2010’from dual union
select 1001,‘张三’,20,‘男’,‘29-9月-2010’from dual;
注意:列名可以省略,但列值要一一对应,from之前不能加逗号
增删改所有的结束编写commit提交,否则只在当前会话起作用
查询:select * from student
( *代表所有的列名)
查看IP的命令IPCONFIG
查看服务的命令:services.msc
查看注册表:regedit
修改表语法:Alter【添加】 add【添加】
alter table 表名 add【添加】 (列名 数据类型,列名1 数据类型);
例:alter table STU add (email varchar2(20));
更改现有列的数据类型:Modify【修改】
alter table 表名 Modify (列名 数据类型,列名1 数据类型);
例:alter table STU Modify (Name varchar2(20));
删除表中的列:Drop column
alter table 表名 Drop column 列名;
例:alter table STU Drop column SEX;
表的重命名:rename to 【重命名】
alter table 表名 rename to 新表名;
例:alter table STU rename to TEA;
列的重命名:rename column A to B
alter table 表名 rename column 列名 to 新列名;
删除【主键】约束:
alter table 表名 drop constraint 【主键】约束名字 ;
添加主键:
alter table 表名 add constraint 关系名字 primary key(列名)
;
修改表中数据update【修改、更新】 set【设置】
update 表名 set 列名=列值 where 条件【唯一的值】
例:update STU set SEX=‘男’,address=‘北京’ where id=2;
注意点:如果where后的条件为多个用and连接,如果是其中一个用or。更新的列值是多个,用逗号分隔,
例:update STU set SEX=‘男’,address=‘北京’ where id=2 and name=‘张三’;
删除表中的数据
delete from 表名 where 条件
truncate table 表名;
注意:delete 如果没有where 条件 会删除表中的所有数据,但列名依旧存在。
truncate 不能和where条件一起使用
清除屏幕:clear;
数据表的查询:select【查询】【所有的】
利用聚合函数:SUM()【总和】/AVG()【平均数】/MAX()【最大】/MIN()【最小】/count()【数量】-反馈表里的记录数量
例:select SUM() from 表名;
select SUM(),AVG() from 表名;
注意点:1/多个聚合函数可以放在一起使用但是要用逗号分隔,不能放在一个括号里。例如select SUM(id),SUM(age) from 表名
2/聚合函数不能和列名一起使用。例如:错误示范: select SUM(),列名,列名 from 表名;
3/聚合函数如果非要和列名一起使用,那么只能写group by后的列名 例:select count(),useraddress from users group by useraddress;
【分组】的语法:group by
例: select count(sex),sex from STU group by sex;
【排序】order by 【asc从小到大,可以省略】默认从小到大 【desc从大到小排序】
例: select * from 表名order by 列名;
select * from 表名order by 列名 desc;
语法的先后顺序:where- group by -order by
模糊查询:
like像…
select * from STU where name like ‘张%’;【%代替任意长度的任意字符】
查询2个以上的
select * from STU where name like ‘张%’ or name ‘李%’;
check检查
【不包含用not like】
检查年龄check (age>=15)
在某个范围内,数字比较
例年龄在20-25之间
select * from STU where age>=20 and age<=25;
select * from STU where age between 20 and 25;
查询某个范围,字符串内容
比如查询地址为上海或北京的人
select * from STU where address in (‘上海’,‘北京’);
select * from STU where address =‘上海’or address =‘北京’;
将列名起一个别名:as
例如:select name as 姓名,id as 编号 from STU ;
将地址为上海和北京的id改为1
update STU set id=1 where address in (‘上海’,‘北京’);
外键:foreign key
关联内外键
alter table 子表表名 add constraint 关系名称 foreign key (子表列名)references【关联】主表表名(主表主键列名);
例如:alter table student add constraint tu foreign key(classid) references cla(id);
create table ur(
2 id number(4) primary key,
3 uid number(4),foreign key(classid) references cla(id),
4 rid number(4));
二/嵌套查询
一个语句里存在有另外一个语句的结果:
员工表中的员工‘杨鹤’离职了,那么我们要求先在Emp_Dept关系表中删除他所在的部门,再去删除在员工表中的信息
例:delete from dept where empid= (select * from employees where ename=‘杨鹤’);
查询员工表里部门是开发部的员工信息 【在某个范围内用in不能用=,=返回的是一对一的结果,in返回的是多个结果】
select * from employees where id in ( select empid from dept where deptid=(select id from depart where dname=‘研发部’));
三/多表链接查询
1.交叉联接
一个表的数量*另一个表的数量等于交叉连接的个数[无限制条件]
例 select * from STU,TEA;
select 表名.列名,表名1.列名 from 表名,表名1;
select employees.ename,depart.dname from employees,depart,dept where employees.id=dept.empid and depart.id=dept.deptid;
2.内联接
inner join
select stu。name,class.name from stu inner join class on stu.calssid=class.id;
外联接(左外联接,右外联接)
保存点savepoint+名字;
savepoint a1;
回滚 【回滚会回到数据的保存点】
rollback to savepoint a1;
rollback;【回滚会回到数据的原始状态】