MySQL学习

MySQL入门学习

  • 一、数据准备
      • 1、连接MySQL
      • 2、创建一个数据库
      • 3、使用数据库
      • 4、删除数据库
  • 二、表描述
      • 1、查看数据库的表
      • 2、查看某个表的表结构
  • 三、常用命令
      • 1、查看当前数据库管理系统中有多少个数据库
      • 2、查看MYSQL版本
      • 3、创建与使用数据库(同第一部分)
      • 4、查询当前使用的数据库
      • 5、退出MySQL
  • 四、查询
    • 简单查询:
      • 1、查看其他库中的表
      • 2、查看表的创建语句
      • 3、查询表格中一个或多个字段
      • 4、查询字段重命名
    • 条件查询:
      • 1、select...from...where...支持如下运算符
        • ‘=’ 操作符
        • <>操作符
        • between … and …操作符
        • is null操作符
        • and操作符
        • or操作符
        • 表达式的优先级
        • in操作符
        • not操作符
        • like操作符
      • 2、 关于MySQL大小写字体的问题:
  • 五、排序
        • 单一字段排序
        • 手动指定排序顺序
        • 多个字段排序
        • 使用字段的位置来排序
  • 六、函数
    • 1、数据处理函数/单行处理函数
    • 2、分组函数/聚合函数/多行处理函数

一、数据准备

1、连接MySQL

快捷键win+R 打开CMD命令窗口
在CMD命令窗口敲入命令 mysql -hlocalhost -uroot -p
后按回车(注意这里的"-h"、"-u"、"-p"不能省略) 进入mysql数据库,其中"-h"表示服务器名,localhost表示本地;"-u"为数据库用户名,root是MySQL默认用户名;"-p"为密码,如果设置了密码,可直接在-p后链接输入,如:-p888888,用户没有设置密码,显示Enter password时,直接回车即可。
MySQL学习_第1张图片
显示如图则连接成功!

2、创建一个数据库

在CMD命令窗口敲入命令: create database bjpowernode;(此处为自定义的数据库名)

3、使用数据库

在CMD命令窗口敲入命令: use bjpowernode; 再enter一下
在CMD命令窗口敲入命令:source +电脑中的bjpowernode.sql脚本文件路径。

4、删除数据库

在CMD命令窗口敲入命令: cmd ->drop database bjpowernode;

注意!!!以上 语句不能遗漏分号,命令则不需要分号!!!

二、表描述

1、查看数据库的表

cmd ->show tables;

2、查看某个表的表结构

cmd ->desc dept;
如图所示,dept表格包含三个字段(DEPTNO、DNAME、LOC)MySQL学习_第2张图片

三、常用命令

1、查看当前数据库管理系统中有多少个数据库

cmd -> show databases;

2、查看MYSQL版本

方法一:连接上MySQL时,cmd —> select version();
MySQL学习_第3张图片
方法二:不连接MySQL时
第一步:cmd先退出SQL连接,cmd —> exit
第二步:在windows环境下查看 ,cmd —> mysql --version
在这里插入图片描述

3、创建与使用数据库(同第一部分)

创建:cmd —>create database bjpowernode;(此处为自定义的数据库名)
使用:cmd —>use bjpowernode;

4、查询当前使用的数据库

cmd —>select database();
MySQL学习_第4张图片
结束一条正在编写的语句:cmd —>键入\c

5、退出MySQL

三种: cmd键入quit cmd键入exit 快捷键Ctrl+c 。
但是我的Windows下用Ctrl+c快捷键方式不能退出MySQL,不知道什么原因。

四、查询

简单查询:

1、查看其他库中的表

cmd —>show tables from +database name;

2、查看表的创建语句

cmd —>show create table +table name;

3、查询表格中一个或多个字段

一个字段:cmd —>select (字段名)from (表格名);

多个字段用逗号隔开即可;

select empno,ename,mgr from emp;

查询所有字段:select * from (表格名)

select * from  emp;

4、查询字段重命名

as 可以省略,命名为中文要加引号

select empno,ename,sal as '年薪' from emp;

条件查询:

1、select…from…where…支持如下运算符

等于 =
不等于 <>或!=
小于 <
小于等于 <=
大于 >
大于等于 >=
两个值之间 between … and …. ; 等同于 >= and <=
为空 is null;is not null 不为空
并且 and
或者 or
包含 in;相当于多个or(not in:不在这个范围中)
like like称为模糊查询,支持%或下划线匹配;%匹配任意个字符;一个下划线只匹配一个字符

‘=’ 操作符

select empno, ename, sal from emp where sal=5000;
select empno, ename from emp where job=’manager’;#job为字符串,要加引号

<>操作符

select empno, ename, sal from emp where sal <> 5000;

between … and …操作符

select empno, ename, sal from emp where sal between 1600 and 3000;#包含了最大与最小值

is null操作符

Null为空,但不是空串,如果查询为null的字段,采用is null,不能用 = null

select * from emp where comm is null;

and操作符

表示所有的条件必须满足

select * from emp where job='MANAGER' and sal > 2500;

or操作符

只要满足条件即可,相当于包含

select * from emp where job='MANAGER' or job='SALESMAN';

表达式的优先级

and优先级>or优先级; 关于运算符的问题:不用记,没有把握尽量采用括号。

	查询薪水大于1800,并且部门代码为2030的(正确的写法)
select * from emp where sal > 1800 and (deptno = 20 or deptno = 30);
	查询薪水大于1800,并且部门代码为2030的员工(错误的写法)
select * from emp where sal > 1800 and deptno = 20 or deptno = 30;

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);

not操作符

	查询出薪水不包含1600和薪水不包含3000的员工(not写法1select * from emp where not (sal = 1600 or sal = 3000);
	查询出薪水不包含1600和薪水不包含3000的员工(not写法2select * from emp where sal not in (1600, 3000);
	查询出薪水不包含1600和薪水不包含3000的员工(第三种写法)
select * from emp where sal <> 1600 and sal <> 3000;

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%';

2、 关于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下都不区分大小写

五、排序

单一字段排序

order by:默认升序排列(由小到大)select …from…where…order by…

	按照薪水由小到大排序(系统默认由小到大)
select * from emp order by sal;
	取得job为MANAGER的员工,按照薪水由小到大排序(系统默认由小到大)
select * from emp where job='MANAGER' order by sal;

手动指定排序顺序

	手动指定按照薪水由小到大排序
select * from emp order by sal asc;
	手动指定按照薪水由大到小排序
select * from emp order by sal desc;

多个字段排序

如果采用多个字段排序,如果根据第一个字段排序重复了,会根据第二个字段排序

	按照job和薪水倒序()
select * from emp order by job desc, sal desc;

使用字段的位置来排序

不建议使用此种方式,采用数字含义不明确,程序不健壮

	按照薪水升序
select * from emp order by 6;

六、函数

1、数据处理函数/单行处理函数

特点:输入一行输出一行

函数名 功能及使用
Lower 转换小写
upper 转换大写
substr 取子串【substr ( 被截取的字符串,起始下标,截取的长度)】
length 取长度
trim 去空格
str_to_date 将字符串转换成日期【string–>date 】
date_format 格式化日期【date–>string】
format 设置千分位【format(编辑的字段,设置的分位数)】
round 四舍五入
rand() 生成随机数
Ifnull 可以将null转换成一个具体值 【 select ifnull(comm,0) from emp;】

2、分组函数/聚合函数/多行处理函数

注意:分组函数自动忽略空值,不需要手动的加where条件排除空值。

select count(*) from emp where xxx;			符合条件的所有记录总数。
select count(comm) from emp;	    comm这个字段中不为空的元素总数。

注意:分组函数不能直接使用在where关键字后面。

mysql> select ename,sal from emp where sal > avg(sal);
ERROR 1111 (HY000): Invalid use of group function
函数名 功能使用方法 使用方法
count 取得记录数 Count(*)表示取得所有记录,为null的值也会取得;count(字段名称),不会取得为null的记录
sum 求和 select sum(sal) from emp;取得薪水的合计 ,null会被忽略
avg 取平均 select avg(sal) from emp;
max 取最大的数 select max(sal) from emp;
min 取最小的数 select min(str_to_date(hiredate, ‘%Y-%m-%d’)) from emp;

你可能感兴趣的:(数据库)