create创建数据表
CREATE TABLE table_name(
colum_name column_type [not null],
colum_name column_type [not null],
...
[contraint]
)
语法说明:
table_name :数据表名,在一个数据库中数据表名不能重复的
column_name :表中的列名(字段名)一个表中的列名也是不能重复的
column_table :数据类型,设置当前类型列中允许存放的数据类型
not null :约束设置该列插入数据时不能为空,如果不指定则默认表示该列允许为空
contraint :为表中的列设置约束(主键,外键 ,检查等)
案例:创建一张数据表用于存储学生信息
create table tb_students(
stu_num char(5) not null ,
stu_name varchar2(10) not null,
stu_sex char(2) not null,
stu_age number(2) ,
stu_tel char(11)
);
使用alter 修改数据库
增加列
alter table table_name add column_name column_type;
修改列
alter table table_name(要修改的表名) modify column_name(要修改的列名) column_type(要修改的列的目标数据类型);
语法说明:修改只能修改列的目标列数据类型
删除列
alter table table_name(要删除的表名) DROP COLUMN column_name(要删除的列名);
使用drop 语句删除数据表
删除 数据表
DROP TABLE TABLE_NAME;
删除表数据
删除表数据,删除数据表中存储的数据,保留数据表的结构
truncate table table_name
delete from table_name
主键约束
添加主键约束:
1.在创建数据表时添加主键约束
create table table_name(
column _name type primary key,
......
)
create table table_name(
.....
primary key (column_name)
);
联合主键
使用2个或者2个以上的字段 作为主键。
当所有列中数据都存在重复
1.在创建数据表时添加联合主键约束
create table table_name(
.....
primary key (column_name,column_name)
);
2.创建数据表之后添加联合主键
alter table table_name ADD CONSTRAINTS constraint_name(联合主键名) PRIMARY KEY(column_name,.....column_name)
外键约束
添加外键约束
外键约束就是限定外键字段的值必须来自于其他数据表中的关联字段
1.在创建数据表时添加外键约束
CREATE TABLE table_name(
....
CONSTRAINT constraint_name FOREIGN KEY (column_name)
REFERENCES table_name(column_name ) ON DELETE CASCADE
);
说明:
ON DELETE CASCADE :设置级联删除,当主键的字段被删除时,外键所对应的字段也同时被删除
案例:
---学生表 班级表
---1.创建 班级信息表,班级编号 ,班级名称,班主任,班级描述
create table tb_classes(
class_id char (3) primary key ,
class_name varchar(40) not null,
class_leader varchar(20) not null,
class_desc varchar(200)
);
---创建学生信息表:学号 姓名 性别 年龄 电话 编号
删除外键约束
CHECK 检查约束
检查约束,用于限定每一列能够输入的值,以保证数据的正确性
一、在创建 表时添加CHECK 约束
CREATE TABLE table_name (
....
CONSTRAINT constraint_name(约束名字) CHECK(约束条件)
);
二、在修改数据表时添加CHECK 约束
ALTER TABLE table_name ADD CONSTRAINTS constranint_name(约束名字) CHECK (约束条件);
三、 删除check 约束
ALTER TABLE table_name DROP CONSTRAINTS constranint_name(约束名字);
UNIQUE 约束
唯一键约束用于限定数据表中字段 值的唯一性。
添加唯一约束:
1.在创建表时添加唯一约束
CREATE TABLE table_name (
...
CONSTRAINT constraint_name UNIQUE(column_name)
);
2.在修改数据表时添加UNIQUE 约束
ALTER TABLE table_name ADD CONSRAINTS constraint_name UNIQE (column_name);
NOT NULL 约束
用于限定数据表中的字段必须输入。
1.在创建表时添加NOT NULL 约束:
CREATE TABLE table_name (
stu_num char(5) primary_key ,
stu_name varchhar(20) not null,
.....
);
2.在修改数据表时设置Not null 约束
ALTER TABLE table_name MODIFY column_name NOT NULL;
DML语句
1.添加数据
insert into table_name (column_name1 ,column_name2,...)values(data1,data2 ...);
2.通过其他数据表添加数据
INSERT INTO table_name (column_name1,column_name2....)
SELECT column_name1,column_name2,....From other_table_name;
说明:select 出的列名和数据类型与插入表中列名,数据类型一致。
3.创建数据表时添加数据
CREATE TABLE table_name AS
SELECT column_name1,column_name2,.....FROM source_table;
修改数据
1.UPDATE table_name SET column_name1=data1,column_name2=data2,....WHERE conditions(筛选条件确定修改范围);
删除数据
1.DELETE FROM table_name WHERE conditions;
DQL 语句
查询操作 :
1.简单查询:
SELECT [DISTINCT|ALL]<column_name1,column_name2,...>
FROM <table_name1,table_name2,...>
–获取指定列数据
select stu_name(指定列) from tb_student ;
–字段别名
select stu_name 姓名 , stu_age 年龄 from tb_student;
–计算列
select stu_name ,2019-stu_age 出生年份, from stu_student;
–使用函数操作查询字段
select stu_name ,stu_tel from stu_student;
//查询电话号码只显示前6位。
select stu_name ,subStr(stu_tel,0.6) 电话号码前六位 from stu_student;
–去重查询:
select distinct stu_name from stu_student;
检索数据的排序
检索数据排序语法:
select .... from .... order by column_name [asc|desc]
排序操作 :
1.升序和降序
select * from stu_student orderby stu_age desc; ---降序 默认不写升序
2.null 值的处理(NULL FIRST,NULL LAST)
SELECT * FROM stu_student ORDER BY stu_age ASC NULL FIRST ;
3.排序字段(字段名,表达式 ,别名)
select stu_num,stu_name,2019-stu_age from stu_student order by 2019-stu_age;
select stu_num,stu_name,2019-stu_age birth from stu_student order by birth;
4.多字段排序
select * from tb_student order by stu_sex asc ,stu_age desc ;
2.WHERE条件查询:
select… from …where coditions [ORDER BY column_name desc]
1.单条件查询
select... from ...where coditions [ORDER BY column_name desc]
2.多条件查询
select ...from ...where conditions and conditions [order by column_name desc]
3.模糊查询
select ...from ...where conditions like % 条件内容% [order by column_name desc`]
4.范围查询
select ...from ...where conditions 【between ,in】 [order by column_name desc]
5.针对NULL 值的查询
select ...from ...where conditions is not null;
3.分组查询:
1.聚合函数
count()统计
sum() 求和
avg() 求平均值
max()求最大值
min()求最小值
2.GROUP BY 子句分组
--如果使用CROUP BY 进行分组查询之后,select 关键字后只能是分组字段名和聚合函数
select stu_sex ,count(stu_num) from tb_students group by stu_sex;
- HAVING子句筛选(对group by 分组查询 之后的数据进行筛选)
select stu_age(分组字段名),count(*) from tb_students group by stu_age
having stu_age is not null;
4.嵌套查询子查询:
1.基于子查询返回单行数据的嵌套 = ><
2.基于子查询返回多行数据的嵌套 in ,=any,=some,=all (交集)
5.连接查询多表查询:
查询数据来自于一张以上的数据表
连接查询语法:
SELECT …FROM table_name1 【left|right|inner】 join table_name2
[where join_conditions]
条件查询操作:
内连接:
SELECT …FROM table_name1 inner join table_name2 [on join_conditions]
外连接:
左外连接:
SELECT …FROM table_name1left join table_name2 [on join_conditions]
右外连接:
SELECT …FROM table_name1 right join table_name2 [on join_conditions]
函数:
1.数值函数:
--- ASB(N)绝对值
SELECT ASB(-3) from dual;
--- mod(m,n) 取余
--- 判断数值正负 sign(n)
--- 三角函数 sin(n),
--- 数值取整 只入不舍CELL(N) \ 只舍不入 FLOOR(N) 、四舍五入 ROUND(N)
--- 平方根 sqrt
--- 次幂运算 power(m,n)
---对数 LOG(M,N ) LN(N)
2.字符函数:
– 查询表空间详情
select f.* from dba_data_files f where f.TABLESPACE_NAME=‘表空间名称’;
–查询当前用户的所属表空间
select * from user_users;
–增加表空间有两种方法:
–1.以sysdba登陆进数据库
–语法
alter tablespace 表空间名称
add datafile 表空间存放路径
size 表空间大小
autoextend on next 增长的大小
maxsize 空间最大值(如果不限制空间就用unlimited)
–2. 以修改表空间的方式增加:
–语法:
alter database datafile 表空间文件路径
AUTOEXTEND(自动增长) on next 表空间满后增加的大小