此次文章用到的表为:学生表和教师表,学生表中包括学生姓名,性别,年龄,入学时间等字段,类型分别为varchar2(10)、varchar2(4)、number、date。教师表中包括教师,姓名,年龄两个字段,分别为varchar2(10)、number类型。
SQL语言是一种高级的非过程化的查询语言,用户使用它进行数据库的操作。因此可以吧它看做客户端与服务器端沟通的一个工具,用来存取、查询、更新以及管理数据库。
SQL语言分类:1、DDL(数据定义语言,作用是定义和管理数据库中的各种对象)。2、DML(数据操作语言,作用是操作数据库对象所包含的数据,包括查询、修改、删除等操作)。3、DCL(数据控制语言,它是对数据对象操作权限的控制以及事物的控制,例如,用户或角色授权,事务的提交回滚等)。
INSERT语句,在数据表中插入一行数据。
语法:INSERT INTO table[(column[,column……])] table要插入数据的表的表名,column指的是表中插入数据列名。
VALUES (value [,value……]); value是指对应列中要插入的具体的数据值。
例如:
insert into teacher (name, age) values ('李四', 28);
或者简写为:
insert into teacher values ('李四', 28);
假如插入值当中有时间我们需要用到SYSDATE函数和TO_DATE函数
例如:1、插入数据包含时间,并且时间是当前系统时间。
insert into student (name,gender,age,startdate) values ('王五','男',12,sysdate);
2、插入数据包含时间,并且时间是某个具体时间
insert into student (name,gender,age,startdate) values ('钱二','女',14,to_date('2013-3-2','yyyy-mm-dd'));
数据备份时往往需要多行插入数据,例如备份用户数据:
insert into teacher_bak select * from teacher;
当插入的字符串数据中包含单引号时,需要把一个单引号变成两个单引号。
例如:
insert into teacher values('mary''s son',20);
UPDATE语句,更新或修改一行或多行的值。
UPDATE的语法结构:
UPDATEtable SET column=value [,column=value,……] table对应的要更新的数据表的表名,column代表你要更新哪一列,value对应的你要更新以后的列的具体的数值。
[WHEREcondition]; condition指的是更新的条件,用来确定哪一行需要进行更新操作。
例如初始化所有学生的年龄为12岁:
update student set age = 12;
例如:更新学生姓名为钱二的学生性别为男,年龄为13岁
update student set gender = '男', age = 13 where name = '钱二';
注意:在更新操作时,WHERE条件一般选择类似主键这样有唯一约束的字段,除非情况特殊,否则的话可能引起我们想不到的操作,比如更新用户表的时候使用name做条件是非常危险的,因为名字可以重复。
SELECT查询数据表中的数据
示例1:使用select查询学生表中所有数据。
select *或者select all columns
select * from student或 select name,gender,age,startdate from student;
示例2:使用select查询学生表中所有年龄为12岁的学生
select * from student where age = 12;
示例3:使用select查询学生表中年龄为13岁,并且入学时间是2013年3月2号的学生
select * from student where age = 13 and startdate = to_date('2013-3-2','yyyy-mm-dd');
示例4:使用select查询学生表中姓名为李四和钱二的学生
select * from student where name = '李四' or name = '钱二';
示例5:使用select查询学生表年龄字段为空的学生数据。
select * from student where age is null;
示例6:查询学生中所有姓李的学生
select * from student where name like '李%';
这里like表示模糊查询的意思,%表示任意匹配0个或多个字符。_表示匹配单个字符
示例7:查询学生表中年龄在11到12之间的学生
select * from student where age between 11 and 12;
示例8:查询学生表中张三、李四、王五的信息
select * from student where name in ('张三','李四','王五');
对表指定别名的方法:select alias.column from tablealias alias表示对表起的别名
对列指定别名的方法:select column alias from table alias表示对列起的别名
例如:
select s.name as "学生姓名",s.age as "年龄" from student s;
注意:为列起别名的AS可以省略。
排序的语法结构:ORDER BY column [ASC|DESC]; column代表排序的依据字段,也就是说根据那一列排序。ASC表示升序排序、DESC表示降序排序。默认是升序排序所以ASC在通常情况下可以省略。
示例9:查询学生表,按入学时间进行升序排序
select * from student order by startdate asc
示例10:查询教师表商品教师信息(不包含重复信息)
select distinct * from teacher;
distinct过滤重复的数据,只保留不同的记录。
DLETE语句,用来删除数据表中一行或多行的数据。
DELETE的语法结构:DELETE [FROM] table [where condition];table是指要删除数据表的表名condition删除的条件
示例1:使用DELETE语句删除学生表年龄为空的数据
delete from student where age is null; --提交事务 commit;
示例2:使用DELETE语句删除教师备份表中所有数据。
delete from teacher_bak; commit;
在实际工作中,由于删除数据就是在数据库中永久的删除数据,因此对于一些重要的数据库表,建议使用假删除,假删除就是增加一个状态(一般为status)字段,0表示此行记录删除,1表示未删除,在使用此表时查询条件添加status=1。
oracle中提供了一些函数,方便进行一些操作。
基本函数分为:字符函数、数字函数、日期函数、转换函数、聚合函数(组函数)
字符函数,专门用于字符处理的函数,一般接受字符作为参数,并且返回字符或数字
CONCAT函数,主要用