请选择 进入手机版 | 继续访问电脑版

DCA认证考前总结

[复制链接]
科达工艺 发表于 2020-12-31 18:58:34 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
##达梦数据库(DM8)DCA认证##
根据B站达梦给出有关视频和文档,自己跟着写了一些考前准备。
一、下令行达梦数据库的安装

  • 收集软件信息
  1. // 操纵系统[root@localhost ~]# cat /etc/issueNeoKylin Linux General Server release 6.0  (Dhaulagiri) Kernel \r on an \m// Linux内核[root@localhost ~]# uname -a2.6.32-220.el6.x86_64
复制代码

  • 收集硬件信息
  1. // CPU信息[root@localhost ~]# cat /proc/cpuinfo// 磁盘信息[root@localhost ~]# fdisk -l[root@localhost ~]# df -h
复制代码

  • 规划安装路径(软件,数据库文件)
  1. [root@localhost ~]# mkdir /dm8
复制代码

  • 规划用户(不建议使用root,创建dmdba用户)
  1. // 查察dmdba用户是否存在[root@localhost ~]# id dmdbaid: dmdba:无此用户// 创建用户组[root@localhost ~]# groupadd dinstall// 创建dmdba并指定用户组[root@localhost ~]# useradd -g dinstall dmdba// 校验用户是否创建成功[root@localhost ~]# id dmdbauid=500(dmdba) gid=501(dinstall) 组=501(dinstall)// 给用户设置暗码(我这里是dm123456)[root@localhost ~]# echo "dameng123" | passwd --stdin dmdba// 修改安装路径的权限[root@localhost /]# ll -dl /dm8drwxr-xr-x 2 root root 4096 10月 26 11:07 /dm8[root@localhost /]# chown dmdba.dinstall -R /dm8[root@localhost /]# ll -dl /dm8drwxr-xr-x 2 dmdba dinstall 4096 10月 26 11:07 /dm8
复制代码

  • 设置情况变量(可选项,方便实用达梦下令)
  1. [root@localhost /]# cd /home/dmdba[root@localhost dmdba]# vi .bash_profile // 在.bash_profile最后增加export DM_HOME=/dm7export PATH=$DM_HOME/bin:$DM_HOME/tool:$PATH:$HOME/bin// 验证是否设置成功[root@localhost dmdba]# source .bash_profile
复制代码

  • 设置文件最大打开数量
  1. // 查察文件最大打开数量设置[root@localhost dmdba]# ulimit -a修改之后重启生效,只对dmdba有效,所有用户有效则把dmdba换为*[root@localhost ~]# vi /etc/security/limits.conf        dmdba soft nofile 4906        dmdba hard nofile 65536暂时生效:ulimit -n 65536
复制代码

  • 准备安装包(使用Xftp 5等软件把安装包上传到/opt目次)
  1. [root@localhost ~]# cd /opt[root@localhost opt]# ll -l-rw-r--r-- 1 root root 589234176 10月 14 10:51 dm7_setup_rh6_64_ent_7.6.0.197_20190917.iso// 挂载[root@localhost installdoc]# mount -o loop dm7_setup_rh6_64_ent_7.6.0.197_20190917.iso  /mnt[root@localhost installdoc]# cd /mnt/[root@localhost mnt]# ls -l-r-xr-xr-x 1 root root 584382798  9月 16 11:04 DMInstall.bin-r-xr-xr-x 1 root root   2266249  9月 12 16:45 DM_Install_en.pdf-r-xr-xr-x 1 root root   2207674  9月 12 16:45 DM_Install_zh.pdf-r-xr-xr-x 1 root root       868  9月 12 16:48 release_en.txt-r-xr-xr-x 1 root root       973  9月 12 16:48 release_zh.txt
复制代码

  • 达梦数据库安装
  1. [root@localhost mnt]# xhost +access control disabled, clients can connect from any host[root@localhost mnt]# export $DISPLAY0[root@localhost mnt]# su - dmdba[dmdba@localhost ~]# export DISPLAY=:0[dmdba@localhost ~]# cd /mnt[dmdba@localhost mnt]# ll -l-r-xr-xr-x 1 root root 584382798  9月 16 11:04 DMInstall.bin-r-xr-xr-x 1 root root   2266249  9月 12 16:45 DM_Install_en.pdf-r-xr-xr-x 1 root root   2207674  9月 12 16:45 DM_Install_zh.pdf-r-xr-xr-x 1 root root       868  9月 12 16:48 release_en.txt-r-xr-xr-x 1 root root       973  9月 12 16:48 release_zh.txt下令行安装:[dmdba@localhost  mnt]$ ./DMInstall.bin -i请选择安装语言(C/c:中文 E/e:英文) [C/c]:c解压安装步伐..........接待使用达梦数据库安装步伐是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:n是否设置时区? (Y/y:是 N/n:否) [Y/y]:y设置时区:[ 1]: GTM-12=日界限西[ 2]: GTM-11=萨摩亚群岛[ 3]: GTM-10=夏威夷[ 4]: GTM-09=阿拉斯加[ 5]: GTM-08=太平洋时间(美国和加拿大)[ 6]: GTM-07=亚利桑那[ 7]: GTM-06=中部时间(美国和加拿大)[ 8]: GTM-05=东部部时间(美国和加拿大)[ 9]: GTM-04=大西洋时间(美国和加拿大)[10]: GTM-03=巴西利亚[11]: GTM-02=中大西洋[12]: GTM-01=亚速尔群岛[13]: GTM=格林威治标准时间[14]: GTM+01=萨拉热窝[15]: GTM+02=开罗[16]: GTM+03=莫斯科[17]: GTM+04=阿布扎比[18]: GTM+05=伊斯兰堡[19]: GTM+06=达卡[20]: GTM+07=曼谷,河内[21]: GTM+08=中国标准时间[22]: GTM+09=汉城[23]: GTM+10=关岛[24]: GTM+11=所罗门群岛[25]: GTM+12=斐济[26]: GTM+13=努库阿勒法[27]: GTM+14=基里巴斯请选择设置时区 [21]:21安装范例:1 典范安装2 服务器3 客户端4 自界说请选择安装范例的数字序号 [1 典范安装]:所需空间: 1088M请选择安装目次 [/home/dmdba/dmdbms]:/dm8可用空间: 29G是否确认安装路径(/dm8)? (Y/y:是 N/n:否)  [Y/y]:y安装前小结安装位置: /dm8所需空间: 1088M可用空间: 29G版本信息: 有效日期: 安装范例: 典范安装是否确认安装? (Y/y:是 N/n:否):y2020-12-30 20:06:57 [INFO] 安装达梦数据库...2020-12-30 20:06:58 [INFO] 安装 基础 模块...2020-12-30 20:07:05 [INFO] 安装 服务器 模块...2020-12-30 20:07:05 [INFO] 安装 客户端 模块...2020-12-30 20:07:10 [INFO] 安装 驱动 模块...2020-12-30 20:07:11 [INFO] 安装 手册 模块...2020-12-30 20:07:14 [INFO] 安装 服务 模块...2020-12-30 20:07:15 [INFO] 移动ant日志文件。2020-12-30 20:07:15 [INFO] 安装达梦数据库完成。请以root系统用户执行下令:/dm8/script/root/root_installer.sh安装竣事// root用户执行:[root@localhost ~]# /dm8/script/root/root_installer.sh移动 /dm8/bin/dm_svc.conf 到/etc目次修改服务器权限创建DmAPService服务ln -s '/usr/lib/systemd/system/DmAPService.service' '/etc/systemd/system/multi-user.target.wants/DmAPService.service'创建服务(DmAPService)完成启动DmAPService服务
复制代码

  • 创建数据库实例
  1.   // 注:这里创建的SYSDBA的默认暗码是SYSDBA  下令行创建数据库实例:(1)Help查察资助:dminit help(2)创建实例:        [dmddba@localhost ~]$ dminit path=/dm8/data  db_name=DMTEST                                                                             instance_name=DMTESTSERVER  port_num=5237initdb V7.6.0.197-Build(2019.09.12-112648)ENT db version: 0x7000afile dm.key not found, use default license!License will expire on 2020-12-30 log file path: /dm8/data/DMTEST/DM0101.log log file path: /dm8/data/DMTEST/DM0102.logwrite to dir [/dm8/data/DMTEST].create dm database success. 2020-12-30 16:34:40(3)注册实例(root用户下):        [root@localhost  ~]# cd /dm8/script/root/        [root@localhost root]# ./dm_service_installer.sh -t dmserver -p         DMTESTSERVER -dm_ini /dm8/data/DMTEST/dm.ini(4)启动实例:[dm@localhost ~]$ DmServiceDMTESTSERVER start(5)查察实例:dmservice.sh    查察进程ps -ef | grep dmserver (6)删除实例:首先停止实例服务[root@localhost root]#  ./dm_service_uninstaller.sh -n DmServiceDMTESTSERVER是否删除服务(DmServiceDMTESTSERVER)?(Y/y:是 N/n:否): y
复制代码

  • 数据库实例的启动与停止
  1. (1)root用户下:方式一,root用户下操纵(新手手选):        [root@localhost ~]# cd /dm8/tool        [root@localhost tool]# ./dmservice.sh方式二:           [root@localhost ~]# cd /dm8/tool           // 查察状态     [root@localhost tool]# systemctl status DmServiceDMSERVER.service     // 启动         [root@localhost tool]# systemctl start DmServiceDMSERVER.service         // 停止     [root@localhost tool]# systemctl stopDmServiceDMSERVER.service(2)dmdba用户下:方式一:        [dmddba@localhost ~]$ cd /dm8/data/DMTEST        [dmddba@localhost ~]$ ./dmserver dm.ini方式二:        [dmddba@localhost ~]$ cd /dm8/bin    [dmddba@localhost ~]$ll Dm8*        查察状态:[dmddba@localhost ~]$ DmServiceDMSERVER status        启动实例:[dmddba@localhost ~]$ DmServiceDMSERVER start        停止实例:[dmddba@localhost ~]$ DmServiceDMSERVER stop
复制代码
二、表空间管理:
  1. (1)达梦表空间先容// 查察达梦表空间有哪些SQL> select tablespace_name from dba_tablespaces;行号     TABLESPACE_NAME---------- ---------------1          SYSTEM2          ROLL3          TEMP4          MAIN5          DMHR6          HMAIN// SYSTEM:数据字典和全局的系统数据// ROLL:存放了数据库运行过程中产生的回滚记载        UNDO_RETENTION: 单位是秒。           sp_set_para_double_value(2,’UNDO_RETENTION’,2400)// TEMP:暂时表空间,暂时字段,暂时表都默认存放在暂时表控件// MAIN:数据库默认的一个表空间,创建数据对象时,如果不指定存储位置,默认存放到该表空间// HMAIN:huge表空间(2) 规划表空间情况一:创建一个表空间SQL> create tablespace tbs1 datafile '/dm7/data/DAMENG/tbs1_01.dbf' size 32;                   // 表空间初始文件巨细是页巨细的4096倍情况二:创建一个表空间,初始巨细是50M,最大100MSQL> create tablespace tbs2 datafile '/dm7/data/DAMENG/tbs2_01.dbf' size 50 autoextend on maxsize 100;情况三:创建一个表空间,初始值50M,每次扩展1M,最大100MSQL> create tablespace tbs3 datafile '/dm7/data/DAMENG/tbs3_01.dbf' size 50 autoextend on next 1 maxsize 100;情况四:创建一个表空间,初始50M,表空间由2个数据文件组成,分别存储到差别的磁盘上,每次扩展1M,每个数据文件最大100MSQL> create tablespace tbs4 datafile '/dm7/data/DAMENG/tbs4_01.dbf' size 50 autoextend on next 1 maxsize 100, '/dm7/data/tbs4_02.dbf' size 50 autoextend on next 1 maxsize 100;(3) 维护表空间表空间不足的时候,如何去维护表空间创建大表空间,数据导出,导入resize数据文件巨细增加数据文件SQL> alter tablespace tbs2 add datafile '/dm7/data/DAMENG/tbs2_02.dbf' size 50 autoextend on maxsize 100;// 查察表空间SQL> select file_name,tablespace_name from dba_data_files;更换存储位置:// 达梦的表空间状态:0-online;1-offline// 注意:SYSTEM,ROLL,TEMP不能是offlineSQL> select TABLESPACE_NAME,STATUS from dba_tablespaces;行号     TABLESPACE_NAME STATUS     ---------- --------------- -----------1          SYSTEM          02          ROLL            03          TEMP            04          MAIN            05          DMHR            06          TBS1            07          TBS2            08          TBS3            09          TBS4            010         HMAIN           NULL// 更改TBS1的存储位置a.表空间offlineSQL> alter tablespace tbs1 offline;b.修改存储位置SQL> alter tablespace tbs1 rename datafile '/dm7/data/DAMENG/tbs1_01.dbf' to '/dm7/data/tbs1_01.dbf';c.表空间onlineSQL> alter tablespace tbs1 online;(4)删除表空间(如果表空间存在数据,不允许直接删除)SQL> drop tablespace tbs2;
复制代码
三、用户管理
  1. (1)查察达梦数据库有哪些用户SQL> select username from dba_users;行号     USERNAME  ---------- ----------1          SYSSSO2          DMHR3          SYSDBA4          SYS5          SYSAUDITOR// SYS:达梦数据库内置管理员用户,不能登录数据库,数据库使用的大部门的数据字典和动态性能视图sys// SYSDBA:数据库的管理员// SYSAUDITOR:审计用户// SYSSSO:安全用户// SYSDBO:数据操纵员(安全版才存在)(2)口令战略用户暗码最长为48个字节,创建用户时使用password policy字句来指定口令战略。dm.ini中有PWD_POLICY系统的口令战略:0:无战略1:禁止与用户名相同2:口令长度不小于94:至少包罗一个大写字母(A-Z)8:至少包罗一个数字(0-9)16:至少包罗一个标点符号(英文状态下输入,除’'和空格)口令战略可以单独使用,也可以组合使用,好比:需要应用战略4和8,那么设置口令战略为4+8=12// 查察数据库暗码战略SQL> select para_name,para_value from v$dm_ini where para_name='PWD_POLICY';行号     PARA_NAME  PARA_VALUE---------- ---------- ----------1          PWD_POLICY 2// 暗码战略设置为6SQL> sp_set_para_value(1,'PWD_POLICY',6);DMSQL 过程已成功完成已用时间: 10.577(毫秒). 执行号:43.// 再次查察数据库暗码战略SQL> select para_name,para_value from v$dm_ini where para_name='PWD_POLICY';行号     PARA_NAME  PARA_VALUE---------- ---------- ----------1          PWD_POLICY 6暗码实验登录次数:FAILED_LOGIN_ATTEMPS暗码锁定时间:PASSWORD_LOCK_TIME暗码逾期时间:PASSWORD_LIFE_TIMESQL> select b.username, a.failed_num, a.failed_attemps from sysusers a right join all_users b on a.id=b.user_id;行号     USERNAME   FAILED_NUM  FAILED_ATTEMPS---------- ---------- ----------- --------------1          SYSDBA     0           02          SYS        0           03          SYSAUDITOR 0           04          SYSSSO     0           05          DMHR       3           0(3)战略案例分析案例1:为数据库设置一个用户,该账户可以创建自己的表,有属于自己的独立表空间,用户的暗码要求每60天变更一次// 创建一个表空间SQL> create tablespace test datafile '/dm7/data/DAMENG/test01.dbf' size 32;// 创建用户,指定暗码,表空间和暗码逾期时间SQL> create user test identified by Dameng123 limit password_life_time 60 default tablespace test;// 校验是否创建成功[dmdba@localhost ~]$ disql test/Dameng123SQL> select user;行号     USER()---------- ------1          TEST案例2:规划一个账号每60天变更一次暗码,暗码实验连接2次失败,账号锁定5分钟,用户还可以查询dmhr.employee表// 创建用户SQL> create user test1 identified by Test12345 limit password_life_time 60,failed_login_attemps 2,password_lock_time 5;// 解锁用户SQL> alter user test1 account unlock;// 赋予权限SQL> grant select on dmhr.employee to test1;注:一般情况,创建完用户,给resource脚色,就根本上可以满意需求。详细需要根据生产情况的来。案例3:企业招聘一个录入信息人员,权限是固定的,只能录入city表。脚色:一类权限的聚集。把某些特定的权限给一个固定的脚色,然后再把脚色给用户// 创建脚色SQL> create role r1; // 赋予权限给脚色SQL> grant insert on dmhr.city to r1;// 创建用户SQL> create user test2 identified by Dameng123;// 赋予脚色给用户SQL> grant r1 to test2;(4)用户维护// 删除权限SQL> revoke insert on dmhr.ctiy form r1;// 修改暗码SQL> alter user test2 identified by Dameng12345;// 锁定/解锁账户SQL> alter user test2 account lock/unlock;// 删除账号SQL> drop user test2;// 删除账号(用户下有创建表),慎用!删除前记得做备份SQL> drop user test2 cascade;// 删除脚色SQL> drop role r1;
复制代码
四、表、视图、索引管理
(1)模式:一组数据对象的聚集,在创建用户的时候,就会生成一个跟用户同名的模式
(2)表
达梦支持的表:默认的表(索引组织表),堆表,暂时表,分区表,外部表等
规划表规则:
–定名:字符开头a-z,0-9,$#_
–数据范例:int,char,varchar,date,clob,blob,number等
–存储位置:自己规划的表空间,未指定则是默认空间
–约束:非空,唯一,主键,查抄,外键
–注释:comment
案例1:规划一张学员信息表
​ 表名:STU
​ 列:学号(id,char(10)),姓名(name,varchar(20)),性别(sex,char(1)),
​ 年龄(age,int),电话(tel,varchar(15)),家庭住址(address,varchar(50))
​ 表空间:STU
​ 约束:主键–学号,非空–姓名,电话
​ 备注:学员信息表
  1. // 创建的SQLcreate table "TEST"."STU"(        "id" CHAR(10) not null ,        "name" VARCHAR(20) not null ,        "sex" CHAR(1),        "age" INT unique ,        "tel" VARCHAR(15) not null ,        "address" VARCHAR(50),        primary key("id"))storage(initial 1, next 1, minextents 1, fillfactor 0, on "STU");comment on table "TEST"."STU" is '学员信息表';comment on column "TEST"."STU"."id" is '学号';comment on column "TEST"."STU"."name" is '姓名';comment on column "TEST"."STU"."sex" is '性别';comment on column "TEST"."STU"."age" is '年龄';comment on column "TEST"."STU"."tel" is '电话';comment on column "TEST"."STU"."address" is '家庭住址';// 如何查察表在哪个表空间SQL> select table_name,tablespace_name from dba_tables where table_name='STU';行号     TABLE_NAME TABLESPACE_NAME---------- ---------- ---------------1          STU        STU// 如何查察表有哪些约束SQL> select table_name,constraint_name,constraint_type from dba_constraints where table_name='STU';行号     TABLE_NAME CONSTRAINT_NAME CONSTRAINT_TYPE---------- ---------- --------------- ---------------1          STU        CONS134218775   P2          STU        CONS134218774   U
复制代码
案例2:创建表的时候指定约束
  1. SQL> create table test.t2(id int);SQL> alter table test.t2 modify id int not null;// 上面两条语句等价于SQL> create table test.t3(id int not null);// 唯一约束SQL> create table test.t4(id int unique);// 主键约束SQL> create table test.t5(id int primary key);SQL> create table test.t6(id int);SQL> alter table test.t6 add constraint t6_pri primary key(id);// 查抄约束SQL> create table test.t8(id int);SQL> alter table test.t8 add constraint t9_check check(id>=5);SQL> create table test.t7(id int check(id>=5));// 外键约束SQL> create table test.t9(sid int primary key,pid int);SQL> create table test.t10(id int primary key, sid int foreign key references test.t9(sid));// 增加备注SQL> comment on column test.t2.id is '编号';
复制代码
导入SQL数据
  1. 登任命户:./disql testuser/dameng123查察用户:SQL> select user执行下令:SQL> start /dm8/data/backup/dmhr.sql                SQL> commit;
复制代码
(3)视图
  1. 分类:简单视图、复杂视图、物化视图注:简单视图和复杂视图不占用磁盘空间创建视图SQL> create view v1 as select * from dmhr.employee;视图查察SQL> select * from v1 limit 2;行号     EMPLOYEE_NAME JOB_ID---------- ------------- ------1          马学铭     112          程擎武     21查察视图SQL> select view_name,text from dba_views where view_name='V1';行号     VIEW_NAME TEXT                                           ---------- --------- -----------------------------------------------1          V1         SELECT EMPLOYEE_NAME,JOB_ID FROM DMHR.EMPLOYEE修改视图SQL> create or replace view v1 as select employee_name from dmhr.employee;SQL> select view_name,text from dba_views where view_name='V1';行号     VIEW_NAME TEXT                                    ---------- --------- ----------------------------------------1          V1         SELECT EMPLOYEE_NAME FROM DMHR.EMPLOYEE删除视图SQL> drop view v1;
复制代码
(4)索引
  1. 达梦的分类:二级索引,唯一索引,复合索引,函数索引,分区索引等默认的表是索引组织表,使用rowid创建一个默认的索引,所以我们创建的索引是二级索引查察索引SQL> select table_name,index_name from dba_indexes where table_name='T11';行号     TABLE_NAME INDEX_NAME   ---------- ---------- -------------1          T11        INDEX33555483索引的作用:加速表的查询,对数据库做DML操纵的时候,数据库会自动维护索引。索引是一棵倒置的树,使用索引,就是对这个索引树举行遍历。创建索引的规则:  1、经常查询的列  2、连接条件列  3、谓词经常出现的列(where)  4、查询是返回表的一小部门数据 不适合创建索引的情况:  1、列上有大量的null  2、列上的数据有限(比方:性别)创建索引// 1.规划索引表空间// 2.表的数据是无须的,索引的数据是有序的案例:复制dmhr.employee为emp,给employee_id创建所以// 创建表SQL> create table test.emp as select * from dmhr.employee;// 创建表空间SQL> create tablespace indx datafile '/dm7/data/DAMENG/indx01.dbf' size 32;// 创建索引SQL> create index ind_mep on test.emp(employee_id) tablespace indx;查询索引SQL> select table_name,index_name from dba_indexes where table_name='EMP';行号     TABLE_NAME INDEX_NAME   ---------- ---------- -------------1          EMP        INDEX335554842          EMP        IND_MEP维护索引// 重建索引SQL> alter index ind_emp rebuild;// 删除索引SQL> drop index ind_emp;
复制代码
五、备份、还原
物理备份:
​ 冷备:dmap服务打开的状态下,数据库是关闭的
  1. root用户关闭数据库:systemctl stop DmServiceDMSERVER.service切换dmdba用户:su - dmdba进入/dm8/bin:cd /dm8/bin 执行:./dmrmanRMAN> backup database ‘/dm8/data/DAMENG/dm.ini’ full;(生成.bak  .meta文件)
复制代码
(2)还原
  1. root用户关闭数据库:systemctl stop DmServiceDMSERVER.service切换dmdba用户:su - dmdba进入/dm8/bin:cd /dm8/bin 执行:./dmrmanRMAN> restore database ‘/dm8/data/DAMENG/dm.ini’from backupset ‘/dm8/data/DAMENG/bak/DB_DAMENG_FULL_20200821_160405_556837’RMAN> recover database ‘/dm8/data/DAMENG/dm.ini’ update db_magic;(更新魔数)
复制代码
  1. ​ 热备:dmap服务一定是打开的,数据库是打开的,数据库要开归档
复制代码
逻辑备份:
​ 导入:dexp
导出:dimp
  1. 启动数据库:DmServiceDMSERVER startdexp:cd /dm8/bin./dexp help导出:./dexp userid=sysdba/deng123:5236 directory=/dm8/data/back file=dexpDAMENG_fulltest.dmp log=dexpDAMENG.log full=y导入:./dimp userid=sysdba/SYSDBA:5236 directory=/dm8/data/back file=dexpDAMENG_fulltest.dmp log=dexpDAMENGimp.log full=y
复制代码
六、DMSQL
  1. SQL:结构化查询语句DDL:界说语句 create、drop、alter、truncateDML:管理语句 select、update、delete,insertDCL:控制语句 grant、revokeTCL:事务控制 commit、rollback
复制代码
(1) 简单查询
  1. // 语法:select () from ()// 第一个括号:*,column_name,alias,expr,||,distinct// 第二个括号:table_nameSQL> select * from dmhr.city;SQL> select city_id,city_name from dmhr.city;SQL> select employee_name,salary as tol from dmhr.employee limit 10;SQL> select employee_name,salary+1000 from dmhr.employee limit 10;SQL> select employee_name||'的工资是:'||salary as desc1 from dmhr.employee limit 2;行号     DESC1                        ---------- -----------------------------1          马学铭的工资是:300002          程擎武的工资是:9000SQL> select distinct department_id from dmhr.employee;
复制代码
(2) 过滤查询
  1. // 语法:select () from () where ();// 第一个括号:*, column_name,alias, expr,||, distinct// 第二个括号:table_name// 第三个括号:过滤条件// 比力查询:=,!=,>,>=,= 25000;行号     EMPLOYEE_NAME SALARY     ---------- ------------- -----------1          马学铭     300002          苏国华     300003          郑晓同     30000// 逻辑运算:and,orSQL> select employee_name,salary from dmhr.employee where employee_name='马学铭';行号     EMPLOYEE_NAME SALARY     ---------- ------------- -----------1          马学铭     30000SQL> select employee_name,salary from dmhr.employee where employee_name='马学铭' or employee_name='苏国华';行号     EMPLOYEE_NAME SALARY     ---------- ------------- -----------1          马学铭     300002          苏国华     30000// 含糊查询:like %匹配0个或多个字符;_匹配1个字符SQL> select employee_name,salary from dmhr.employee where employee_name like '王%' limit 2;行号     EMPLOYEE_NAME SALARY     ---------- ------------- -----------1          王岳荪     50002          王金玉     3133SQL> select employee_name,salary from dmhr.employee where employee_name like '王_' limit 2;行号     EMPLOYEE_NAME SALARY     ---------- ------------- -----------1          王辉        96852          王欣        9755// is null,is not nullSQL> select employee_name,commission_pct from dmhr.employee where commission_pct is not null limit 2; 行号     EMPLOYEE_NAME COMMISSION_PCT---------- ------------- --------------1          马学铭     02          程擎武     0// in 摆列SQL> select employee_name,salary from dmhr.employee where employee_name in ('陈仙','郑吉群','马学铭','程擎武');行号     EMPLOYEE_NAME SALARY     ---------- ------------- -----------1          马学铭     300002          程擎武     90003          郑吉群     150004          陈仙        12000// between...andSQL> select employee_name,salary from dmhr.employee where salary between 20000 and 30000;行号     EMPLOYEE_NAME SALARY     ---------- ------------- -----------1          马学铭     300002          苏国华     300003          郑晓同     30000// 排序SQL> select employee_name,salary from dmhr.employee order by salary desc;
复制代码
(3) 多表查询
  1. // 语法:select () from () join() on ().// 第三个括号:表名// 第四个括号:关联字段// 内连接 自然连接SQL> select e.employee_name,d.department_name from dmhr.employee e natural join dmhr.department d limit 2; 行号     EMPLOYEE_NAME DEPARTMENT_NAME---------- ------------- ---------------1          马学铭     总司理办2          林子程     技能支持部SQL> select e.employee_name,d.department_name from dmhr.employee e join dmhr.department d using(department_id) limit 2;  行号     EMPLOYEE_NAME DEPARTMENT_NAME---------- ------------- ---------------1          马学铭     总司理办2          程擎武     行政部SQL> select e.employee_name,d.department_name from dmhr.employee e join dmhr.department d on e.department_id=d.department_id limit 2; 行号     EMPLOYEE_NAME DEPARTMENT_NAME---------- ------------- ---------------1          马学铭     总司理办2          程擎武     行政部
复制代码
(4) 外连接
  1. // 外连接-左外连接:把写在left join左边的全部显示,右边的只显示满意条件的,不满意条件的用Null取代。SQL> select e.employee_name,d.department_name from dmhr.employee e left join dmhr.department d on e.department_id=d.department_id limit 2; 行号     EMPLOYEE_NAME DEPARTMENT_NAME---------- ------------- ---------------1          马学铭     总司理办2          程擎武     行政部// 外连接-右外连接:把写在right join右边的全部显示,左边的只显示满意条件的,不满意条件的用Null取代。SQL> select e.employee_name,d.department_name from dmhr.employee e right join dmhr.department d on e.department_id=d.department_id limit 2; 行号     EMPLOYEE_NAME DEPARTMENT_NAME---------- ------------- ---------------1          马学铭     总司理办2          陈辰        总司理办// 外连接-全外连接SQL> select e.employee_name,d.department_name from dmhr.employee e full join dmhr.department d on e.department_id=d.department_id limit 2; 行号     EMPLOYEE_NAME DEPARTMENT_NAME---------- ------------- ---------------1          马学铭     总司理办2          程擎武     行政部
复制代码
(5) 分组查询
  1. // 语法:select 聚合函数 () from () group by () having();// 聚合函数:sum,avg,max,min,count// 算出各个部门的匀称工资SQL> select avg(salary),department_id from dmhr.employee group by department_id having avg(salary)>=16000;行号     AVG(SALARY)  DEPARTMENT_ID---------- ------------ -------------1          16589.500000 3032          19252.841270 703// 算出各个部门的工资和,找出部门工资和大于500000的部门。SQL> select department_id,sum(salary) from dmhr.employee group by department_id having sum(salary)>500000;        行号     DEPARTMENT_ID SUM(SALARY)         ---------- ------------- --------------------1          703           24258582          705           564024// 注:having是分组后的数据举行过虑,不能单独使用,having前面一定是有group by。// 注:在select后出现的列,都要出现在group by后,聚合函数列不算。
复制代码
(1) 子查询
  1. // 子查询的结果是主查询的条件,子查询先于主查询运行。// a.返回值是唯一的。//   语法:select () from () where () = ()// 找出和马学铭同一个部门的人员SQL> select employee_name,department_id from dmhr.employee where department_id=(select department_id from dmhr.employee where employee_name=&#39;马学铭&#39;);行号     EMPLOYEE_NAME DEPARTMENT_ID---------- ------------- -------------1          马学铭     1012          陈辰        1013          杨毓        1014          严云飞     1015          郑旭明     101// b.返回值是多行的//   语法:select () from () where () >/< any/all ();// 找出比1002部门所有人员工资都高的人select employee_name,department_id,salary from dmhr.employee where salary >all(select salary from dmhr.employee where department_id=1002);
复制代码
来源:https://blog.csdn.net/weixin_47437763/article/details/111998299
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )