02_数据库之DDL语句

什么是数据库?

我们在软件的实现过程中,会产生很多的数据,比如我们在淘宝上下单,那么就会产生一条订单数据,我在银行卡存了1000块钱,那么同样也会产生一条数据,这些数据都会存放在数据库中的。那么我们常用的数据库就有很多,比如MySQL、SQLite、Oracle等等。
其实不管是什么数据库,大部分的操作都是类似的。接下来的数据库我们将会以Oracle11g为例子来进行演示。

客户端的概念

我们在安装了数据库之后,其实,他就是开启了一个数据库服务,因此我们称之为数据库服务/或者数据库服务端。通常在公司里,数据库的服务会24小时提供服务,等待别人对他发送指令。
所以我们需要通过客户端来连接上我们的数据库服务,从而操作数据库。
客户端工具有很多,比较常用的navicatphpmyadminplsqlsqlyog等等

通过客户端连接上数据库需要知道如下内容

连接数据库五要素
数据库服务器IP地址
数据库默认端口
数据库用户名
数据库密码
需要连接的数据库名称

表与库的概念

数据库是用来帮助我们管理数据的,那么他是通过什么方式来管理数据呢?最主要的就是通过表,就好像我们常用的excel表,每一列规定填写什么,然后一行一行的添加数据。也就是我们的数据,是存放在表中的,而表又是存放在库中的。

学号 姓名 年龄
1 王五 32
2 张三 23
3 李四 22

比如一个购物软件,我可以创建一个数据库用来存放整个购物软件的数据,而在这个库中,我又可以创建多个表(比如创建user表,用来存放用户的信息,order表用来存放订单信息等等)

认识SQL

SQL 是用于访问和处理数据库的标准的计算机语言。在SQL语言中,分为DDL语句和DML语句

  • DDL语句
    对数据库的结构进行操作的语句,不会对具体的数据进行操作。

  • DML语句
    用于操作数据库对象中包含的数据。

对于我们而言,DML语句使我们最常用到的语句,几乎占到80%以上。

常见的数据类型

数据类型 含义 用法
number 数字类型 number 数字类型/整数或者小数都行;number(4) -9999~9999;number(4,2) -99.99~99.99
date 日期/时间 直接用date表示
char(长度) 定长字符串 比如,char(6)就表示6个字节长度的字符串
varchar2(长度) 变长字符串 比如,varchar2(6)表示最多6个字节长度字符串,若实际没有6个字节,则回收
  • 定长,不管你实际使用了多少。变长,根据你具体使用的长度来计算。
  • 一个英文字符 占用一个字节,一个中文字符 占用2-4个字节(编码格式)

约束条件

约束条件 含义
unique 唯一(值不能重复)
not null 非空(值不能为空)
check(条件) 检查约束(检查该列的值,是否满足括号中的条件)
default 值 默认值约束(如果在新增数据时,没有给这一个列一个值,则读取默认值)
primary key 主键约束(包含了非空约束和唯一约束)
references 表(列) 外键约束(确保数据的有效性)

操作符

符号 含义
< 小于
> 大于
>= 大于等于
<= 小于等于
!= 不等于
and 并且,and左右两边条件需要同时成立
or 或者,or左右两边条件只需要成立一个即可
null 表示空

创建表的语法

create table 表名称(
列名1 数据类型 约束条件,
列名2 数据类型 约束条件,
列名3 数据类型 约束条件
);

ps(列与列之间用,分隔开)

  • 比如:
    创建一个员工表(users)
    员工工号(id),员工姓名(name),员工的手机号码(tel),入职时间(hiredate),民族(nation),员工年龄(age)
    要求如下:
    id主键约束,员工姓名不能为空,手机号码必须唯一,民族默认为汉族,年龄默认为25岁,且年龄必须大于18岁
create table users(
id number primary key,
name varchar2(30) not null,
tel number(11) unique,
hiredate date,
nation varchar2(10) default '汉族',
age number(3) default 25 check(age > 18)
);

修改表的语法

  • 增加列
alter table 表名 add(
列名1 数据类型 约束条件,
列名2 数据类型 约束条件,
列名3 数据类型 约束条件
);
  • 比如说给stu表增加一列班级
alter table stu add(
class varchar2(30)
);
  • 修改列
alter table 表名 modify(
列名1 数据类型 约束条件,
列名2 数据类型 约束条件,
列名3 数据类型 约束条件
);
  • stu表的班级这一列数据类型修改为number
alter table stu modify(
class number
);
  • 删除一列
alter table 表名 drop column 列名;
  • stu表的class这一列删除
alter table stu drop column class;

练习

第一题

  1. 创建一张学生表,包含以下信息,学号,姓名,年龄,性别,家庭住址,联系电话,入学日期,科目,分数
  2. 修改学生表的结构,添加一列信息,学历
  3. 修改学生表的结构,删除一列信息,家庭住址
  4. 向学生表添加如下信息:
学号 姓名 年龄 性别 联系电话 学历 入学日期 科目 分数
1 A 22 123456 小学 to_date('20140508','YYYYMMDD') oracle 85
2 B 21 119 高中 2015-4-7 linux
3 C 23 110 高中 2014-8-18 oracle 80
4 D 18 114 大专 2013-7-16 QTP 76

第二题
设有如下四个关系模式:
S(SN,SNAME,CITY)
P(PN,PNAME,COLOR,WEIGHT)
J(JN,JNAME,CITY)
SPJ(SN,PN,JN,QTY)

S表为供应商表:SN为供应商编码,SNAME 为供应商名字,CITY为供应商所在城市;
P表为零件表:PN为零件编码,PNAME为零件名字,COLOR为零件颜色,WEIGHT 为零件重量;
J表为工程表:JN为工程编码,JNAME 为工程名字,CITY 为工程所在城市;
SPJ表为供应关系表:QTY表示提供零件数量。
其中在SPJ表中,SN、 PN、JN为外键;
在表S中SN为主键,在表P中PN为主键,在表J中JN为主键
且SN、PN、JN为整数类型,其他字段全部为字符串类型。

创建S,P,J,SPJ四张表

第三题
创建两张表
宿舍表(宿舍号 char(6) ,宿舍电话)
要求:主键(宿舍号)、宿舍电话:以633开头的7位电话号码

同学表(学号char(6),姓名,性别,年龄,民族,身份证号,宿舍号)
要求:主键(学号)、外键(宿舍号)、民族默认为汉族、
民族,姓名,年龄 均要求非空
身份证号码 唯一
性别 必须是男或者女

posted @ 2019-08-03 13:17  简小虫  阅读(212)  评论(0编辑  收藏  举报