SQL语句基础知识
已知商品信息建立的2个表,回答下列问题
表名:商品表 | |
---|---|
字段名 | |
商品号 | PK |
商品名称 | |
单价 | |
表名:销售表 | |
字段名 | 说明 |
商品号 | FK |
销售时间 | d.14 |
销售数量 |
请写出商品“袜子”的单价
SELECT 单价 FROM 商品表 WHERE 商品名称 = '袜子'
请写出“2017年12月31日”,商品“袜子”销售的数量。
SELECT 销售数量
FROM 销售表
WHERE 商品号 = (SELECT 商品号 FROM 商品表 WHERE 商品名称 = '袜子')
AND 销售时间 = TO_DATE('2017-12-31','YYYY-MM-DD')
已知员工部门表,回答问题
CREATE TABLE Department(
dept_id varchar(2) NOT NULL, --部门编号
dept_name varchar(20) NOT NULL, --部门名称
dept_leader varchar(10) --部门经理
);
CREATE TABLE Personnel(
id varchar(4) NOT NULL, --员工号
name varchar(10) NOT NULL, --姓名
dept_id varchar(2) NOT NULL,--部门编号
age integer, --年龄
gzsj DATE, --参加工作时间
technical_post varchar(10), --职称
salary integer --薪水
)
写出表Department增加一条记录和更新一条记录的SQL
新增:部门编号:12,部门名称:实施部,部门经理张三
修改:将部门经理名称更新为:张三新
insert into Department values ('12','实施部','张三')
UPDATE Department SET dept_leader = '张三新' WHERE dept_id = '12'
给表Department_MS增加一个字段memo,长度为10的字符串,默认值为0
ALTER TABLE Department ADD(MEMO VARCHAR(10) DEFAULT '0')
查找工资大于2000元的员工记录,并按照员工号升序排列
SELECT * FROM Personnel WHERE salary > 2000 ORDER BY id
查找工资大于2000元的员工所在部门、部门编号、部门经理、员工姓名。
SELECT A.employee_id,A.first_name , B.department_NAME,B.department_ID
FROM employees A ,(SELECT department_NAME,department_ID
FROM departments
WHERE department_id IN(
SELECT department_id
FROM employees A
WHERE salary > 2000
) )B
WHERE A.department_id = B.department_id
AND salary > 2000
查找张三和李四所在部门所有人员的姓名
SELECT * FROM PERSONNEL
WHERE DEPT_ID IN(
SELECT DEPT_ID FROM PERSONNEL WHERE NAME IN('张三','李四')
)
查看每个部门的部门经理和部门人数,按部门人数排序
SELECT B.DEPT_ID,A.DEPT_NAME,A.DEPT_LEADER,人数
FROM DEPARTMENT A ,(SELECT DEPT_ID,COUNT(*) AS "人数" FROM PERSONNEL GROUP BY DEPT_ID) B
WHERE A.DEPT_ID = B.DEPT_ID
ORDER BY 人数
删除表Department中的所有记录
执行速度,一般来说: drop> truncate > delete。
delete from Department
truncate TABLE Department
删除表Department
drop TABLE Department
解释Oracle数据库、数据文件、表空间?
Oracle数据库:
数据文件:
表空间:
计算机基础
数据库分为哪几类及特点
关系型数据库和非关系型数据库
关系型数据库:
- 复杂查询 可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询。
- 事务支持 使得对于安全性能很高的数据访问要求得以实现。
非关系型数据库:
- 基于键值对存储数据,不需要经过SQL层 的解析, 性能非常高 。
sql语句truncate table pat_in;delete from pat_in;以上二句话区别
-
内存空间
truncate删除数据后重新写数据会从1开始,而delete删除数据后只会从删除前的最后一行续写;内存空间上,truncate省空间 -
处理速度
因为,truncate是直接从1开始,即全部清空开始,而delete需要先得到当前行数,从而进行续写;所以truncate删除速度比delete快; -
语句类型
delete属于DML语句,所以可以进行回滚和提交操作;而truncate和drop都属于DDL语句,在事务中,执行后会自动commit,所以不可以回滚 -
语法
delete from 表名 (where…可写可不写,写的话进行选择性删除,不选清空表中数据)truncate 表名(删除表中的数据,无法回滚的)
delete可以在后续加上where进行针对行的删除
truncate和drop后面只能加上表名,直接删除表,无法where
注意:并且drop和truncate不能够激活触发器,因为该操作不记录各行删除;
drop table 表名 删除表,内容连带结构一起删除;
写出下边sql语句含义
select a.name,b.departname
from dict_user a,dict b
where a.departid = b.departid
and b.departname like '内%'
and a.name like '%蕾%'
and convert(char(10),brid,120) > '1996-01-01'
查询部门以内开头的,姓名中包含蕾且出生日期在1996-01-01以后的人员名称和部门名称
病人信息表(编码,姓名,性别,生日,地址身份证,科室名称,预交费,费用,余额)写出性别男,2018年上半年出生人费用合计
SELECT SUM(费用)
from BRXX
WHERE SEX = '男'
AND BRID > TO_DATE('2017-12-31','YYYY-MM-DD')
AND BRID < TO_DATE('2017-07-01','YYYY-MM-DD')
病人信息表(编码,姓名,性别,生日,地址身份证,科室名称,预交费,费用,余额),取年龄大于60,预交费减免20%
SELECT NAME ,YJJ,YJJ*0.8 FROM BRXX WHERE AGE > 60
网络七层协议
应用层,表示层,会话层,传输层,网络层,数据链路层,物理层
网线568b线序
橙白,橙,绿白,蓝,蓝白,绿,棕白,棕
交换机、路由器区别
- 路由器可以给你的局域网自动分配IP,虚拟拨号。交换机只是用来分配网络数据的。
- 路由器在网络层,路由器根据IP地址寻址,路由器可以处理TCP/IP协议,交换机不可以。交换机在中继层,交换机根据MAC地址寻址。
- 路由器可以把一个IP分配给很多个主机使用,这些主机对外只表现出一个IP。交换机可以把很多主机连起来,这些主机对外各有各的IP
- 路由器提供防火墙的服务,交换机不能提供该功能。集线器、交换机都是做端口扩展的,就是扩大局域网(通常都是以太网)的接入点,也就是能让局域网可以连进来更多的电脑。 路由器是用来做网间连接,也就是用来连接不同的网络。
计算机几部分组成
计算器、控制器、存储器、输入和输出设备
Windows server,centos描述一下这两服务器操作系统区别
linux操作系统一般使用命令行来管理服务器,很少会有图形界面,因为图形界面占用资源为了提升性能大部分服务器都不会有图形界面。服务器都是专业人员来管理,所以没有图形界面并不会影响linux操作系统的管理效率,有些时候反而管理更加方便,因为安装软件,配置文件很可能一行命令就可以了。
windows server服务器操作系统和我们常用的window基本上是一样的,他拥有图形界面,可以通过可视化操作图形。相比PC使用的windows操作系统,他的区别是有更多管理服务器的功能和更多安全选项。
表,视图区别
-
视图和表的区别?
- 视图是虚拟的表,视图展示的数据来自于 基本表。
- 视图中不存储具体的数据,而存储的是sql逻辑,基本表的数据发生改变,视图的展示结果也会随着发生改变,它占用少量的物理空间;而表中保存的是数据,占用大的物理空间;
- 对视图的操作跟普通表是一样的,如:创建视图,删除视图。。视图的建立create和删除drop只影响视图本身,不影响对应的基本表。
- 若视图中的字段数据是来自于基表的话,一般是可以对视图中的数据 进行更新的,对视图数据进行添加、删除和修改操作会直接影响基本表。其他情况不允许更新,如:若视图中的字段使用了函数avg(age)等,就不能进行更新;
- 视图的使用:一般都是把基表的子查询sql语句 封装成视图,方便使用,而且更高效。
- 隐藏一些不想展示给用户的数据。只展示必要的数据。如:社会保险基金表,可以用视图只显示姓名,地址,而不显示社会保险号和工资数等。
-
两者的联系
视图是基于基本表上建立的表,它的结构和内容都来自基本表,它依据基本表存在而存在。一个视图可以对应一个基本表,也可以对应多个基本表。 -
视图的两种查询机制——创建视图时进行指定使用哪种视图查询机制
- 替代式merge:当使用视图进行查询时,实际上是把查询视图的sql语句 转换成一个 带有子查询的sql语句,然后再进行查询。(即:一步到位:更加高效,,不像具化式,还得在内存中再搞一个临时表)
此种机制下,你对视图更新,同时会更新基本表的数据。 - 具化式:是先把视图查出来,作为一个临时的表放到内存中,然后 再对临时表进行一个查询。(即:分两个步骤)
此种机制下,对视图更新只是对内存中的临时表进行的更新,基本表不会更新。(不能对视图进行更新)
- 替代式merge:当使用视图进行查询时,实际上是把查询视图的sql语句 转换成一个 带有子查询的sql语句,然后再进行查询。(即:一步到位:更加高效,,不像具化式,还得在内存中再搞一个临时表)
-
创建视图时的选项:
- 若创建视图时,指定了with check option的选项,那么在更新视图时,就会检测你的更新操作是否满足视图的条件。不满足,就不让你进行一个更新。
如这个视图都是 salary > 2000的,那么你就不能往视图中插入一个salary为1000的记录。
- 若创建视图时,指定了with check option的选项,那么在更新视图时,就会检测你的更新操作是否满足视图的条件。不满足,就不让你进行一个更新。
-
哪些视图是可更新的,哪些是不可更新的?
主要 构建视图的语句中 出现如下的东西,此视图都不可以更改。
如何计算2020年1月12号到2020年2月18号 天,时,分,秒。描述算法或函数
DATEDIFF函数返回天
SELECT DATEDIFF('2022-01-01','2022-05-27') TIME
TIMESTAMPDIFF函数
时间粒度参数:
2/SECOND--秒:计算开始时间与结束时间相差的秒数。
4/MINUTE--分:计算开始时间与结束时间相差多少分钟。
8/HOUR--小时:计算开始时间与结束时间相差多少小时。
16/DAY--天:计算开始时间与结束时间相差的天数。
32/WEEK--周:计算开始时间与结束时间相差的周数。
64/MONTH--月:计算开始时间与结束时间相差多少月。
128/QUARTER--季:计算开始时间与结束时间相差的季度数。
256/YEAR--年:计算开始时间与结束时间相差的年数
SELECT TIMESTAMPDIFF(SECOND,'2022-01-01','2022-05-27')
oracle数据库计算时间差
两个Date类型字段:START_DATE,END_DATE,计算这两个日期的时间差
语法:ROUND(TO_NUMBER(END_DATE - START_DATE))
释义:END_DATE为截止日期,START_DATE为开始日期
例如:
天:
ROUND(TO_NUMBER(END_DATE - START_DATE))
小时:
ROUND(TO_NUMBER(END_DATE - START_DATE) * 24)
分钟:
ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60)
秒:
ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60 * 60)
毫秒:
ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60 * 60 * 1000)
重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类型进行区分
重载 overload
-
定义:重载发生在同一个类中,要求方法名相同,参数列表不同(参数个数或类型不同),返回值类型与修饰符无限制。
-
注意点
- 必须在同一个类中;
- 一个方法可以有多个重载方法;
- 多用于构造器的重载;
- 方法名一定要相同,参数列表一定不同(再次强调了,很重要)。
-
何时用
在调用同一个类中的方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法。实现同一方法多种使用。 -
案例
package test; /** * 测试方法的重载 */ public class Test01 { public static void main(String[] args) { method();//我和我的玩偶开心的玩耍 method(10);//这个玩偶陪伴我10年了! method("小小");//这个玩偶的名字是小小 } public static void method(){ System.out.println("我和我的玩偶开心的玩耍"); } public static void method(int x){ System.out.println("这个玩偶陪伴我"+x+"年了!"); } public static void method(String name){ System.out.println("这个玩偶的名字是"+name); } }
看上述,我的三个方法的名字都是相同的,但是参数个数和类型不同,当我们调用时通过传入的参数不同可以调用不同的方法,以满足个人的需求。
重写 override
-
定义
重写发生在父子个类中,遵循“两同两小一大”,基本方法名相同,参数列表相同,返回值类型和抛出的异常子类小于等于子类,修饰符子类要大于等于父类。 -
注意点
- 遵循“两同两小一大”;
- 对于返回值类型,若是八大基本类型,则字符类要求相同,若是引用类型,则子类小于等于父类;
- final和static修饰的类不能被重写,但是,被static修饰的类可以再次被声明;
- 构造方法不能被重写。
-
何时用
当子类继承了父类,但父类的方法不能满足子类要求时就重写该方法再继续使用。 -
案例
package test;
/**
* 测试方法的重写
*/
public class Test02 {
public static void main(String[] args) {
Animals a = new dog();
a.run();
}
}
class Animals{
public void run(){
System.out.println("小动物们正在赛跑");
}
}
class dog extends Animals {
public void run(){
super.run();//调用父类的run方法
System.out.println("小狗迈着四条腿在奔跑");
}
}
看上述案例,我需要具体小狗是如何奔跑的,很明显父类的方法不能满足我的要求,就通过重写run方法来满足要求。
补充:如果重写方法后,又想调用父类的run方法,通过“super.方法名()”来实现。如上述案例中的super.run()。
重载与重写的异同点
相同点
方法名都要求要相同。
不同点
1、定义的位置不同。重载在同一个类中;重写在父子类中。
2、参数列表要求不同。重载要求参数列表必须不同(个数或类型);重写参数列表一定要相同。
3、修饰符和返回值类型要求不同。重载不限制修饰符和返回值类型,可相同可不同;重写要求子类的修饰符必须大于等于父类的,返回值类型针对基本类型要求相同,对引用类型要求子类的小于等于父类。
tip:方法的重写(Overriding)和重载(Overloading)都是java多态性的不同表现。重写是父类与子类之间多态性的一种表现,重载是多态的具体表现形式之一。
面向对象的特征
面向对象的三大基本特征:封装、继承、多态
- 封装
封装就是隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别,将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。
封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,以特定的访问权限来使用类的成员。
面相对象的不就是使用程序处理事情时以对象为中心去分析吗,与面向过程不同,面向过程关心处理的逻辑、流程等问题,而不关心事件主体。而面向对象即面向主体,所以我们在解决问题时应该先进行对象的封装(对象是封装类的实例,比如张三是人,人是一个封装类,张三只是对象中的一个实例、一个对象)。比如我们日常生活中的小兔子、小绵羊都可以封装为一个类。比如兔子的属性有两只耳朵、四只腿、一双眼睛、三瓣嘴等;行为(功能)有跑、跳、吃素等。
-
继承
继承是面向对象的基本特征之一,继承机制允许创建分等级层次的类。继承就是子类继承父类的属性(特征)和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。我们在上面已经封装了兔子这个类,其他动物也一样可以进行封装。在封装过程中我们发现兔子、绵羊这两个类具有相似的功能或特性如吃草,所以我们可以抽取共有特征和方法形成高一层的类,如这里的食草动物、食肉动物。继承之间是子父类的关系。继承机制可以很好的描述一个类的生态,也提高了代码复用率,在Java中的Object类是所有类的超类,常称作上帝类。
-
多态
多态同一个行为具有多个不同表现形式或形态的能力。是指一个类实例(对象)的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式予以调用。
面向对象的五大基本原则
-
单一职责原则(SRP)
一个类应该有且只有一个去改变它的理由,这意味着一个类应该只有一项工作。比如在职员类里,将前端程序员、后端程序员、销售经理、售后服务等多种情况都放在职员类里,会导致代码非常混乱,在这个假设中,职员类里的每个方法都要判断是哪种类别、什么情况,从类结构上来说将会十分臃肿且复杂。
-
开放封闭原则(OCP)
对象或实体应该对扩展开放,对修改封闭。更改封闭即是在我们对模块进行扩展时,无需对源有程序代码和DLL进行修改或重新编译文件。这个原则对我们在设计类的时候很有帮助,坚持这个原则就必须尽量考虑接口封装,抽象机制和多态技术。
-
里氏替换原则(LSP)
即对父类的调用同样适用于子类在对象 x 为类型 T 时 q(x) 成立,那么当 S 是 T 的子类时,对象 y 为类型 S 时 q(y) 也应成立。
-
依赖倒置原则(DIP)
高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。具体实现应该依赖于抽象,而不是抽象依赖于实现。可以这样理解,上面我举例子的时候先说了兔子和绵羊,然后才推出食草动物。但如果我们继续认识了牛、马等食草动物,我们会发现我们需要不断调整食草动物的描述,这样程序会变得僵化,所以我们不应该让子类依赖于实体,不应该让父类模块依赖于子类模块。所以我们需要将食草动物设计为抽象类,即抽象类或接口。这样下层只需要实现相应的细节而不会影响父类。
-
接口隔离原则(ISP)
不应强迫客户端实现一个它用不上的接口,或是说客户端不应该被迫依赖它们不使用的方法,使用多个专门的接口比使用单个接口要好的多!比如,为了减少接口的定义,将许多类似的方法都放在一个接口中,最后会发现,维护和实现接口的时候花了太多精力,而接口所定义的操作相当于对客户端的一种承诺,这种承诺当然是越少越好,越精练越好,过多的承诺带来的就是你的大量精力和时间去维护!
你是否熟悉Linux操作系统,是否搭建过Linux操作系统,请描述下/home、/root、/opt目录?
- /bin:bin是Binary的缩写, 这个目录存放着最经常使用的命令。
- /boot: 这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
- /dev : dev是Device(设备)的缩写, 存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
- /etc: 这个目录用来存放所有的系统管理所需要的配置文件和子目录。
- /home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
- /lib:这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。
- /lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
- /media:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
- /mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
- /opt:这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
- /proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
- /root:该目录为系统管理员,也称作超级权限者的用户主目录。
- /sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
- /srv:该目录存放一些服务启动之后需要提取的数据。
- /sys:这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。
- /tmp:这个目录是用来存放一些临时文件的。
- /usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
- /usr/bin: 系统用户使用的应用程序。
- /usr/sbin: 超级用户使用的比较高级的管理程序和系统守护程序。
- /usr/src: 内核源代码默认的放置目录。
- /var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
- /run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。
你了解那些中间件?应用过那些中间件。如何查看中间件日志记录?
你熟悉那种计算机语言?请用你熟悉的计算机语言编写以下一段程序
有两个字符串:A='123456789’和B=‘abcdefg’,编写一个函数或过程;实现从A串中取出字符串与B串中取出的字符串组成一个新的字符串C=‘2345cde’
学生表,完成以下问题
成绩表(score)
name | subject | score | stuid |
---|---|---|---|
张三 | 数学 | 89 | 1 |
张三 | 语文 | 80 | 1 |
张三 | 英语 | 70 | 1 |
李四 | 数学 | 90 | 2 |
李四 | 语文 | 70 | 2 |
王五 | 数学 | 70 | 3 |
班级表(class)
name | class | stuid |
---|---|---|
张三 | 1班 | 1 |
李四 | 2班 | 2 |
王五 | 2班 | 3 |
查询每个人的总成绩
SELECT NAME ,SUM(SCORE) FROM SCORE GROUP BY NAME
查询班级每个人总成绩平均分
SELECT `NAME` ,AVG(SCORE) FROM SCORE GROUP BY `NAME`
查询内容:班级、姓名、科目、成绩
SELECT CLASS "班级",B.NAME "姓名",SUBJECT "科目",SCORE "成绩"
FROM CLASS A,SCORE B WHERE A.STUID = B.STUID
查询每个班级中总成绩最高的人
select stuid,max(sum_sal) from
(SELECT NAME ,sum(score) sum_sal,stuid from score group by name) sum_score
group by stuid
给张三的英语成绩加10分
UPDATE SCORE SET SCORE = SCORE + 10 WHERE subject = '英语'
查询每个学生成绩最高的科目和分数
SELECT NAME,MAX(SCORE),SUBJECT FROM SCORE GROUP BY NAME
---------
SELECT STU_MAX_SCO.NAME,max_scr,subject
from score,(SELECT NAME,MAX(SCORE) max_scr FROM SCORE GROUP BY NAME) STU_MAX_SCO
where score.name = STU_MAX_SCO.NAME
and score = STU_MAX_SCO.max_scr
查询只考了一科的人
select name from score group by name having count(*) = 1
实施基础
名词解释
- Data:数据
- Database:数据库
- RDBMS:关系数据库管理系统
- Transaction:事务
- Trigger:触发器
- Unqiue:唯一
- Primary Key:主键
- Identity:自增
- Foreign Key:外键
- View:视图
- Procedure:存储过程
- ICMP:互联网控制报文协议
- TFTP:简单文件传输协议
- HTTP:超文本传输协议
- DHCP:动态主机配置协议
编写SQL
- 创建一张学生表,包含以下信息,学号,姓名,年龄,性别,家庭住址,联系电话;
CREATE TABLE STU_BR (
ID INT ,
NAME VARCHAR(10),
AGE INT ,
SEX INT ,
ADDRESS VARCHAR(50),
PHONE VARCHAR(20)
)
- 修改学生表结构,添加一列信息,学历;
ALTER TABLE STU_BR ADD EDU VARCHAR(10)
- 修改学生表的结构信息,删除一列信息,家庭住址;
ALTER TABLE STU_BR DROP COLUMN ADDRESS
- 向学生表添加如下信息:
学号 | 姓名 | 年龄 | 性别 | 联系电话 | 学历 |
---|---|---|---|---|---|
1 | A | 22 | 男 | 123456 | 小学 |
2 | B | 21 | 男 | 119 | 中学 |
3 | C | 23 | 男 | 110 | 高中 |
4 | D | 18 | 女 | 114 | 大学 |
INSERT INTO STU_BR VALUES (1,'A',22,'男','123456','小学');
INSERT INTO STU_BR VALUES (2,'B',22,'男','119','中学');
INSERT INTO STU_BR VALUES (3,'C',22,'男','110','高中');
INSERT INTO STU_BR VALUES (4,'D',22,'女','114','大学');
- 修改学生表的数据,将电话号码以11开头的学员的学历改为“大专”
UPDATE STU_BR SET EDU = '大专' WHERE PHONE LIKE '11%'
- 删除学生表的数据,姓名以C开头,性别为“男”的记录删除
DELETE FROM STU_BR WHERE NAME LIKE 'C%' AND SEX = '男'
- 查询学生表的数据,将所有年龄小于22岁的,学历为“大学”的学生的姓名和学号显示出来
SELECT NAME,ID FROM STU_BR WHERE AGE < 22 AND EDU = '大专'
-
查询学生表的数据,查询所有信息,列出前25%的记录;
-
查询出所有学生的姓名,性别,年龄降序排列;
SELECT NAME ,SEX,AGE FROM STU_BR ORDER BY NAME DESC
- 按照性别分组查询所有的平均年龄;
SELECT AVG(AGE) FROM STU_BR GROUP BY AGE
- 事务开始
以第一个 DML 语句的执行作为开
- 事务提交
COMMIT
- 事务回滚
ROLLBACK
- 表PatientResult
PateintName | Sex | Age | Examltem | Result |
---|---|---|---|---|
张三 | 男 | 24 | 身高 | 175cm |
张三 | 男 | 24 | 体重 | 70kg |
张三 | 男 | 24 | 收缩压 | 80HHmg |
张三 | 男 | 24 | 舒张压 | 110HHmg |
李四 | 男 | 36 | 身高 | 170cm |
李四 | 男 | 36 | 体重 | 68kg |
李四 | 男 | 36 | 收缩压 | 78HHmg |
李四 | 男 | 36 | 舒张压 | 118HHmg |
请使用SQL语句将PatientResult表转换成下表格式
PateintName | Sex | Age | 身高 | 体重 | 收缩压 | 舒张压 |
---|---|---|---|---|---|---|
张三 | 男 | 24 | 175cm | 70kg | 80HHmg | 110HHmg |
李四 | 男 | 36 | 170cm | 68kg | 78HHmg | 118HHmg |
SELECT
DISTINCT A.PateintName,
A.Sex,
A.Age,
B.`身高`,
C.`体重`,
D.`收缩压`,
E.`舒张压`
FROM PatientResult A,
(select PateintName, Result as "身高" FROM PatientResult where Examltem = '身高') B,
(select PateintName, Result as "体重" FROM PatientResult where Examltem = '体重') C,
(select PateintName, Result as "收缩压" FROM PatientResult where Examltem = '收缩压') D,
(select PateintName, Result as "舒张压" FROM PatientResult where Examltem = '舒张压') E
WHERE A.PateintName = B.PateintName
AND A.PateintName = C.PateintName
AND A.PateintName = D.PateintName
AND A.PateintName = E.PateintName
-
机器A的IP地址为202.96.128.130,子网掩码为255.255.255.128,则该IP地址的网络号是?主机号是?
-
端口及对应的服务:
FTP端口号:21 服务名称: ,
23端口是: telnet 开放的默认端口;
1433端口是: SQL Server 开放的默认端口;Oracle数据库的默认端口号是:1521
-
怎么查看jdk版本?怎么确定Java环境变量配置好了?
java -version
-
http默认端口是:80 https默认端口是: 443
-
Nginx项目统一入口端口在哪里?怎么确定Nginx已经启动?常用命令如重启命令,关闭命令,启动命令
-
Redis打不开闪退处理方法是什么?
-
执行Java包的命令?
尚硅谷
查询每个部门下的部门人数大于5的部门名称
#方式一
SELECT *
FROM departments
WHERE department_id IN(
SELECT department_id
FROM EMPLOYEES
GROUP BY department_id
HAVING COUNT(*) > 5
)
#方式二
SELECT *
FROM departments D
WHERE 5 < (
SELECT COUNT(*)
FROM EMPLOYEES
WHERE EMPLOYEES.department_id = D.department_id
)