MySQL(一)

一、MySQL基本命令

在windows操作系统当中,怎么使用命令来启动和关闭mysql服务呢?语法:
net stop 服务名称;
net start 服务名称;
其它服务的启停都可以采用以上的命令。

退出mysql:exit

查看mysql中有哪些数据库?
show databases;
注意:以分号结尾,分号是英文的分号在这里插入代码片

查看mysql中有哪些数据库?
在这里插入图片描述
默认有五个数据库。

怎么选择使用某个数据库呢?
mysql> use test;
(表示正在使用一个名字叫做test的数据库。)
然后若想查这个数据库有没有表,可以
mysql> show tables;

怎么创建数据库呢?
mysql> create database bjpowernode;
bjpowernode为创建数据库的名字

数据库当中最基本的单元是表:table
在这里插入图片描述
每一个字段都有:字段名、数据类型、约束等属性。

关于SQL语句的分类

SQL语句有很多,最好进行分门别类,这样更容易记忆。
	分为:
		DQL:
			数据查询语言(凡是带有select关键字的都是查询语句)
			select...

		DML:
			数据操作语言(凡是对表当中的数据进行增删改的都是DML)
			insert delete update
			insert 增
			delete 删
			update 改

			这个主要是操作表中的数据data。

		DDL:
			数据定义语言
			凡是带有create、drop、alter的都是DDL。
			DDL主要操作的是表的结构。不是表中的数据。
			create:新建,等同于增
			drop:删除
			alter:修改
			**这个增删改和DML不同,这个主要是对表结构进行操作。**

		TCL:(了解)
			不是王牌电视。
			是事务控制语言
			包括:
				事务提交:commit;
				事务回滚:rollback;

		DCL:(了解)
			是数据控制语言。
			例如:授权grant、撤销权限revoke....

导入一下提前准备好的数据:
mysql> source D:\course\03-MySQL\document\bjpowernode.sql
(先打一个source+空格然后将文件路径加文件名复制到后面,将sql文件成功导入)下图为导入的表
在这里插入图片描述

怎么查看表中的数据呢?
select * from 表名; 统一执行这个SQL语句。
mysql> select * from emp; == 从emp(员工表)表查询所有数据==
在这里插入图片描述
不看表中的数据,只看表的结构,有一个命令:
desc 表名;
mysql> desc dept;

查看当前使用的是哪个数据库:select database( );
(注意:mysql是不见分号不执行,每一句都要补分号)若要终止一条语句的输入,输入\c结束语句

二、查询语句

2.1 简单查询

查询一个字段?
select 字段名 from 表名;
mysql> select dname from dept;
其中要注意:
select和from都是关键字,字段名和表名都是标识符(例如表中部门名字)。另外SQL语句不区分大小写,都行。

查询两个字段,或者多个字段?
使用逗号隔开“,”例如查询部门编号和部门名?
select deptno,dname from dept;

查询所有字段怎么办?

	第一种方式:可以把每个字段都写上(实际开发建议这种)
		select a,b,c,d,e,f... from tablename;

	第二种方式:可以使用*
		select * from dept;

①给查询的列起别名?
mysql> select deptno,dname as deptname from dept;
使用as关键字起别名。(上句意思是查询deptno和dname,但是只是给后者dname起别名
注意:只是将显示的查询结果列名显示为deptname,原表列名还是叫:dname
记住:select语句是永远都不会进行修改操作的。(因为只负责查询)
as关键字可以省略,如下
mysql> select deptno,dname deptname from dept;
②假设起别名的时候,别名里面有空格,怎么办?
mysql> select deptno,dname dept name from dept;
DBMS看到这样的语句,进行SQL语句的编译,不符合语法,编译报错。怎么解决?
select deptno,dname ‘dept name’ from dept;(加单引号)
select deptno,dname “dept name” from dept; (加双引号)

计算员工年薪?sal * 12
mysql> select ename,sal from emp;(将员工名字和月薪查询出来)
mysql> select ename,sal12 from emp;(这样可以查出,名字和年薪,在sal12后面加名字也可以起别名,中文别名需要单引号括起来) // 结论:字段可以使用数学表达式!

2.2 条件查询

条件查询罱要用到where语句。where 必须放到from语句表的后面,支持如下运算符
在这里插入图片描述
条件查询不是将表中所有数据都查出来。是查询出来符合条件的。语法格式:
select 字段1,字段2,字段3…
from 表名
where 条件;

都有哪些条件?(等于小于不等于大于等等)

= 等于
查询薪资等于800的员工姓名和编号?
	select empno,ename from emp where sal = 800;
查询SMITH的编号和薪资?
	select empno,sal from emp where ename = 'SMITH'; //字符串使用单引号


查询薪资在2450和3000之间的员工信息?包括2450和3000
	第一种方式:>= and <= (and是并且的意思。)
		select empno,ename,sal from emp where sal >= 2450 and sal <= 3000;
		
		第二种方式:between … and …
		select empno,ename,sal from emp where sal between 2450 and 3000;		
		注意:
			使用between and的时候,必须遵循左小右大。
			between and是闭区间,包括两端的值。

查询哪些员工的津贴/补助为null?
mysql> select empno,ename,sal,comm from emp where comm = null;(报错)
mysql> select empno,ename,sal,comm from emp where comm is null;(对)
注意:在数据库当中null不能使用等号进行衡量。需要使用is null因为数据库中的null代表什么也没有,它不是一个值,所以不能使用等号衡量。那查询哪些员工的津贴/补助不为null?is not null

and 并且。查询工作岗位是MANAGER并且工资大于2500的员工信息?
select
empno,ename,job,sal
from
emp
where
job = ‘MANAGER’ and sal > 2500;(or或者同理)

and和or同时出现的话,有优先级问题吗?例如查询工资大于2500,并且部门编号为10或20部门的员工?
**答:and优先级比or高。以上语句会先执行and,然后执行or。如果想让or先执行,需要加“小括号”
**
在这里插入图片描述

in 包含,相当于多个 or ,注意:in不是一个区间。in后面跟的是具体的值。(not in 不在这个范围中),例如查询工作岗位是MANAGER和SALESMAN的员工?两种写法
select empno,ename,job from emp where job = ‘MANAGER’ or job = ‘SALESMAN’;
select empno,ename,job from emp where job in(‘MANAGER’, ‘SALESMAN’);

not in 表示不在这几个值当中的数据。找出薪资不是800不是5000也不是3000的人的名字
select ename,sal from emp where sal not in(800, 5000, 3000);

2.3 模糊查询

like 称为模糊查询,支持%或下划线匹配,%代表任意多个字符,下划线:任意一个字符。(%是一个特殊的符号,_ 也是一个特殊符号)例如找出名字中含有O的?
mysql> select ename from emp where ename like ‘%O%’;
在这里插入图片描述
拓展:如果要做到名字有下划线字符的名字的话不能直接%-%,因为-是特殊字符,要用\进行转义,即%-%

三、排序

1、查询所有员工薪资,排序?
select ename,sal from emp order by sal;(默认升序)
降序为
select ename,sal from emp order by sal desc;(指定降序)
指定升序
select ename,sal from emp order by sal asc;

2、可以两个字段排序吗?或者说按照多个字段排序?查询员工名字和薪资,要求按照薪资升序,如果薪资一样的话,再按照名字升序排列。
select ename,sal from emp order by ==sal asc, ename asc; ==(sal在前,起主导,只有sal相等的时候,才会考虑启用ename排序。)

3、**了解:根据字段的位置也可以排序
select ename,sal from emp order by 2;
(2表示第二列。第二列是sal),按照查询结果的第2列sal排序。

4、找出工资在1250到3000之间的员工信息,要求按照薪资降序排列。
select ename,sal from emp
where
sal between 1250 and 3000
order by
sal desc;
在这里插入图片描述
先找到表,然后进行筛选(where),接着查出来,最后排序输出。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值