IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 学习MySQL-第六章 -> 正文阅读

[大数据]学习MySQL-第六章

目录

25,limit(非常重要)

25.1 limit是将查询结果集的一部分取出来,通常使用在分页查询当中

25.2limit怎么用呢?

25.3注意

25.4取出工资排名在3-5名的员工?

25.5取出工资排名在5-9名的员工

25.6分页

26,关于DQL语句的总结:

27,表的创建(建表)

27.1建表的语法格式(建表属于DDL语句,DDL包括:create drop alter)

27.2关于mysql中的数据类型?

varchar(最长255)

char(最长255)

varchar和char我们应该怎么选择?

int(最长11)

bigint

float

double

date

datetime

clob

blob

27.3创建一个学生表

27.4删除表

27.5插入数据insert(DML语句)

27.6 insert插入日期

27.7date和datetime两个类型的区别

27.8修改update(DML)

27.9删除数据delete(DML)


25,limit(非常重要)

25.1 limit是将查询结果集的一部分取出来,通常使用在分页查询当中

分页的作用是为了提高用户的体验,因为一次全部都查出来,用户体验差,可以一页一 页翻页看

25.2limit怎么用呢?

例:按照薪资降序,取出排在前五名的员工?

mysql> select ename,sal from emp order by sal desc limit 5;//取前五条记录

?完整用法:limit startIndex,length

startIndex是起始下标,length是长度

注意起始下标从0开始

缺省用法:limit 5;这是取前五,默认从头开始

25.3注意

注意: mysql当中limit在order by之后执行!!!

25.4取出工资排名在3-5名的员工?

mysql> select ename,sal from emp order by sal desc limit 2,3;

+-------------+------------+

| ename? ? | sal? ? ? ? ? |

+------------+------------+

| FORD? ? | 3000.00? |

| JONES ?| 2975.00? |

| BLAKE? ?| 2850.00? |

+------------+------------+

2表示起始位置从下表2开始,就是第三条记录

3表示长度

25.5取出工资排名在5-9名的员工

mysql> select ename,sal from emp order by sal desc limit 4,5;

25.6分页

每页显示3条记录

第一页:limit 0,3

第二页:limit 3,3

第三页:limit 6,3

第四页:limit 9,3

每页显示pagesize条记录

第pagesize页:limit (pageNo-1)*pagesize,pagesize

Public static void main(String[] args)
{
    //用户提交过来一个页码,以及每页显示的记录条数

    int pageNo=5;//第五页

    int pagesize=10;//每页显示10条记录



    int startIndex=(pageNo-1)*pagesize;

    String sql=”select.....limit”+”startIndex”+”,”+”pagesize”;
}

记公式:

limit (pageNo-1)*pagesize,pagesize

26,关于DQL语句的总结:

select

????????...

from

????????...

where

????????...

group by

????????...

having

????????...

order by

????????...

limit

????????...

执行顺序:

1,from

2,where

3,group by

4,having

5,select

6,order by

7,limit

27,表的创建(建表)

27.1建表的语法格式(建表属于DDL语句,DDL包括:create drop alter)

creat table 表名(字段名1 数据类型,字段名2 数据类型,字段名3 数据类型);

creat table 表名(

????????字段名1 数据类型,

????????字段名2 数据类型,

????????字段名3 数据类型

);

表名:建议以t_或者tbl_开始,可读性强,见名知意

字段名:见名知意

表名和字段名都属于标识符

27.2关于mysql中的数据类型?

很多数据类型,我们只需要掌握一些常见的数据类型即可

varchar(最长255)

????????可变长度的字符串

????????比较智能,节省空间

????????会根据实际的数据长度动态分配空间

????????优点:节省空间

????????缺点:需要动态分配空间,速度慢

char(最长255)

????????定长字符串

????????不管实际的数据长度是多少

????????分配固定长度的空间去存储数据

????????使用不恰当的时候,可能会导致空间的浪费

????????优点:不需要动态分配空间,速度快

????????缺点:使用不当可能会导致空间的浪费

varchar和char我们应该怎么选择?

????????性别字段选什么?因为性别是固定长度的字符串,所以选择char

????????姓名长度选什么?每一个人的名字长度不一样,所以选择varchar

int(最长11)

????????数字中的整数型,等同于java中int

bigint

????????数字中的长整型。等同于java中的long

float

????????单精度浮点型数据

double

????????双精度浮点型数据

date

????????短日期

datetime

????????长日期

clob

????????字符大对象

????????最多可以存储4g的字符串

????????比如:存储一篇文章,存储一个说明

????????超过255个字符的都要采用clob字符大对象来存储

????????Character large object:clob

blob

????????二进制大对象

????????Binary large object:blob

????????专门用来存储图片,声音,视频等流媒体数据

????????往blob类型的字段上插入数据的时候,例如插入一个图片,视频等

????????需要使用io流才行

27.3创建一个学生表

学号,姓名,年龄,性别,邮箱地址

create table t_student(

????????no int,

????????name varchar(32),

????????sex char(1),

????????age int(3),

????????email varchar(255)

);

括号里面的数字是推荐长度,实际长度超了也没关系,不会报错,只是一个建议长度

27.4删除表

drop table t_student;//当这张表不存在的时候会报错!

?

?还有一种写法,建议用下面这个写法

drop table if exists t_student;//如果这张表存在的话,删除,不会报错

27.5插入数据insert(DML语句)

上面我们把t_student表删除了,我们再创建回来

语法格式:

????????insert into 表名(字段名1,字段名2,字段名3...) values(值1,值2,值3);

注意:字段名和值要一一对应,什么是一一对应,数量要对应,数据类型要对应

insert?into t_student(no,name,sex,age,email) values(1,'zhangsan','m',20,'zhan gsa n@123.com');

?可以看到已经插入到表中了

//如果字段名是颠倒的也可以插入,不过值也要与之对应

mysql> insert into t_student(email,name,sex,age,no) values('lisi@123.com','lisi','f','1 9','2');

?上面语句也插入成功了

//只给一个字段赋值也是可以的,没赋值的则默认是null

mysql> insert into t_student(no) values(3);

注意:insert语句但凡执行成功了,那么必然会多一条记录

没有给其他字段指定值的话,默认值是NULL

需要注意的是创建表的时候可以对字段名指定默认值

我们先删除这个t_student表

mysql> drop table if exists t_student;

然后再创建这个表,并且给sex指定默认值

mysql> create table t_student(

     no int,

???? name varchar(32),

???? sex char(1) default 'm',

???? age int(3),

???? email varchar(255)

);

这样我们就给sex指定了m的默认值

?之后我们插入记录时,如果不设置sex,则默认就是m

mysql> insert into t_student(no) values(1);

mysql> select * from t_student;

?inset语句中的”字段名”可以省略吗?可以

需要注意的是,前面的字段名省略的话,等于都写上了,所以值也要都写上

mysql> insert into t_student values(2,'wangwu','f',21,'wangwu@123.com');

上面这样写是可以插入的

?不过还是建议把字段名写出来,可读性强一点

27.6 insert插入日期

在第三章提到了str_to_date和date_format这两个处理函数

str_to_date:将字符串varchar类型转换成date类型

date_to_format:将date类型转换成具有一定格式的varchar字符串类型

注意:数据库中的有一条命名规范:所有的标识符都是全部小写,单词和单词之间使用下划线进行衔接

这两个函数有什么用呢?

我们把上面的t_student表删除,创建一个带有date类型的表

mysql->drop table if exists t_student;
mysql->create table t_student(

    id int(11),

????name varchar(32),

????birth date//生日可以使用字符串

);

我们上面添加了一个date类型的字段,下面演示一下怎么插入日期

mysql> insert into t_student(id,name,birth) values(1,'zhangsan','01-10-1990');// 1990年10月1日

出问题了:原因是类型不匹配,数据库birth是date类型,这里给了一个字符串varchar

怎么办?可以用str_to_date函数进行类型转换

str_to_date函数可以将字符串转换成日期类型date

语法格式:

str_to_date(‘字符串日期’,’日期格式’)

mysql的日期格式:

%Y 年

%m 月

%d 日

%h 时

%i 分

%s 秒

所以修改一下上面的语句

mysql> insert into t_student(id,name,birth) values(1,'zhangsan',str_to_date('01- 10-1990','%d-%m-%Y'));

?str_to_date函数可以将字符串varchar转换成日期date类型数据

通常使用在插入insert方面,因为插入的时候需要一个日期类型的数据

需要通过该函数将字符串转换成date

注意:

如果提供的日期字符串是这个格式(%Y-%m-%d),str_to_date函数就不需要 了!

下面演示一下

mysql> insert into t_student(id,name,birth) values(1,'zhangsan','1990-10-01');

?可以发现插入成功了

查询的时候可以以某个特定的日期格式展示吗?

date_format

这个函数可以将日期类型转换成特定格式的字符串

mysql> select id,name,date_format(birth,'%m/%d/%Y') as birth from t_studen t;

date_format函数怎么用?

date_form(日期类型数据,’日期格式’)

这个函数通常使用在查询日期方面,设置展示的日期格式

mysql> select id,name,birth from t_student;

以上的sql语句实际上是进行了默认的日期格式化

自动将数据库中的date类型转换成varchar类型

并且采用的格式是mysql默认的日期格式:’%Y-%m-%d’

实际上str_to_date和date_format是不怎么用的,比如str_to_date,我们按照199 0-10-01的格式去插入日期的话系统会自动转换成date类型的。我们在查询字段时 系统会自动进行类型转换,转换成字符串类型,所以也用不到date_format

27.7date和datetime两个类型的区别

date是短日期:只包括年月日信息

datetime是长日期:包括年月日时分秒信息

drop table if exists t_student;
create table t_user(

    Id int,

    Name varchar(32),

    Birth date,

    Create_time datetime

);

id是整数

name是字符串

birth是短日期

create_time是这条记录的创建时间:长日期类型

mysql短日期默认格式:%Y-%m-%d

mysql长日期默认格式:%Y-%m-%d %h:%i:%s

怎么插入记录呢?

mysql> insert into t_user(id,name,birth,create_time) values(1,'zhangsan','1990- 10-01','2022-09-18 15:42:21');

?

?可以看到已经插入成功

在mysql中怎么获得系统当前时间呢?

now()函数:获取的时间带有:时分秒信息!是datetime类型的

mysql> insert into t_user(id,name,birth,create_time) values(2,'lisi','1990- 10-01',now());

?插入成功,可以发现已经插入了当前的时间,利用的就是now()函数

27.8修改update(DML)

语法格式:

update 表名 set 字段名1=值1,字段名2=值2,字段名3=值3... where条件;

注意:没有条件限制会导致所有数据全部更新

例:我们把上面表中的2号lisi的数据改一下

mysql> update t_user set name='wanger',birth='2000-10-11' where id=2;

?查询一下就可以发现已经修改成功了

27.9删除数据delete(DML)

语法格式:

delete from 表名 where 条件

注意:没有条件,整张表的数据会全部删除

例:我们删除上表中的第二条记录,也就是wanger的记录

mysql> delete from t_user where id=2;

?查询一下发现已经删除了

怎么删除所有记录:

mysql> delete from t_user;//直接delete from 表名即可

?查询一下可以发现记录全部都删除了

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-09-21 00:35:41  更:2022-09-21 00:38:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 11:06:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码