MySQL数据库详解——常用命令及查询
接上篇数据库安装指南,今天来详细讲解下常用命令及查询
常用命令
1、查看msyql版本
•MySQL程序选项具有以下两种通用形式:
–长选项,由单词之前加两个减号组成
–短选项,由单个字母之前加一个减号组成
C:\Users\Administrator>mysql --version
mysql Ver 14.14 Distrib 5.5.36, for Win32 (x86)
C:\Users\Administrator>mysql -V
mysql Ver 14.14 Distrib 5.5.36, for Win32 (x86)
2、创建数据库
(1) create database 数据库名称;
create database bjpowernode;
(2) use 数据库名称
use bjpowernode;
在数据库中建立表,因此创建表的时候必须要先选择数据库。
3、查询当前使用的数据库
select database();
查询数据库版本也可以使用
select version();
4、终止一条语句
如果想要终止一条正在编写的语句,可键入\c。
5、退出mysql
可使用\q、QUIT或EXIT:
如:
mysql> \q (ctrl+c)
查看“演示数据”的表结构
1、查看和指定现有的数据库
2、指定当前缺省数据库
3、查看当前使用的库
4、查看当前库中的表
.5、查看其他库中的表
show tables from ;
如查看exam库中的表
6、查看表的结构
desc
如:
7、查看表的创建语句
show create table
如:
简单的查询
1、查询一个字段
查询员工姓名 select ename from emp;
2、查询多个字段
查询员工的编号和姓名 select empno, ename from emp;
查询多个字段,select中的字段采用逗号间隔即可,最后一个字段,也就是在from前面的字段不能使用逗号了。
3、查询全部字段
可以将所有的字段放到select语句的后面,这种方案不方便,但是比较清楚,我们可以采用如下便捷的方式查询全部字段
采用select * from emp,虽然简单,但是*号不是很明确,建议查询全部字段将相关字段写到select语句的后面,在以后java连接数据库的时候,是需要在java程序中编写SQL语句的,这个时候编写的SQL语句不建议使用select * 这种形式,建议写明字段,这样可读性强.
4、计算员工的年薪
列出员工的编号,姓名和年薪 select empno, ename, sal*12 from emp;
在select语句中可以使用运算符,以上存在一些问题,年薪的字段名称不太明确
5、将查询出来的字段显示为中文
select empno as ‘员工编号’, ename as ‘员工姓名’, sal12 as ‘年薪’ from emp;
注意:字符串必须添加单引号 | 双引号
可以采用as关键字重命名表字段,其实as也可以省略,如:
select empno “员工编号”, ename “员工姓名”, sal12 “年薪” from emp;
条件查询
条件查询需要用到where语句,where必须放到from语句表的后面支持如下运算符
1、等号操作符
查询薪水为5000的员工
select empno, ename, sal from emp where sal=5000;
查询job为MANAGER的员工
select empno, ename from emp where job=manager;
以上查询出现错误,因为job为字符串,所以出现了以上错误
select empno, ename from emp where job=“manager”;
select empno, ename from emp where job=’manager’;
也可以使用单引号
select empno, ename from emp where job=‘MANAGER’;
以上输出正确,Mysql默认情况下大小写是不敏感的。
注意:
MySQL在windows下是不区分大小写的,将script文件导入MySQL后表名也会自动转化为小写,结果再 想要将数据库导出放到linux服务器中使用时就出错了。因为在linux下表名区分大小写而找不到表,查了很多都是说在linux下更改MySQL的设置使其也不区分大小写,但是有没有办法反过来让windows 下大小写敏感呢。其实方法是一样的,相应的更改windows中MySQL的设置就行了。
具体操作:
在MySQL的配置文件my.ini中增加一行:
lower_case_table_names = 0
其中 0:区分大小写,1:不区分大小写
MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的:
1、数据库名与表名是严格区分大小写的;
2、表的别名是严格区分大小写的;
3、列名与列的别名在所有的情况下均是忽略大小写的;
4、变量名也是严格区分大小写的; MySQL在Windows下都不区分大小写
2、 <>操作符
查询薪水不等于5000的员工
select empno, ename, sal from emp where sal <> 5000;
一下写法等同于以上写法,建议使用第一种写法
select empno, ename, sal from emp where sal != 5000;
数值也可以采用单引号引起来,如一下语句是正确的(不建议这么写):
select empno, ename, sal from emp where sal <> ‘5000’;
查询工作岗位不等于MANAGER的员工
select empno, ename from emp where job <> ‘MANAGER’;
3、between … and …操作符
查询薪水为1600到3000的员工(第一种方式,采用>=和<=)
select empno, ename, sal from emp where sal >= 1600 and sal <= 3000;
查询薪水为1600到3000的员工(第一种方式,采用between … and …)
select empno, ename, sal from emp where sal between 1600 and 3000;
关于between … and …,它是包含最大值和最小值的
4、is null
Null为空,但不是空串,为null可以设置这个字段不填值,如果查询为null的字段,采用is null
查询津贴为空的员工
select * from emp where comm=null;
以上也无法查询出符合条件的数据,因为null类型比较特殊,必须使用 is来比较
select * from emp where comm is null;
以上查询正确
5、 and
and表示并且的含义,表示所有的条件必须满足
工作岗位为MANAGER,薪水大于2500的员工
select * from emp where job=‘MANAGER’ and sal > 2500;
6、or
or,只要满足条件即可,相当于包含
查询出job为manager或者job为salesman的员工
select * from emp where job=‘MANAGER’ or job=‘SALESMAN’;
7、表达式的优先级
查询薪水大于1800,并且部门代码为20或30的员工(错误的写法)
select * from emp where sal > 1800 and deptno = 20 or deptno = 30;
以上输出不是预期结果,薪水小于1800的数据也被查询上来了,原因是表达式的优先级导致的,首先过滤sal > 1800 and deptno = 20,然后再将deptno = 30员工合并过来,所以是不对的
查询薪水大于1800,并且部门代码为20或30的(正确的写法)
select * from emp where sal > 1800 and (deptno = 20 or deptno = 30);
关于运算符的问题:不用记,没有把握尽量采用括号
8、in
in表示包含的意思,完全可以采用or来表示,采用in会更简洁一些
查询出job为manager或者job为salesman的员工
select * from emp where job in (‘manager’,‘salesman’);
查询出薪水包含1600和薪水包含3000的员工
select * from emp where sal in(1600, 3000);
9、not
查询出薪水不包含1600和薪水不包含3000的员工(第一种写法)
select * from emp where sal <> 1600 and sal <> 3000;
查询出薪水不包含1600和薪水不包含3000的员工(第二种写法
select * from emp where not (sal = 1600 or sal = 3000);
查询出薪水不包含1600和薪水不包含3000的员工(第三种写法)
select * from emp where sal not in (1600, 3000);
查询出津贴不为null的所有员工
select * from emp where comm is not null;
10、like
Like可以实现模糊查询,like支持%和下划线匹配
查询姓名以M开头所有的员工
select * from emp where ename like ‘M%’;
查询姓名以N结尾的所有的员工
select * from emp where ename like ‘%N’;
查询姓名中包含O的所有的员工
select * from emp where ename like ‘%O%’;
查询姓名中第二个字符为A的所有员工
select * from emp where ename like ‘_A%’;
Like中%和下划线的差别?
%匹配任意字符出现的个数
下划线只匹配一个字符
Like 中的表达式必须放到单引号中|双引号中,以下写法是错误的:
select * from emp where ename like _A%
本文地址:https://blog.csdn.net/q872792748/article/details/108979428