创建需求和目的

1、需要把11机器上的oracle库中的表导入到12机器oracle库
2、11机器上的数据库fp在12机器上不存在,需要创建新库,以便导入。
3、我们只需导入业务库shp即可,不需要把system,sysaux,temp等系统表空间一并导入,例如:mysql你在导库的时候只是导业务库或表,而不会导入mysql.user这样的系统表
原理是一样的。
所以你对于创建新库的时候,哪些是业务表空间,哪些是系统表空间还是从oracle角度了解清楚他们都是做什么的。
4、导入时需要注意字符集的差异,你在建库的时候就要设置好字符集。
无非一个是业务库,一个是系统运行需要的比如:SYSTEM表空间存储了必要大量的系统表,包括一些数据字典和动态性能视图等。

环境采样

oracle@prd:/home/oracle$cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)

oracle@prd:/home/oracle$uname -r
  3.10.0-327.el7.x86_64

oracle:Release 11.2.0.4.0 Production,单机版

步骤一、指定新的SID

oracle@prd:/home/oracle$cat .bash_profile  //查看下环境变量设置情况
# .bash_profile # Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi # User specific environment and startup programs PATH=$PATH:$HOME/.local/bin:$HOME/bin
export ORACLE_BASE=/u01/oracle
export ORACLE_HOME=/u01/oracle/product/11.2.0
##su - oracle 进入默认显示的ORACLE_SID
export ORACLE_SID=prd
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export ORACLE_TERM=xterm
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/lib:/usr/local/lib
export CLASSPATH=$ORACLE_HOME/JRE
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export PATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin
export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export PATH=${PATH}:$ORACLE_BASE/common/oracle/bin
export PS1="`whoami`@$ORACLE_SID:"'$PWD$'
export DB_ALERT=/u01/oracle/diag/rdbms/$ORACLE_SID/$ORACLE_SID/trace
stty erase ^H
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'
alias lsnrctl='rlwrap lsnrctl' //指定新的sid,实际就是切换实例,我们想登录某个数据库实例就需要
//重新设置当前的ORACLE_SID,这样才能进入到个是数据库的实例中
//这点在操作中要注意。
oracle@prd$>export ORACLE_SID=fp
oracle@prd$>echo $ORACLE_SID
oracle@prd:/home/oracle$sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Sat Mar 19 02:17:35 2022
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to an idle instance.
//已连接到某空闲实例. //意思就是这个实例实际表示两种意思
//1、该实例未启动,启动数据库需三个阶段 startup nomount,alter database mount,alter database open;
每个阶段实际都会定义一些操作,只有该阶段才能进行相关操作。例如:select status from v$instance; 查询实例,首先你得 startup nomount才能查询
//2、该实例实际未存在也会这样显示提示。

步骤二、创建密码文件

为创建数据库,我们必须选择一种数据库管理员身份验证模式,这里有两种方法:
  With a password file
  With operating system authentication

oracle@prd$> orapwd file=/u01/oracle/product/11.2.0/dbs/orapwfp password=oracle

步骤三、创建初始化参数文件
      我是copy的其他数据库的参数文件,这里要注意起名是有规则的   init$oracle_id.ora(你也可以利用init.ora这个模板,把名称改为我们需要的文件)
      创建文件后放在了 /u01/oracle/product/11.2.0/dbs/initfp.ora (我们这里数据库名和实例名都是fp)

这个当中我创建了 
     1、/u01/oracle/oradata/fp和/u01/oracle/fast_recovery_area/fp目录
   2、mkdir -p /u01/oracle/admin/fp/adump  //连续创建目录 mkdir -p

db_name='fp'
memory_target=1G
processes = 150
audit_file_dest='/u01/oracle/admin/fp/adump'
audit_trail ='db'
db_block_size=8192
db_domain='oracle.com'
db_recovery_file_dest='/u01/oracle/fast_recovery_area'
db_recovery_file_dest_size=2G
diagnostic_dest='/u01/oracle'
dispatchers='(PROTOCOL=TCP) (SERVICE=test1XDB)'
open_cursors=300
remote_login_passwordfile='EXCLUSIVE'
undo_tablespace='UNDOTBS1'
# You may want to ensure that control files are created on separate physical
# devices
control_files =('/u01/oracle/oradata/fp/control01.ctl','/u01/oracle/fast_recovery_area/fp/control02.ctl')
compatible ='11.2.0.4.0'

注意:control01.ctl,.....control02.ctl....等 control_files这里根据需求填写多个控制文件路径,这个文件不需要事先创建,指定即可路已经和文件名即可,
 在创建数据库时会自动创建指定的文件,control01.ctl只需要指定目录即可,默认如果没有会自动创建

步骤四、创建服务器动态参数文件spfile(我们利用pfile文件来创建)

oracle@prd:/home/oracle$>export ORACLE_SID=fp
oracle@prd:/home/oracle$>echo $ORACLE_SID
oracle@prd:/home/oracle$sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Sat Mar 19 02:17:35 2022
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to an idle instance.
SQL> create spfile from pfile='/u02/oracle/product/11.2.0/dbs/initfp.ora'; //创建spfile,不用启动数据库。
//initfp.ora文件是从init.ora

步骤五、开始启动第一阶段,nomount阶段

idle> startup nomount
ORACLE instance started.
Total System Global Area 313159680 bytes
Fixed Size 2175328 bytes
Variable Size 213913248 bytes
Database Buffers 92274688 bytes
Redo Buffers 4796416 bytes
//因为你当前的环境变量以及实例文件都能找到,所以你startup nomount可以不指定参数文件
//Oracle根据参数文件的内容,创建了instance,分配了相应的sga内存区域,启动了相关的后台进程
//观察告警日志文件(alert_fp.log),可以看到这一阶段的启动过程:读取参数文件,利用相关参数启动实例
[root@rac-12c-2 ~]# locate alert_fp.log
/u01/oracle/diag/rdbms/fp/fp/trace/alert_fp.log //进程的启动信息会在alert_fp_log中有显示,我这里直接用了现成启动好的实例,看下他们的进程信息 SQL>set line 9999;
SQL> select addr,pid,spid,username,program from v$process;
ADDR PID SPID USERNAME PROGRAM
---------------- ---------- ------------------------------------------------------------------------ --------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------
00000018E14C2790 1 PSEUDO
000000195142CCE8 2 7234 oracle oracle@rac-12c-2 (PMON)
000000190143EEB8 3 7236 oracle oracle@rac-12c-2 (PSP0)
00000018F145B7C8 4 7241 oracle oracle@rac-12c-2 (VKTM)
00000018E14C3848 5 7245 oracle oracle@rac-12c-2 (GEN0)
000000195142DDA0 6 7247 oracle oracle@rac-12c-2 (DIAG)
000000190143FF70 7 7249 oracle oracle@rac-12c-2 (DBRM)
00000018F145C880 8 7251 oracle oracle@rac-12c-2 (DIA0)
00000018E14C4900 9 7253 oracle oracle@rac-12c-2 (MMAN)
000000195142EE58 10 7255 oracle oracle@rac-12c-2 (DBW0)
0000001901441028 11 7257 oracle oracle@rac-12c-2 (DBW1) ADDR PID SPID USERNAME PROGRAM
---------------- ---------- ------------------------------------------------------------------------ --------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------
00000018F145D938 12 7259 oracle oracle@rac-12c-2 (LGWR)
00000018E14C59B8 13 7261 oracle oracle@rac-12c-2 (CKPT)
000000195142FF10 14 7263 oracle oracle@rac-12c-2 (SMON)
00000019014420E0 15 7265 oracle oracle@rac-12c-2 (RECO)
00000018F145E9F0 16 7267 oracle oracle@rac-12c-2 (MMON)
00000018E14C6A70 17 7269 oracle oracle@rac-12c-2 (MMNL)
0000001951430FC8 18 7271 oracle oracle@rac-12c-2 (D000)
0000001901443198 19 7273 oracle oracle@rac-12c-2 (S000)
00000018F145FAA8 20 109850 oracle oracle@rac-12c-2 (W000)
00000018E14C7B28 21 7322 oracle oracle@rac-12c-2 (QMNC)
0000001951432080 22 7336 oracle oracle@rac-12c-2 (CJQ0) ADDR PID SPID USERNAME PROGRAM
---------------- ---------- ------------------------------------------------------------------------ --------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------
0000001901444250 23 108877 oracle oracle@rac-12c-2 (J000)
00000018F1460B60 24 109927 oracle oracle@rac-12c-2 (J001)
00000018E14C8BE0 25 107377 oracle oracle@rac-12c-2
0000001951433138 26 107379 oracle oracle@rac-12c-2
00000018E14CAD50 33 109950 oracle oracle@rac-12c-2 (TNS V1-V3)
0000001901448530 39 7370 oracle oracle@rac-12c-2 (SMCO)
00000018E14CCEC0 41 7391 oracle oracle@rac-12c-2 (Q000)
0000001951437418 42 7393 oracle oracle@rac-12c-2 (Q001)
30 rows selected.

步骤六、把数据库启动到nomount状态,这种状态才可以创建具体的数据库
为创建数据库,我们之前创建了必要的目录,满足数据文件、控制文件、日志文件等路径需求等,包括有:

1、存放控制文件contorl01.ctl的目录
   mkdir /u01/oracle/oradata/fp
  2、存放控制文件control02.ctl的目录
   mkdir /u01/oracle/fast_recovery_area/fp
 3、create log dir 创建存放log的目录
   mkdir -p /u01/oracle/admin/fp/{a,dp}dump

idle> startup nomount
ORACLE instance started.
Total System Global Area 313159680 bytes
Fixed Size 2175328 bytes
Variable Size 213913248 bytes
Database Buffers 92274688 bytes
Redo Buffers 4796416 bytes

步骤七、创建数据库(下面是核心语句)

 create database fp
USER SYS IDENTIFIED BY oracle
USER SYSTEM IDENTIFIED BY oracle
LOGFILE GROUP 1 ('/u01/oracle/oradata/fp/redo01.log') SIZE 100M,
GROUP 2 ('/u01/oracle/oradata/fp/redo02.log') SIZE 100M,
GROUP 3 ('/u01/oracle/oradata/fp/redo03.log') SIZE 100M
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXLOGHISTORY 1
MAXDATAFILES 100
MAXINSTANCES 1
CHARACTER SET AL32UTF8 ###由于此次需求是要把A库的业务表导出到B库业务表(A库和B库分别在不同的机器上独立运行,所以需要注意字符集设置)
DATAFILE '/u01/oracle/oradata/fp/system01.dbf' SIZE 350M REUSE
AUTOEXTEND ON NEXT 10240K
EXTENT MANAGEMENT LOCAL
SYSAUX DATAFILE '/u01/oracle/oradata/fp/sysaux01.dbf' SIZE 325M REUSE
DEFAULT TABLESPACE SHP ###业务表空间
DATAFILE '/u01/oracle/oradata/fp/shp01.dbf'
SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
DEFAULT TEMPORARY TABLESPACE temp
TEMPFILE '/u01/oracle/oradata/fp/temp01.dbf'
SIZE 20M REUSE
UNDO TABLESPACE undotbs1
DATAFILE '/u01/oracle/oradata/fp/undotbs1.dbf'
SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
//把该语句保存为 createdatabase.sql
//执行:
SQL> @/home/oracle/createdatabase.sql
Database created.
//一旦执行之后,你就会发现当前数据库立即处于open状态了。(oracle启动三阶段 nomount,mount,open)
//执行这个语句也可以直接在控制台上直接执行。

步骤八、创建数据字典等,在控制台直接执行

SQL>@?/rdbms/admin/catalog
SQL>@?/rdbms/admin/catproc
SQL>conn system/oracle
SQL>@?/sqlplus/admin/pupbld
SQL>conn / as sysdba

步骤九、创建两个数据库文件与用户的关系,同时创建用户

SQL> CREATE USER yyshp IDENTIFIED BY yySh12 DEFAULT TABLESPACE SHFP TEMPORARY TABLESPACE temp;
User created. SQL> grant connect,resource,dba to yyshp;
Grant succeeded. SQL> grant create session,create table,unlimited tablespace to yyshp;
Grant succeeded. SQL> grant create table to yyshp;
Grant succeeded. SQL> grant create tablespace to yyshp;
Grant succeeded. SQL> grant create view to yyshp;
Grant succeeded. SQL> grant create session to yyshp;
Grant succeeded. SQL> grant select any table TO yyshp;
Grant succeeded. SQL> grant unlimited tablespace to yyshp;
Grant succeeded.

步骤十、创建普通用户默认表空间

CREATE TABLESPACE users  DATAFILE '/u01/app/oracle/oradata/test/user01.dbf' SIZE 100M
AUTOEXTEND ON;
ALTER DATABASE DEFAULT TABLESPACE users;
col file_name for a45
col tablespace_name for a10

步骤十一、需要设置网络配置、连接串

1、修改listener.ora
2、修改tnsnames.ora
//他们两个文件配合使用 oracle@prd:/home/oracle$cat /u01/oracle/product/11.2.0/network/admin/tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/oracle/product/11.2.0/network/admin/tnsnames.ora
# Generated by Oracle configuration tools. //添加fp相关信息
fp=
(DESCRIPTION =
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = fp)
)
) PRD =
(DESCRIPTION =
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = prd)
)
) oracle@prd:/home/oracle$cat /u01/oracle/product/11.2.0/network/admin/listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = prd)
(SID_NAME = prd)
(ORACLE_HOME=/u01/oracle/product/11.2.0)
)
//添加fp的相关信息
(SID_DESC=
(GLOBAL_DBNAME=fp)
(ORACLE_HOME=/u01/oracle/product/11.2.0)
(SID_NAME=fp)
) MYLISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.121.51.50)(PORT = 1522))
)
)

创建后查看相关的目录和内容

//在数据库中查询
SQL> select file_name,tablespace_name from dba_data_files;
FILE_NAME TABLESPACE_NAME
------------------------------------------------------------------------------------------
/u02/oracle/oradata/fp/system01.dbf SYSTEM
/u02/oracle/oradata/fp/sysaux01.dbf SYSAUX
/u02/oracle/oradata/fp/undotbs1.dbf UNDOTBS1
/u02/oracle/oradata/fp/shp01.dbf SHP //业务表 //进入目录查询
[root@rac-12c-2 ~]# ll /u01/oracle/oradata/fp/
total 3936260
drwxr-xr-x 2 oracle oinstall 10 Dec 2 10:23 archive
-rw-r----- 1 oracle oinstall 9519104 Mar 19 12:30 control01.ctl-rw-r----- 1 oracle oinstall 52436992 Mar 19 01:59 fp2.dbf
-rw-r----- 1 oracle oinstall 52436992 Mar 19 01:59 fp.dbf
-rw-r----- 1 oracle oinstall 52436992 Dec 1 20:37 fp_temp.dbf
-rw-r----- 1 oracle oinstall 104858112 Mar 19 12:29 redo01.log
-rw-r----- 1 oracle oinstall 104858112 Mar 17 02:30 redo02.log
-rw-r----- 1 oracle oinstall 104858112 Mar 18 03:10 redo03.log
-rw-r----- 1 oracle oinstall 524296192 Mar 18 03:15 shp01.dbf
-rw-r----- 1 oracle oinstall 340795392 Mar 19 12:20 sysaux01.dbf
-rw-r----- 1 oracle oinstall 367009792 Mar 19 12:25 system01.dbf
-rw-r----- 1 oracle oinstall 20979712 Mar 19 02:30 temp01.dbf
-rw-r----- 1 oracle oinstall 209723392 Mar 19 12:25 undotbs1.dbf
-rw-r----- 1 oracle oinstall 1073750016 Mar 19 01:59 users01.dbf
-rw-r----- 1 oracle oinstall 1073750016 Mar 19 01:59 users02.dbf

[root@rac-12c-2 ~]# ll /u01/oracle/fast_recovery_area/fp/
  total 19040
  -rw-r----- 1 oracle oinstall 9519104 Mar 19 12:35 control02.ctl

补充

我这里以数据库是fp,sid=fp2为例,讲解
oracle参数文件
1.初始化参数文件
oracle的初始化参数文件分为spfilefp2.ora(spfile+sid+.ora)、spfile.ora、initfp2.ora(init+sid+.ora)。
2、pfle(Parameter File)静态参数文件:
文本文件,必须通过编辑器修改参数;
修改参数后,需重启实例生效;
pfile 参数文件可以不放在数据库服务器上 ;
命名方式:init + SID.ora 。
3、spfile(System Parameter File)动态参数文件:
二进制文件,无法通过编辑器修改;
Linux 下 strings 可以查看;
必须放在Database Server 指定路径下;
命名方式:spfile + SID.ora 。
4、pfile 和 spfile 可以相互生成:
SQL>create pfile from spfile //通过spfile创建pfile文件
SQL>create pfile='/u01/oracle/product/11.2.0/dbs/spfilefp2.ora' from spfile; //指定文件和路径
SQL>create spfile from pfile//通过pfile创建spfile文件
SQL>create spfile from pfile='/u01/oracle/product/11.2.0/dbs/initfp2.ora' //指定文件和路径
注:使用 spfile 启动后不能在线生成spfile,ORA-32002: 无法创建已由实例使用的SPFILE

可以通过当前内存参数生成 pfile 和 spfile(11g 新特性):
SQL>create pfile from memory;
SQL>create spfile from memory;
5、当oracle启动时,初始化参数文件的加载顺序为:spfilefp2.ora、spfile.ora、initfp2.ora。
有了spfile,pfile一般留做备用,特殊情况也可以使用 pfile 启动,命令如下:
SQL> startup pfile=$ORACLE_HOME/dbs/initfp.ora

oracle 11g手工建数据库过程的更多相关文章

  1. Oracle 10g AND Oracle 11g手工建库案例--Oracle 11g

    Oracle 10g AND Oracle 11g手工建库案例--Oracle 11g 系统环境: 操作系统: RedHat EL6 Oracle:  Oracle 10g and Oracle 11 ...

  2. Oracle 10g AND Oracle 11g手工建库案例--Oracle 10g

    Oracle 10g AND Oracle 11g手工建库案例--Oracle 10g 系统环境: 操作系统: RedHat EL6 Oracle:  Oracle 10g and Oracle 11 ...

  3. Oracle 11g 手工建库

    假设数据库软件已经安装好,现在没有图形界面无法用dbca安装数据库,那么用手工建库,数据库名为edw 创建目录 [oracle@localhost ~]$ mkdir -p /u01/app/orac ...

  4. Oracle 11g R2创建数据库之手工建库方式

    在之前的博文当中梳理了关于DBCA静默方式创建数据库的过程,本文就手工通过SQL*PLUS客户端采用CREATE DATABASE语句创建数据库.这种建库方式就是完全使用手工SQL语句创建数据库,通常 ...

  5. CENTOS 6.4 安装oracle 10g,手工建库及升级到10.2.0.5

    一. 数据库软件安装 参照官方手册 1.安装rpm包 注这里的yum直接用163的yum yum -y install binutils compat-libstdc++-33 compat-libs ...

  6. VM虚拟机下在LINUX上安装ORACLE 11G单实例数据库

    1.环境及安装前规划:虚拟机及OS如下 环境:VMware Wordstation ACE版 6.0.2 操作系统:OracleLinux-R5-U8-Server-i386-dvd    3.2G ...

  7. Oracle 11g的安装详细过程

    本次采用的电脑为win10 专业版,以下为本人电脑的配置情况: 本人是第一次在win10系统上面进行oracle 11g的安装. 以下为安装步骤: 一.下载软件包 以下为各种oracle安装包的下载网 ...

  8. Oracle 11g R2创建数据库之DBCA静默方式

    通常创建Oracle数据库都是通过DBCA(Database Configuration Assistant)工具完成的,DBCA工具可以通过两种方式完成建库任务,即图形界面方式和静默命令行方式.既然 ...

  9. Windows Server 2008 R2 64位操作系统安装Oracle 11g 64位数据库,在客户终端上安装Oracle 11g 32位,才能安装P/L Sql Developer并配置

    1.下载Oracle 11g R2 for Windows的版本 下载地址: http://www.oracle.com/technetwork/database/enterprise-edition ...

随机推荐

  1. CentOS7.5环境下Docker基本操作

     1. 查找Docker中Centos镜像文件 docker search centos 2. 下载Docker中Centos镜像文件(默认下载最新版本) docker pull centos 3. ...

  2. 算法 | Java 常见排序算法(纯代码)

    目录 汇总 1. 冒泡排序 2. 选择排序 3. 插入排序 4. 快速排序 5. 归并排序 6. 希尔排序 6.1 希尔-冒泡排序(慢) 6.2 希尔-插入排序(快) 7. 堆排序 8. 计数排序 9 ...

  3. Mybatis——动态sql+字符串匹配导致的判断问题

    在mybatis的学习中,狂神建议字符串匹配直接将模糊匹配的符号放在字符串中,如:匹配'keWord',那么实际所使用的参数应该为'%keyWord%' map.put("keyWord&q ...

  4. TCP/IP协议 | TCP协议 | UDP协议 | 三次握手四次挥手

    TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP.SMTP.TCP.UDP.IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP ...

  5. 100行代码实现HarmonyOS“画图”应用,eTS开发走起!

    本期我们给大家带来的是"画图"应用开发者Rick的分享,希望能给你的HarmonyOS开发之旅带来启发~ 介绍 2021年的华为开发者大会(HDC2021)上,HarmonyOS ...

  6. Nginx(一) 反向代理为何叫反向代理?

    与正向代理比起来,反向代理是什么东西反向了? 正向代理 A同学在大众创业.万众创新的大时代背景下开启他的创业之路,目前他遇到的最大的一个问题就是启动资金,于是他决定去找马云爸爸借钱,可想而知,最后碰一 ...

  7. python django对数据表的增删改查操作

    新增操作:方式1:book = BookInfo(title='西游记',price=99)book.save() 方式2:BookInfo.objects.create(title='西游记',pr ...

  8. jvm-learning-运行时数据区-整体

    在jdk8之后之前的方法区有叫做元数据. 每个JVM只有一个Runtime实例,即为运行时环境,相当于内存结构种的运行时数据区 线程 线程是一个程序里的运行单元,JVM允许一个应用有多个线程并行的执行 ...

  9. 访问修饰符 public,private,protected,以及不写(默认) 时的区别?

    修饰符 当前类 同 包 子 类 其他包 public √ √ √ √ protecte d √ √ √ × default √ √ × × private √ × × × 类的成员不写访问修饰时默认为 ...

  10. 速看,ElasticSearch如何处理空值

    大家好,我是咔咔 不期速成,日拱一卒 在MySQL中,十分不建议大家给表的默认值设置为Null,这个后期咔咔也会单独出一期文章来说明这个事情. 但你进入一家新公司之前的业务中存在大量的字段默认值为Nu ...