本节内容
1.数据库表设计的三大范式
2.SQL与数据库通信
3.数据库的数据类型
4.SQL分类
5.DDL操作
6.DML操作
一、数据库的三大范式
为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式
1.第一范式(确保每列保持原子性)
第一范式:实体的所有属性必须是单值的并且不允许重复
2.第二范式(确保表中的每列都和主键相关)
实体的所有属性必须依赖于实体的唯一标识。
3.第三范式(确保每列都和主键列直接相关,而不是间接相关)
一个非唯一标识属性不允许依赖于另一个非唯一标识属性
在数据库设计时一般采用第三范式保证数据的冗余最小,提高数据的完整性
二、SQL与数据库通信
SQL:结构化查询语言(Structured Query Language),是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统
通过执行SQL将SQL语句发送到数据库服务器,执行得到最后的结果。
三、数据库的基本数据类型
数值类型
四、SQL的分类:
sql语言分为5大类:
DDL语言:数据库定义语言用于建立,修改,删除数据库中的各种对象-----表、视图、 索引、同义词、聚簇
DML数据库操作语言、用于增删、改数据库数据
DQL数据库查询语言用于检索数据库数据
TCL事务控制语言、用于维护数据的唯一性
DCL数据控制语言、用于数据库权限的授权与收回。
五、DDL语言操作
1.创建表:
语法: create table 表名(列名 数据类型 尺寸,...);
通过sql命令可以查看表结构:
describe 表名; 简写 desc 表名;
SQL语言大小写不敏感
SQL 可以写在一行或者多行
关键字不能被缩写也不能分行
各子句一般要分行写
使用缩进提高语句的可读性
Oracle中的命名规则:
必须以字母开头
必须在 1–30 个字符之间
必须只能包含 A–Z, a–z, 0–9, _, $, 和 #
可以包含中文字符
必须不能和用户定义的其他对象重名
必须不能是Oracle 的保留字
给表追加列:
alter table 表名 add(列名 数据类型 尺寸);
修改表的列:只能修改列的数据类型、尺寸
alter table 表名modify (列名 数据类型 尺寸);
删除列:
alter 表名 drop column 列名;
删除表:将表的结构删除(同时会删除表中的数据)。
drop table 表名;
例:创建一张学生表: 有学号 姓名 年龄 性别
create table student ( s_id number(4), s_name varchar2(20), age number(3), sex char(3) )
查看表结构
追加列:语法
alter table student add (列名 类型 尺寸,...);
追加列 :地址
alter table student add (address varchar2(50));
修改列 sex的数据类型
alter table student modify sex varchar2(3)
删除列;地址
alter table student drop column address
删除表 studnet
drop table student;
表与列的重命名:
修改表名称:rename 旧表名 TO 新表名; 修改列名:later table 表名 rename column 列名 to 新列名;
--修改表名 rename student to stu; --修改列名 alter table stu rename column s_name to names;
给表与列添加注释
COMMENT ON TABLE 表名 IS '注释'; 给列添加注释: comment on column 表名.列名 is '注释';
给stu表添加注释为“学生表” 给列s_id添加注释“学号”
COMMENT ON TABLE stu IS '学生表'; comment on column stu.s_id is '学号';
六、DML操作:增、删、改(对数据)
1.向表中新增数据
insert into 表名 values(值,....); 使用这种语法一次只能向表中插入一条数据(注意:表中的所有字段都要有值,按照表中的顺序添加)
insert into student values(101,'小刚',20,'男')
insert into 表名(列名,...) values(值,....); (选择性添加) values中值的顺序与表名后的列名的顺序保持一致
insert into student(s_id,s_name,sex) values(101,'小刚','男')
2.修改表中的数据
语法: update 表名 set 列名=新值,... where 条件; 不使用where 条件 将更新全表中所有的数据
update student set s_id=102,s_name='小李'--修改表中所有的数据 update student set s_id=102,s_name='小王' where sex='女'--修改性别是女的数据
3.删除数据 (只删除数据不删除表结构)
delete from 表名; 删除表中所有的数据。(可以回滚) delete from 表名 where 条件 ;删除指定的数据 TRUNCATE TABLE 语句: 删除表中所有的数据 释放表的存储空间 删除不能回滚
delete from student ;--删除表中所有的数据 delete from student where sex='男';--删除表中性别是男的数据 truncate table student;--删除表中所有的数据