Oracle--基本知识01

–1.Oracle 简介

/*
1.1 企业数据存储面临的问题
(1)存储大量数据
(2)大量数据的检索和访问
(3)保持数据信息的一致、完整
(4)数据共享和安全
(5)通过分析整合,产生新的有用的信息。(大数据)

1.2 数据库的简介
	数据库(DataBase)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今六十多年前,随着

信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变
成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够
进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。
在信息化社会,充分有效地管理和利用各类信息资源,是进行科学研究和决策管理的前提条件。数据库
技术是管理信息系统、办公自动化系统、决策支持系统等各类信息系统的核心部分,是进行科学研究和
决策管理的重要技术手段。
简单来说是本身可视为电子化的文件柜 —— 存储电子文件的处所,用户可以对文件中的数据进行新
增、截取、更新、删除等操作。
在经济管理的日常工作中,常常需要把某些相关的数据放进这样的“仓库”,并根据管理的需要进行相
应的处理。
例如,企业或事业单位的人事部门常常要把本单位职工的基本情况(职工号、姓名、年龄、性别、籍贯、
工资、简历等)存放在表中,这张表就可以看成是一个数据库。有了这个“数据仓库”我们就可以根据
需要随时查询某职工的基本情况,也可以查询工资在某个范围内的职工人数等等。这些工作如果都能在
计算机上自动进行,那我们的人事管理就可以达到极高的水平。此外,在财务管理、仓库管理、生产管
理中也需要建立众多的这种“数据仓库”,使其可以利用计算机实现财务、仓库、生产的自动化管理。
我们也常叫持久化:永久存储数据。

1.3 数据库的特点
	(1)实现数据共享
		数据共享包含所有用户可同时存取数据库中的数据,也包括用户可以用各种方式通过接口使用数据

库,并提供数据共享。
(2)减少数据的冗余度
同文件系统相比,由于数据库实现了数据共享,从而避免了用户各自建立应用文件。减少了大量重
复数据,减少了数据冗余,维护了数据的一致性。
(3)数据的独立性
数据的独立性包括逻辑独立性(数据库中数据库的逻辑结构和应用程序相互独立)和物理独立性(数
据物理结构的变化不影响数据的逻辑结构)。
(4)数据实现集中控制
文件管理方式中,数据处于一种分散的状态,不同的用户或同一用户在不同处理中其文件之间毫无
关系。利用数据库可对数据进行集中控制和管理,并通过数据模型表示各种数据的组织以及数据间
的联系。
(5)数据一致性和可维护性,以确保数据的安全性和可靠性
a. 安全性控制:以防止数据丢失、错误更新和越权使用;
b. 完整性控制:保证数据的正确性、有效性和相容性;
c. 并发控制:使在同一时间周期内,允许对数据实现多路存取,又能防止用户之间的不正常交互
作用。
(6)故障恢复
由数据库管理系统提供一套方法,可及时发现故障和修复故障,从而防止数据被破坏。数据库系统
能尽快恢复数据库系统运行时出现的故障,可能是物理上或是逻辑上的错误。比如对系统的误操作
造成的数据错误等。

1.4 数据库的简史
	(1)第一阶段:文件系统,使用磁盘文件来存储数据。
	(2)第二阶段:第一代数据库,出现了网状模型、层次模型的数据库。
	(3)第三阶段:第二代数据库,关系型数据库和结构化查询语言 SQL。
	(4)第四阶段:新一代数据库,“关系-对象”型数据库。
	
1.5 数据库管理系统
	数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,用于建立、使

用和维护数据库,简称 DBMS。
它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过 DBMS 访问数据库中
的数据,数据库管理员也通过 DBMS 进行数据库的维护工作。它可使多个应用程序和用户用不同的方
法在同时或不同时刻去建立,修改和询问数据库。大部分 DBMS 提供数据定义语言 DDL(Data Definition
Language)和数据操作语言 DML(Data Manipulation Language),供用户定义数据库的模式结构与权限
约束,实现对数据的追加、删除等操作。

1.6 关系数据库
	关系数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的

数据。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。关系模型是由埃德加·科
德于1970年首先提出的,并配合“科德十二定律”。现如今虽然对此模型有一些批评意见,但它还是
数据存储的传统标准。标准数据查询语言SQL就是一种基于关系数据库的语言,这种语言执行对关系数
据库中数据的检索和操作。关系模型由关系数据结构、关系操作集合、关系完整性约束三部分组成。
关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组
织。当前主流的关系型数据库有 Oracle、DB2、PostgreSQL、Microsoft SQL Server、Microsoft Access、
MySQL、浪潮 K-DB 等。
实体关系模型(Entity-Relationship Model),简称E-R Model是陈品山(Peter P.S Chen)博士于1976年提
出的一套数据库的设计工具,他运用真实世界中事物与关系的观念,来解释数据库中的抽象的数据架构。
实体关系模型利用图形的方式(实体-关系图(Entity-Relationship Diagram))来表示数据库的概念设计,
有助于设计过程中的构思及沟通讨论。
表格:表格名就是对象类型。
行:每一行代表一个记录。每个记录代表一个实例。Student 学生(类型) Student stu = new Student()
列:实例中的每个字段其实就是所有的列。name、age、sex、email、student、Class、School

*/

–2. Oracle 的数据库和用户

–2.1 连接数据库
/*
1)启动 TNSListener
2)启动 Service
3)命令行输入 sqlplus
4)输入用户名和密码:system/orcl(如果不是连接本机,需要输入网络服务名)
用户名/密码@数据库标识
输入用户名: system/orcl@orcl
*/

–2.2 忘记管理员密码
/*
1)在命令行下输入 sqlplus /nolog 进入 SQL*PLUS
2)输入:conn / as sysdba
3)修改密码:alter user system identified by pwd(你自己准备输入的密码)
4)然后就可以使用 system 用户密码 pwd 登陆了。注意:密码的第一个字符不能是数字的。

*/

–2.3 Oracle的体系结构

/*
–2.3.1 数据库的体系结构
数据库的体系结构是指数据库的组成、工作过程与原理,以及数据在数据库中的组织与管理机制。
Oracle 服务器提供开放、全面和综合的信息管理,它由 Oracle 数据库和 Oracle 实例组成。

			Oracle 实例是后台进程和内存结构的集合。
			Oracle 数据库由操作系统文件组成,这些文件为数据库信息提供实际物理存储区。
			Oracle 数据库包括逻辑结构和物理结构。

			物理组件就是 Oracle 数据库所使用的操作系统物理文件。
				1)数据文件,信息的物理存储位置。 .dbf   dataBasefile
				2)控制文件,数据库的控制信息 .ctl 		control
				3)日志文件 ,记录日志信息 .log       	logging

–2.3.2 会话 Session
会话是用户与 Oracle 服务器的单个连接
当用户与服务器建立连接时创建会话
当用户与服务器断开连接时关闭会话

–2.3.3 Oracle 默认用户
只有用合法的用户帐号才能访问 Oracle 数据库。

				Oracle 有几个默认的数据库用户:
			1)sys是系统最高权限的管理员。
			2)system 是默认的系统管理员,该用户拥有Oracle管理工具使用的内部表和视图。通常通过system
					用户管理数据库用户、权限和存储等
			3)scott 用户是 Oracle 数据库的一个示范帐户,在数据库安装时创建。(测试帐号)。
				如果 scott 用户不能使用,则解锁:alter user scott account unlock;;
				并重新设置密码:alter user scott identified by 1234 ;

–2.3.4 数据字典
数据字典也叫 Oracle 系统表,Oracle 系统表的相关信息详细描述了表的数量,表名,表的属主等。
还详细描述了各表的列信息,这些关于数据库对象的信息以一些特殊的视图存放,这些特殊的视图就被
称为系统表。系统表的数据通常只能查看,不应直接修改。
数据字典是一套记录、验证和提供数据库访问信息的只读表和视图。
数据字典提供了如下信息:
a. 数据库的逻辑和物理结构
b. 对象的定义和空间分配
c. 完整性约束
d. 用户
e. 角色
f. 权限
g. 审计
h. 其它信息
数据字典视图具有三个主要用途:
a. Oracle 服务器借助它查找关于如下对象的信息:用户、方案对象、存储结构。
b. 执行 DDL 语句后,Oracle 服务器修改它。
c. 用户和 DBA 可以把它作为数据库的只读的信息参考。
数据字典主要有三种静态视图组成,每种应用在不同的范围中。
DBA:所有方案中的对象。
ALL:用户所能访问的所有对象。
USER:在用户方案中的对象。
*/

–3.表空间和用户

/*
Oracle 是通过用户去管理数据。
如果我们要存储数据,就必须先建表空间,再建用户,再建对象(表、索引、视图…)
要连接到 Oracle 数据库,就需要创建一个用户帐户,每个用户都有一个默认表空间和一个临时表空间。
表空间可以理解为 Oracle 的一个对象,需要对应一个物理对象。

*/
–3.1创建新的表空间
create tablespace abc
datafile ‘C:\Users\hp\Desktop\oracle_test\abc.dbf’
size 20M
autoextend on;

– 删除表空间的时候,不能够直接找到文件,右键删除,否则会报数据库启动失败。
– 删除表空间的时候,可以删除表空间所在的物理文件。
drop tablespace abc including contents and datafiles;

– 看看其他的表空间(数据字典查询所有表空间)
select * from Dba_Tablespaces;

– 查看所有的数据库文件
select * from DBA_DATA_FILES;

–3.2 创建用户
/*
Oracle 主要是通过用户来管理数据。
如果我们要存储数据,就必须先建表空间,再建用户,再建对象(表、视图、索引…)
如果我们建立表空间应该要保证是独立的,不应该混合到一起,否则会引起数据的混乱。
*/

–3.2.1 创建用户,刚创建成功的时候,不能登录,缺少权限
create user qiang
identified by qiang
default tablespace qiang
temporary tablespace temp; --临时表空间

–3.2.2 删除用户
drop user qiang;

–3.2.3 查询所有的用户
select * from dba_users;

–3.2.4 加锁
alter user scott account lock;

–3.2.5 解锁
alter user scott account unlock;

–3.2.6 赋予权限
grant connent to java12;

–3.2.7 赋予连接权限给java12用户,java12可以将该权限再赋给另一个用户
grant connect to java12 with admin option;

–3.2.8 将 DBA 角色赋予 java12
grant DBA to java12 with admin option;

–3.2.9 收回权限
revoke dba from java12;
revoke connent from java12;

–4. DDL
/*
–4.1.1 SQL 结构化查询语言
结构化查询语言(Structured Query Language)简称 SQL,是一种特殊目的的编程语言,是一种数据库
查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件 的扩展名。

	结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数

据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统,
可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具
有极大的灵活性和强大的功能。

–4.1.2 SQL 组成部分
(1). 数据查询语言(DQL:Data Query Language)
其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字
select 是DQL(也是所有SQL)用得最多的动词,其他 DQL 常用的保留字有 where,order by,
group by 和 having。这些 DQL 保留字常与其他类型的 SQL 语句一起使用。
(2). 数据操作语言(DML:Data Manipulation Language)
其语句包括动词 insert,update 和 delete。它们分别用于添加,修改和删除表中的行。也称为
动作查询语言。
(3). 事务处理语言(TPL)转账
它的语句能确保被 DML 语句影响的表的所有行及时得以更新。TPL 语句包括 begin
transaction 事务,commit(提交) 和rollback(回滚)。
(4). 数据控制语言(DCL)
它的语句通过 grant 或 revoke 获得许可,确定单个用户和用户组对数据库对象的访问。某些
RDBMS 可用GRANT 或 REVOKE 控制对表单个列的访问。
(5). 数据定义语言(DDL)
其语句包括动词 create和 drop。在数据库中创建新表或删除表(CREAT TABLE 或 DROP TABLE),
为表加入索引等。DDL 包括许多与人数据库目录中获得数据有关的保留字,它也是动作查询的一
部分。
(6). 指针控制语言(CCL)
它的语句,像 declare cursor,fetch into和 update where current 用于对一个或多个表单
独行的操作。

–4.1.3 书写规范
a. 在数据库系统中,SQL 语句不区分大小写(建议用大写来标明关键字,学习阶段用小写)。
b. 但字符串常量区分大小写。’ABC’ ‘abc’
c. SQL 语句可单行或多行书写,以“;”结尾,分号代表结束。
d. 关键词不能跨多行或简写。
e. 用空格和缩进来提高语句的可读性。
f. 子句通常位于独立行,便于编辑,提高可读性。子句,一般情况都是用来当条件的。
g. 注释,’ 开头 结束:多行注释,–:单行注释。
注释,不希望程序去读取执行的内容,注释一般情况下是用来写说明的。

–4.1.4 常用的数据类型
a. 数值型:int、number 1,2 3.12 2.1111
b. 字符型:’Jss’ ‘Hello World’
- char:固定长度字符。char(8),比如存入“hello”,数据库开辟8个字节的空间存储数据速度快。
- varchar:可变长度。varchar(8),比如存入“hello”,数据库只会开辟 4 个字节的空间存储数据,
节省空间。
- varchar2:可变长度。oracle 不建议存储空字符,建议存储null,为了oracle的兼容性,推荐使用。
c. 日期型:date,默认格式为:DD-MON-YY 年月日 日月年 周日。。。周六 0 1 2345 6
d. blob:二进制数,最大到 4GB
我们不会直接把比较大的文件(视频、音频和图片)直接存储到数据库中。
我们会把文件单独放在服务器中的路径上,然后只把文件的名字存储到数据库中。
然后根据程序的判断和读取,再对应的给用户展示。
e. clob:字符数据,最大到 4GB,文章

–4.1.5 char、varchar 和 varchar2 的区别
a.char 的长度是固定的,而 varchar2 的长度是可以变化的,比如,存储字符串“abc",对于 char(20),
表示你存储的字符将占 20 个字节(包括 17 个空字符),而同样的 varchar2(20) 则只占用 3 个 字节的长度,20 只是最大值,当你存储的字符小于 20 时,按实际长度存储。
b.char 的效率比 varchar2 的效率稍高。
c.目前 varchar 是 varchar2 的同义词。工业标准的 varchar 类型可以存储空字符串,但是 Oracle 不
这样做,尽管它保留以后这样做的权利。Oracle 自己开发了一个数据类型 varchar2,这个类型不 是一个标准的 varchar2,它将在数据库中 varchar 列可以存储空字符串的特性改为存储 null 值。 假如你想有向后兼容的能力,Oracle 建议使用 varchar2 而不是 varchar。
d. 何时该用 char,何时该用 varchar2?   
char 与 varchar2 是一对矛盾的统一体,两者是互补的关系。varchar2 比 char 节省空间,在效率
上比char 会稍微差一些,即要想获得效率,就必须牺牲一定的空间,这也就是我们在数据库设计 上常说的‘以空间换效率’。   
varchar2 虽然比 char 节省空间,但是假如一个 varchar2 列经常被修改,而且每次被修改的数据
的长度不同,这会引起‘行迁移’(Row Migration)现象,而这造成多余的 I/O,是数据库设计和
调整中要尽力避免的,在这种情况下用 char 代替 varchar2 会更好一些。

–4.1.6 命名规则
a. 必须以字母开头
b. 字符长度在 1-30 之间
c. 只能包含 A-Z,a-z,0-9,_,$ 和 #
d. 被同一个用户拥有的对象不能有重复的名字
e. 不能是 Oracle 服务器保留字

*/

–4.2 DDL
–4.2.1 常用关键字
/*
数据定义语言,定义对数据库对象(库、表、列、索引)的操作。
create(创建)、drop(删除)、alter(更新)、rename(重命名)、 truncate(截断)等。
*/

–4.2.2 创建表
create table tb_user (

   -- 姓名
   username varchar2(50),
   
   -- 性别
   sex char(2),
   
   -- 年龄
   age int

);

– columns 列、对象属性
– row 行、记录、对象实例
–4.2.3 查询表
select * from tb_user;

–4.2.4 插入一条数据
insert into tb_user(username, sex, age)
values (‘qianhua’, ‘女’, 20);

– scott 用户是一个测试用户,有一些测试的表格
– 也可以在 system 用户中,直接查询 scott 用户的表
select * from scott.dept; – dept 是 scott 用户中的部门表

—4.2.4 修改表
– 如果要修改已有的表格,不能直接去修改建表语句
– 可以使用 alter 语句来执行

– (1). 增加两个字段:address、phone
alter table tb_user add(address varchar2(50), phone varchar2(50));

– (2). 删除 address 和 phone 字段
alter table tb_user drop(address, phone);

– (3). 将 address 的长度改为 80
alter table tb_user modify(address varchar2(80));

– (4). 将 phone 列的名字改掉,tel
alter table tb_user rename column phone to tel;

– (5). 修改表名
rename tb_user to tb_person;

– 4.2.5删除表:会把整张表删掉
drop table tb_user;

– 4.2.6截断表:只会删除表格中的数据,不会删除表格结构。
truncate table tb_user;

– 4.2.7给表明或者属性名加注释、说明性文字
comment on table tb_user is ‘用户表’;
comment on column tb_user.username is ‘用户名’;

select * from tb_user;

–4.2.8 数据字典
/*
数据字典主要有三种静态视图组成,每种应用在不同的范围中。

DBA:所有方案中的对象
ALL:用户所能访问的所有对象
USER:在用户方案中的对象

select * from dba_tables;
select * from User_Tables;
select * from all_tables;

*/

–5. DML
– 如果我们在插入语句的时候,没有提交,使用新窗口来访问的时候,是访问不到的
– 所以,我们需要在插入数据之后,应该要 commit 一下。

select * from scott.dept;
select * from system.tb_user;

commit; – 提交数据
rollback; – 回滚数据,如果数据已经提交成功之后,是回滚不了的

– Oracle 和 MySQL 的区别
– Oracle 的 DML 语句是手动提交事务的。
– MySQL 的 DML 语句是自动提交事务的。

– 5.1.2 update 修改数据
– alter 只能修改表格的结构,不能修改表格中的数据

– (1). 修改年龄为 30(几乎不会这么做,还是要加多一个 where 子句)
update tb_user set age = 30;

– (2). 修改 jss 的 age 为 18
update tb_user
set age = 18
where username = ‘Jss’;

– (3). 将 cuihua 的 sex 改为男,age 改为 19
update tb_user
set age = 19, sex = ‘男’
where username = ‘cuihua’;

– (4). 将 age 改为 22,条件是名字为 chunhua 的并且 sex 是男的
update tb_user
set age = 22
where username = ‘chunhua’
and sex = ‘男’;

– (5). 将 age 改为 22,条件是名字为 chunhua 或者 sex 是男的
update tb_user
set age = 22
where username = ‘chunhua’
or sex = ‘男’;

–5.1.3 Delete 删除语句
– drop 操作的还是表结构,不能删除数据

– (1). 删除 tb_user 中所有的数据
delete from tb_user;

– (2). 删除 jss 的 age 值
– 涉及到列的,就用 set 来设置
– 此处也可以使用 update 语句
delete from tb_user
set age = null
where username = ‘Jss’;

– (3). 删掉 jss 用户
delete from tb_user
where username = ‘Jss’;

– (4). 删除用户,条件是姓名为 chunhua 并且是男的
delete from tb_user
where username = ‘chunhua’
and sex = ‘男’;

– (5). 删除用户,条件是姓名为 chunhua 或是男的
delete from tb_user
where username = ‘chunhua’
or sex = ‘男’;

– (6). truncate 截断表,只会清空表中的数据,表格还在
truncate table tb_user;
select * from tb_user;

–6. 约束
/*
为了使得数据库数据能够满足商业逻辑或者企业规则,那么可以使用约束,触发器和应用代码(过程,
函数)来实现。在这3种方法中,约束易于维护,并且具有最好的性能,因此实现数据完整性应该首选约束。

		约束是在表上强制执行的数据校验规则。
		约束主要用于保证数据库的完整性。

*/
–6.1 数据库支持的约束:
check --检查约束
– NOT NULL 非空约束(特殊的检查约束)
unique key – 唯一约束
primary key – 主键约束
foreign key – 外键约束

–6.2 准备数据
create table tb_student (

   id int primary key, -- 使用 id 作为主键,主键是惟一的
   -- Oracle 主键没有自动增长,MySQL 有,Oracle 如果要自动增长的话,只能使用序列
   stuname varchar2(20) not null, -- 名字不能为空
   sex char(2) check(sex = '男' or sex = '女'),  -- 性别只能是男或女
   age int check(age > 0 and age < 100), -- 年龄是 0-100 岁
   address varchar2(100) default '广州黄埔',  -- 默认值
   phone varchar2(11) unique  -- 手机号是唯一的

);

insert into tb_student(id, stuname, sex, age, phone)
values (1, ‘cuihua’, ‘男’, 18, ‘13800138001’);

insert into tb_student(id, stuname, sex, age, phone)
values (2, ‘chunhua’, ‘男’, 18, ‘13800138000’);

insert into tb_student(id, stuname, sex, age, phone)
values (3, ‘huahua’, ‘男’, 18, ‘13800138002’);

insert into tb_student(id, stuname, sex, age, phone)
values (4, ‘juhua’, ‘男’, 18, ‘13800138003’);

insert into tb_student(id, stuname, sex, age, phone)
values (5, ‘conghua’, ‘男’, 18, ‘13800138004’);

insert into tb_student(id, stuname, sex, age)
values (6, ‘易烊千玺’, ‘男’, 18);

insert into tb_student(id, stuname, sex, age)
values (7, ‘王源’, ‘男’, 18);

insert into tb_student(id, stuname, sex, age)
values (8, ‘王俊凯’, ‘男’, 18);

select * from tb_student;
drop table tb_student;

– 主键约束
delete from tb_student where stuname = ‘cuihua’;
delete from tb_student where phone = ‘13800138001’;
– 可以根据 id 进行操作对应的数据
delete from tb_student where id = 2;

– 删除,id 为 5 和 stuname 为 王俊凯
delete from tb_student
where id = 5
and stuname = ‘王俊凯’;

delete from tb_student
where id = 5
or stuname = ‘王俊凯’;

–6.3 外键约束

--班级表
	create table tb_clazz(
	
		id int primary key,  -- 主键  
		code varchar2(10),	 -- 班级的编号
		name varchar2(50),	 -- 班级的名字
		teacher varchar(50)	 -- 老师
	
	);
	
-- 学生表

create table tb_student (

   id int primary key,    
   studetname varchar2(20) not null,
   sex char(2) check(sex = '男' or sex = '女'),  
   age int check(age > 0 and age < 100),
   address varchar2(100) default '广州黄埔', 
   phone varchar2(11) unique,
   
   /* 因为这些数据都是重复的,我们只需要在班级表中,
   设置一次,然后给学生表关联使用即可 
   code varchar2(10),
   name varchar2(50),
   teacher varchar2(50),
   */
   
   -- 外键 clazz_id int references clazz(ID)
   clazz_id int references tb_clazz(id)

);
– 插入
insert into tb_student(id, stuname, sex, age, phone, c_code, c_name, c_teacher)
values (1, ‘cuihua’, ‘女’, 18, ‘13800138000’, ‘java12’, ‘java研发工程师’, ‘花姐’);

insert into tb_student(id, stuname, sex, age, phone, c_code, c_name, c_teacher)
values (2, ‘cuihua’, ‘女’, 18, ‘13800138001’, ‘java12’, ‘java研发工程师’, ‘花姐’);

insert into tb_student(id, stuname, sex, age, phone, c_code, c_name, c_teacher)
values (3, ‘cuihua’, ‘女’, 18, ‘13800138002’, ‘java12’, ‘java研发工程师’, ‘花姐’);

– 有外键后的插入方式
insert into tb_clazz(id, ccode, cname, teacher)
values (1, ‘java12’, ‘Java 研发工程师’, ‘花姐’);

insert into tb_student(id, stuname, sex, age, phone, clazz_id)
values (1, ‘cuihua’, ‘女’, 18, ‘13800138000’, 1);

猜你喜欢

转载自blog.csdn.net/weixin_43145316/article/details/85837652