3.4 数据类型
数据类型:字符型、数值型、日期型。
3.4.1 字符型
char 、varchar、varchar2
char(n):用来表示固定长度的字符串,n代表字符串的长度(个数),当实际保存的数据长度小于n时,在该字符串的右边使用空格补齐。char(10)保存‘zhang’会占用系统10个存储空间。
varchar(n):用来表示可变字符串类型,n代表能保存字符串的最大长度,当要保存的字符串长度小于n时,会按照实际长度进行保存。
varchar(10)保存‘zhang’会占用5个系统存储工空间。
varchar2 使用oracle 公司自定义的类型,而且兼容性特别好,在实际企业中,建议使用vachar2 代替varchar。
3.4.2 数值型
number 可以用来表示整数和小数。
number(n)用来保存整数,n代表能保存整数的最大位数。
例如:number(3) 999
number(n,m)可以用来保存整数或者小数,n代表有效数字(整数位数+小数位数)最大位数,m代表小数的最大位数。n-m代表整数的最大位数。
例如:number(7,2) 12345.67
5.4.3 日期型
date : 用来保存日期时间类型,包含:年 月 日 时 分 秒
默认日期格式:DD-MON月-YY
DD:表示几号
MON:表示几月
YY:表示年份
3.5 SQL语句------结构化查询语句
结构化查询语句,通过SQL语句对数据库进行各种操作,掌握SQL就可以操作任意一款数据库。
SQL语句分类:
3.5.1 DDL 数据定义语句
主要用来创建,删除,修改表的结构
创建-----create
删除-----drop
修改----alter
3.5.2 DML 数据操纵语句
主要用来操纵表中的数据。
插入----insert
更新(修改)----update
删除----delete
3.5.3 TCL 事务控制语句
主要用来管理数据库的事务
提交事务----commit
回滚事务----rollback
3.5.4 DQL 数据查询语句
查询--------select
3.6 创建表
格式:
create table 表名(
列名1 数据类型 primary key,
列名2 数据类型,
列名3 数据类型,
........
列名n 数据类型
);
create table person1(
id number(4) primary key,
name varchar2(20),
age number(3),
adr varchar(50)
);
create table person2(
id number(4) primary key,
name varchar2(30),
age number(3)
);
3.7 查看表结构
格式:desc 表名;
案列:查看 person1 表结构
desc person1;
3.8 插入(insert )语句
3.8.1 向全部列插入数据
insert into 表名 values(列值1,列值2,列值3.......);
说明:values中列值的顺序必须跟表结构是对应的。
验证:select * from 表名;
案列:向person2表中,插入2条记录
desc person2;
insert into person2 values(1,'李明',50);
insert into person2 values(2,'tom',20);
3.8.2 向指定列插入数据
insert into 表名(列名1,列名2,列名3....) values(列值1,列值2,列值3......);
说明:表中列名必须和values中的列值是一一对应的关系。
案例:向person1表中插入数据
insert into person1(id,name) values(10,'张飞');
insert into person1(id,age) values(11,120);
insert into person1(id,name) values(12,'关羽');
insert into person1(id,adr) values(13,'北京');
update peeson1 set name='yyp' where id=11;
update person1 set age=100 where id=12;
案例:
insert into person3(id,name) values(101,'古洞青');
insert into person3(id,address) values(102,'北京');
insert into person3(id,name) values(103,'郑元畅');
select * from person3;
3.9 修改(更新)语句
格式:
update 表名 set 列名1=该列新值,列名2=该列新值....... where 条件;
案例:修改person3 表中编号是1将姓名修改为 张丹丹
update person3 set name='张丹丹' where id=1;
update person3 set address='成都' where name='古洞青';
说明:如果没有where条件将修改表中全部数据。
案例:修改person3表,将地址修改为上海
update person3 set address='上海';
案例:修改person1 表中将年龄改为20
update person1 set age=20;
3.10 删除表中的数据
3.10.1 delete 删除
格式: delete from 表名 where 条件;
说明:如果没有where条件将修改表中全部数据。
案例:删除person3表中编号是101的记录
delete from person3 where ID=101;
案列:删除person3表中姓名是张无忌的记录
delete from person3 where name='张无忌';
案例:删除person3中全部数据
delete from person3;
3.10.2 truncate 删除
格式: truncate table 表名;
说明:直接删除表中全部数据,而且被删除的数据无法恢复,工作过程中尽量不用。
案例:删除person2表中全部数据。
truncate table person2;
案例:删除person1表中全部数据
truncate table person1;
3.11 删除表
格式:drop table 表名;
案例:删除person1 、person2、person3表
drop table person1;
drop table person2;
drop table student;
3.12 查询语句
3.12.1 没带条件的查询语句
1)查询表中全部列的数据
格式:select * from 表名;
select * from emp;
emp --------员工表
select * from dept;
dept ------部门表
select * from salgrade;
salgrade------工资等级表
2)查询表中指定列的数据
格式: select 列名1,列名2,列名3....... from 表名;
案例:查询emp表中,所有员工的编号empno,姓名,ename,职位,job
select empno,ename,job from emp;
3.12.2 给列起别名
1)使用as给列起别名
格式: select 列名1 as 别名1,列名2 as 别名2,列名3 as 别名3...... from 表名;
案例:查询emp表中,员工编号,姓名,职位,上级领导编号,入职时间,给每个列起别名
select empno as 员工编号,ename as 员工姓名,job as 职位,mgr as 上级领导编号,hiredate as 入职时间 from emp;
练习:查询dept表中,部门编号deptno,部门名称,部门地址,给每列起别名
select deptno as 部门编号,dname as 部门名称,loc as 部门地址 from dept;
2)使用空格给列起别名
格式: select 列名1 别名1,列名2 别名2,列名3 别名3 ......from 表名;
案例:查询emp表中,员工姓名ename,职位job,上级领导编号mgr,入职时间hiredate,工资sal,奖金comm,部门编号deptno,给每一列取别名。
select ename 员工姓名,job 职位,mgr 上级领导编号,hiredate 入职时间,sal 工资,comm 奖金,deptno 部门编号 from emp;
3.13 排序(order by)
格式:
select */列名 from 表名 order by 列名1 asc/desc,列名2 asc/desc;
说明:asc 默认 升序排列
desc 降序排列
根据一列或者几列的列值,把查询回来的数据进行升序或者降序排列
查询emp表中,员工的姓名,职位,工资,根据员工的工资进行升序排列;
select ename,job,sal from emp
order by sal asc;
练习:查询emp 表中,员工的编号,姓名,职位,根据员工的编号进行降序排列
select empno,ename,job from emp
order by empno desc;
3.14 去掉重复的列值(distinct)-----重点
格式:select distinct 列名 from 表名;
案列:查询emp表中,员工职位的名称
select distinct job from emp;