MySQL基础知识点1

表示一种结构化的文件,用来存储特定类型的数据。表包括:主键。列叫字段,行叫记录,每一个字段都有:字段名称/字段数据类型/字段约束/字段长度

查看表的结构:desc 表名

SQL的分类

DQL 数据查询语言,select
== DML数据操纵语言,增删改表中的数据(insert,delete,update)==
DDL数据定义语言,增删该表的结构(create,drop,alter)
TCL事务控制语言,commit(提交),rollback(回滚)
DCL数据控制语言

简单命令

1.查看所有的数据库:show databases;
2.在数据库外查看版本:mysql --version mysql -V
3.在数据库管理系统内查看数据库版本:select version();
4.创建数据库:create database 数据库名称;
5.查询当前使用的数据库:select database();
6.使用数据库:use 数据库名称
7.查看当前库中的表:show tables;'
8.查看其他库中的表:show tables from 数据库名称;
9.查看表的建表语句:show create table 表名;
在数据库中创建表,因此创建表时必须选择数据库
10.终止一条mysql语句:结尾加个\c
11.删除数据库:drop database if exists 数据库名称;
12.字段名称重命名:select 字段名称 as 更改后的字段名称 from 表名;

简单查询

SQL语句中凡是带select的都不会将数据库底层的数据改变,只是将他检索出来

查询表中的一个字段:select 字段名称 from 表名;
查询表中的多个字段:select 字段名称1,字段名称2  from 表名;
查询表中的所有子段:select * from 表名;

条件查询

select 字段名称(可多个)from 表名 where 条件;

1.找出姓名中含有O的:
select name(字段名称) from 表名 where name(字段名称)like '%O% ; == %相当于一个占位符,代表0-n个任意字符==
2.找出名字中第一个字母是O的:
select name(字段名称) from 表名 where name(字段名称)like 'O%' ;
3.找出名字中最后一个字母是M的:
select name(字段名称) from 表名 where name(字段名称)like '%M' ;
4.找出名字中第二个字母是N的:
select name(字段名称) from 表名 where name(字段名称)like '_N%' ;下划线_表示任意一个字符
5.找出名字中第三个字母是N的:
select name(字段名称) from 表名 where name(字段名称)like '_ _O%' ;
6. 找出名字中倒数第二个字母是N的:
select name(字段名称) from 表名 where name(字段名称)like '%O_' ;

排序

select 字段名称 from 表名 order by 字段名称;

1.升序排序:
select 字段名称 from 表名 order by 字段名称 asc;
2.降序排序:
select 字段名称 from 表名 order by 字段名称 desc;
3.多个字段排序:
select 字段名称1,字段名称2 from 表名 order by 字段名称1,字段名称2 asc;
越靠前的字段起的作用越大,靠后的字段可能用不上
4.使用字段的位置排序:select 多个字段名称 from 表名 order by 1(2...); 数字代表字段名称的编号

数据处理函数

1.转换小写:select lower(字段名称) from 表名;
2.转换大写:select upper(字段名称) from 表名;
3.取子串:select substr(被截取字符串, 开始下标,截取长度) from 表名;
4.截取名字中第二个字母是A的:
select name(字段名称)from 表名 where substr(name,2,1) = 'A';

日期处理

1.每一个数据库处理日期的时候。采用的机制都是不同的,日期处理都有自己的一套机制。在实际开发中,表中的字段定义为DATE类型,这种情况很少,因为一旦使用日期类型,java程序将不能通用。在实际开发中,一般使用’‘日期字符串’'来表示日期。

2.重要函数:
str_to_date
date_format

3.str_to_date:

3.1 将’‘日期字符串’‘转换成’‘日期类型’'数据。[ varchar(可变字符串) -----> date]
3.2该函数执行结果是DATE类型
3.3 使用格式:
str_to_date(‘日期字符串’,‘日期格式’)
3.4 关于MYSQL中的日期格式:
java中的日期格式:
yyyy
MM
dd
HH
mm
ss 秒
SSS 毫秒
java中将字符串转换成日期类型:
SimpleDateFormat sdf = new SimpleDate Format('' yyyy-MM-dd'');
Date date = sdf.parse(''2020-10-19'');
MYSQL的日期格式:
%Y
%m
%d
%H
%i
%s

4.date_format:

4.1该函数的作用是:将日期类型date转换成具有特定格式的日期字符串varchar。
4.2运算结果: varchar类型(具有特定格式的)
4.3语法格式:
date_format(日期类型数据,‘日期格式’);
4.4date_format函数主要使用在查询操作中,客户需要日期以特定格式展示的时候,需要使用该函数。

//java中的日期格式化:
 SimpleDateFormat   sdf = new SimpleDateFormat(''yyyy-MM-dd  HH:mm:ss'');
 Date nowTime = new Date();
 String strTime = sdf.format(nowTime);

分组函数

1.分组函数包括以下几个函数:
分组函数自动忽略空值,不需要的手动添加where条件排除空值

sum求和
avg求平均值
min最小值
count取得记录数
max最大值
//名称字段中不为空的元素总数
select count(名称字段) from 表名;
//符合条件的所有记录总数
select count(*)from 表名 where 条件;

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

分组查询

1.group by

若一条DQL语句当中有group by 子句,那么select关键字后面只能跟参与分组的字段和分组函数

eg1:计算每个部门的平均薪水:(按照部门编号分组,对每一组求平均薪水)

mysql > select deptno,avg(sal) as avgsal from 表名 group by deptno; 

eg2:找出每个工作岗位的最高薪水,除manager之外:

mysql> select job,max(sal) from 表名 where job<>'manager' group by job;

2.having

having在group by 之后完成过滤
where 在group by 之前完成过滤
having可以在where之后使用,而分组函数不能在where之后使用
eg:找出每个工作岗位的平均薪水,要求显示平均薪水大于1000。

mysql> select job,avg(sal) from 表名 group by job  having avg(sal)>1000;

注意:尽量在where中过滤,无法过滤的,通常都是需要先分组之后再过滤,这时可以选择用having

3.完整DQL语句

select…from…where…group by…having…order by…(关键字顺序不能变)
2.执行顺序:
from ----------->从某张表中检索数据
where---------->经过某条件进行过滤
group by------->分组
having---------->分组之后不满意再过滤
select----------->查询出来
order by-------->排序输出

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值