mysql的简单语言的简单应用-创建表单-select操作-日期格式-

打开heidisql,进入一个新的数据库。
在这里插入图片描述
数据库里最初是没有表单的

需要我们要向数据库里面create新的表单,分别是bonus,dept,emp

并且在导入表单后插入数据
在这里插入图片描述
在这里插入图片描述
简单的查看后,数据已经被导入到表单中

接着我们创建新的表单及其约束,表单名字为infos

表单名字为infos
创建完成后,我们再对scores进行操作
在这里插入图片描述
现在表单中还没有数据,我们向表单中手动添加数据
在这里插入图片描述
插入数据的时候我们发现SYSDATE显示 unknown column ,上网搜了一下,这里的SYSDATE本意应该是向表单中插入一个当前时间,这个SYSDATE是Oracle的函数,在HeidiSQL相应的函数是CURDATE(),然后我们将其改成CURDATE()就成功填入表单了。


在这里插入图片描述
现在我们对orders这个表单进行操作

select 
	order_num
from orders
where year(order_date) = 2021 -- 这个里面的year()函数也可以改成
                              -- extract(year from order_date)
order by order_num;

每个数据库里面有自己不同的函数,造成代码的可移植性很差,要根据不同的数据库选择不同的函数

拿日期来说,在Oracle里面可以用函数to_date,但是在MySQL里面只能使用str_to_date,并且后面的格式与Oracle不一样,在复制代码粘贴的时候总是遇到很多问题,需要我们一个个去手动调整

附个日期的格式,MySQL与Oracle日期格式的不同之处

1.mysql日期和字符相互转换方法
date_format(date,’%Y-%m-%d’) ————–>oracle中的to_char();
str_to_date(date,’%Y-%m-%d’) ————–>oracle中的to_date();
%Y:代表4位的年份
%y:代表2为的年份
%m:代表月, 格式为(01……12)
%c:代表月, 格式为(1……12)
%d:代表月份中的天数,格式为(00……31)
%e:代表月份中的天数, 格式为(0……31)
%H:代表小时,格式为(00……23)
%k:代表 小时,格式为(0……23)
%h: 代表小时,格式为(01……12)
%I: 代表小时,格式为(01……12)
%l :代表小时,格式为(1……12)
%i: 代表分钟, 格式为(00……59) 【只有这一个代表分钟,大写的I 不代表分钟代表小时】
%r:代表 时间,格式为12 小时(hh:mm:ss [AP]M)
%T:代表 时间,格式为24 小时(hh:mm:ss)
%S:代表 秒,格式为(00……59)
%s:代表 秒,格式为(00……59)
2.例子:
select str_to_date(‘09/01/2009’,’%m/%d/%Y’)
select str_to_date(‘20140422154706’,’%Y%m%d%H%i%s’)
select str_to_date(‘2014-04-22 15:47:06’,’%Y-%m-%d %H:%i:%s’)

特别要注意的地方,这个时要区分大小写的。

在这里插入图片描述
这时候发现两个问题,阮小二的地址不详,班级错误,我们怎么才能对地址和班级进行更新呢?

我们可以使用 UPDATE 命令来操作。

语法:

UPDATE table_name SET field1=new-value1, field2=new-value2
[WHERE Clause]

现在来演示一下
在这里插入图片描述
F5刷新
在这里插入图片描述
更新表单之后,林冲因为出去买酒耽误了上课,教务处做出退学处理,需要把林冲从表单上移除,怎么实现呢?

可以使用delete语句

DELETE FROM table_name [WHERE Clause]

同样来实操下
在这里插入图片描述
在这里插入图片描述
现在林冲被退学了

另外我们还可以利用已有的表单做些新的事情
为了相应提高基本工资的号召,我们想要知道基本工资在 2000 元以上的员工姓名及其工资和不含奖金的年总工资信息,以方便统计哪些员工不需要提高工资水平。
键入以下代码

SELECT ENAME,SAL,SAL*12 AS Year_SAL
FROM emp
WHERE SAL>2000;

容易得到
在这里插入图片描述
如果我们还想看看这些员工的工作都是什么,只需要在后面加上JOB
在这里插入图片描述
大部分都是manager

接下来,我们还可以

查询 EMP 表中的员工所在部门编号;

查询出薪酬少于 2000 且没有发奖金的员工

查询工作职责是 SALESMAN、PRESIDENT 或 ANALYST 的员工

查询工资从 1000 到 2000 之间的员工

查询员工名称以 J 开头以 S 结尾的员工的姓名、工资和工资

查询出 DEPT 表中没有员工的部门编号

查询出月工资大于 2000 元的员工姓名、工作、工资,及其所在部门名称

前几个问题的解决比较简单,只需要在一个表里面就可以实现,所以把代码贴在一起

SELECT distinct DEPTNO
FROM emp;
SELECT ENAME
FROM emp
WHERE SAL<2000 AND COMM is NULL;
SELECT ENAME
FROM emp
WHERE JOB = 'SALESMAN' OR 'PRESIDENT' OR 'ANALYST';
SELECT ENAME
FROM emp
WHERE SAL BETWEEN 1000 AND 2000;
SELECT ENAME,SAL
FROM emp
WHERE ENAME LIKE  'J%S';

结果如图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后两个问题单独列出来

SELECT distinct dept.DEPTNO
FROM dept,emp
WHERE dept.DEPTNO NOT IN (
							SELECT distinct emp.DEPTNO
							FROM emp
							);

在这里插入图片描述
以及

SELECT ENAME,JOB,SAL,dept.DNAME
FROM emp,dept
WHERE emp.SAL>2000 AND emp.DEPTNO = dept.DEPTNO;

在这里插入图片描述
下面还有几个问题
1、查询出工作职责不是 SALESMAN、PRESIDENT 或 ANALYST 的员工姓名、工作、工资,及其所在部门名称。

SELECT ENAME,SAL,JOB,dept.DNAME
FROM emp,dept
WHERE emp.SAL>2000 AND emp.DEPTNO = dept.DEPTNO 
	AND (JOB NOT IN ('SALESMAN' , 'PRESIDENT' ,'ANALYST'))

在这里插入图片描述

2、换一种方法查询出工资大于 2000 元的员工姓名、工作、工资,及其所在部门名称。

SELECT ENAME,JOB,SAL,dept.DEPTNO
FROM emp,dept
WHERE SAL > 2000 AND  emp.DEPTNO = dept.DEPTNO
ORDER BY EMPNO;

在这里插入图片描述

3、查询出每个部门下的员工姓名和工资。

SELECT emp.ENAME,emp.SAL,emp.DEPTNO
FROM emp,dept
WHERE emp.DEPTNO = dept.DEPTNO
ORDER  BY emp.DEPTNO;

在这里插入图片描述

4、如果在步骤 2.4 中使用 sys 用户查询学生用户的 INFOS 表,能否查询到学生
用户 INFOS 表的添加、删除、修改操作?为什么?如果不同,如何才能让 sys 用
户查询到学生用户对 INFOS 表的添加、删除、修改操作?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值