mysql 取年月日 语句_MySQL学习从这里出发!

bcdfef9df1f7d0f03d30940194b3e407.png

MySQL数据库

开发学习中,想满足一些需求,无疑需要经常与数据打交道,例如,我们在使用IO的一些技术的时候,常常需要将一些数据存储到外部文件,可能大家会问,我们初学的时候常常会简单的保存一些数据到 .txt 文件中,为什么还需要数据库呢?

(一) 为什么使用数据库?

(1) 查询速度

假定我们将数据全部存储在一个普通文件中(data.txt)_(以逗号间隔)

......
"Eminem",male,1972,"USA"
"Rihanna",female,1988,"Barbados"
"Taylor Swift",1989,female,"USA"
"Aavril Lavigne",1984,female,"Canada"
......

如果在我们的数据极为庞大的情况下,我们需要查询其中的一些数据,例如,查询Eminem的国籍,我们一般会使用遍历,但是毫无疑问,这个响应时间会变得极其缓慢,但是使用数据库后,它所提供的一些索引技术等就可以解决这样的问题

(2) 保证数据完整有效

"Rihanna",female,1988,"Barbados"
"Rihanna",female,1995,"USA"

如果数据中出现了重名的情况,又如何判断是不是同一个人呢?

如果data.txt文件中的数据被错误的修改,例如出生年份被修改为其他类型字符串这种无效表达怎么办?

或许你可以在程序中写一些逻辑判断语句进而筛选处理这些问题,但是仍旧在数据较为庞大的情况下,会出现各种各样的问题,增加了开发者的开发难度,而数据库本身就制定了一些约束,从而保证了数据的完整且,有效,从而使开发者只需要更加注重于程序本身的设计,而不用花费过多的时间去处理数据上的一些细节问题

(3) 数据共享

常用来简单存储数据的 txt/excel 等均属于单一文件,并且都是无法共享的,只支持当前用户使用并且修改

数据库允许用户共享,不同的用户可以同时存取数据库中的数据,用户也可以用各种方式通过接口使用数据库,并提供数据共享

(4) 数据的安全性

在我们前者中,数据的修改是很随意的

但是在实际开发中,我们有时候需要面临,多个用户检索、修改同一文件中的数据,或者在并发情况下,写同一文件或者记录,而数据库基于锁等的一些技术便可以帮助我们解决这些问题

(5) 故障恢复

由于逻辑或者物理上的错误,导致了系统的错误操作,从而使得数据被皮怀,如何快速恢复数据,我们上面的单一文件系统显然无法帮助我们解决问题,而数据库却有相关机制去弥补、处理相关问题

上面我们仅仅从几个常见的点分析了为什么使用数据库,当然远远不止这些,所以总的来说就是数据库其特殊的存储以及管理方式,既提高了效率,也极大的减少了开发人员的负担

(二) 数据库的基本概念

(1) 概述

数据库(DateBase,简称DB)是一种用于存储和管理数据的仓库,简单的说就是一个容器内,内部按照一定方式存储着一些数据

(2) 特点

  1. 持久化存储数据的。其实数据库就是一个文件系统
  2. 数据独立存储,且集中控制,方便存储和管理数据
  3. 使用了统一的方式操作数据库 -- SQL
  4. 实现数据共享
  5. 数据一致性和可维护性,保证数据安全可靠

(三) MySQL数据库的基本操作

MySQL服务启动(两种方式)1. cmd--> services.msc 打开服务的窗口2. 使用管理员打开cmdA: net start mysql : 启动mysql的服务B: net stop mysql : 关闭mysql服务
MySQL登录1. 点击 MySQL 5.7 Command Line Client,输入密码即可2. 命令行登录(配置好环境变量)A: mysql -uroot -p密码 //root为用户名B: mysql -hip -uroot -p连接目标的密码C: mysql --host=ip --user=root --password=连接目标的密码
MySQL退出1. exit2. quit

(四) SQL简单认识

(1) 什么是SQL?

Structured Query Language:结构化查询语言

SQL就是访问和处理关系数据库的计算机标准语言,它定义了操作所有关系型数据库的规则

大部分数据库在SQL的标准上进行了扩展。而每一种数据库操作的方式存在不一样的地方,称为方言

但凡涉及到关系型数据库就离不开SQL,例如在电商网站中存入商品信息,游戏中存储装备道具信息等

补充

常见的关系型数据库Oracle、DB2、Microsoft SQL Server、Microsoft AccessMySQL

商用:Oracle、DB2、Microsoft SQL Server

开源:MySQL

桌面:Microsoft Access

常见的非关系型数据库:NoSql、Cloudant、MongoDb、redis、HBase

(2) SQL通用语法

1. SQL语句 单行或多行书写,以分号结尾,并且可以使用空格和缩进来增强语句的可读性
2. MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写
3. 3 种注释A: 单行注释: -- 注释内容 或 # 注释内容(mysql 特有) B: 多行注释: /* 注释 */

(五) SQL分类

数据定义语言——DDL(Data Definition Language)

允许用户定义 (创建) 数据库对象:数据库,表,列等

数据操作语言——DML(Data Manipulation Language)

允许用户对数据库中表的数据进行增删改

数据查询语言——DQL(Data Query Language)

允许用户查询数据库中表的记录(数据)

数据控制语言——DCL(Data Control Language)

 用来定义数据库的访问权限和安全级别,及创建用户

(1) DDL:操作数据库、表

1. 操作数据库 —— CRUE

-- CURE ---> C(Create):创建 + R(Retrieve):查询 + U(Update):修改 + D(Delete):删除
1. C(Create):创建-- 创建数据库CREATE DATABASE 数据库名称;-- 创建数据库,判断不存在,再创建CREATE DATABASE IF NOT EXISTS 数据库名称;-- 创建数据库,并且制定字符集CREATE DATABASE 数据库名称 CHARACTER SET 字符集名;2. R(Retrieve):查询-- 查询所有数据库名称SHOW DATABASES-- 查询某个数据库的字符集 : 查询某个数据库的创建语句SHOW CREATE DATABASE 数据库名称;
3. U(Update):修改-- 修改数据库的字符集ALTER DATABASE 数据库名称 CHARACTER SET 字符集名称;
4. D(Delete):删除 -- 删除数据库DROP DATABASE 数据库名称;-- 判断数据库存在,存在再删除DROP DATABASE IF EXISTS 数据库名称;
5. 使用数据库-- 查询当前正在使用的数据库名称SELECT DATABASE();-- 使用数据库USE 数据库名称;

2. 操作表

1. C(Create):创建-- 语法 * 注意最后一行不需要加逗号(,)CREATE TABLE 表名(列名1 数据类型1,列名2 数据类型2,......列名n 数据类型n);-- 数据类型1. INT:整数类型2. DOUBLE:小数类型3. DATE:日期,只包含年月日,yyyy-MM-dd4. DATETIME:日期,包含年月日时分秒 yyyy-MM-dd HH:mm:ss5. TIMESTAMP:时间错类型 包含年月日时分秒 yyyy-MM-dd HH:mm:ss 6. VARCHAR:字符串-- 注意:time如果将来不给这个字段赋值,或赋值为null,则默认使用当前的系统时间来自动赋值-- DOUBLE(6,3) 代表共保留6位数字,小数点后保留3位-- 复制表CREATE TABLE 表名 LIKE 被复制的表名;2. R(Retrieve):查询-- 查询某个数据库中所有的表名SHOW TABLES;-- 查询表结构DESC 表名;3. U(Update):修改-- 修改表名ALTER TABLE 表名 RENAME TO 新表名-- 修改表的字符集ALTER TABLE 表名 CHARACTER SET 字符集名称;-- 添加一列ALTER TABLE 表名 ADD 列名 数据类型-- 修改列名称 类型ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;ALTER TABLE 表名 MODIFY 列名 新数据类型;-- 删除列DROP TABLE 表名;DROP TABLE IF EXISTS 表名;
4. D(Delete):删除 DROP TABLE 表名;Drop TABLE IF EXISTS 表名;

(2) DML:增删改表中的数据

1. 表中添加数据-- 语法:INSERT INTO 表名(列名1,列名2,...列名n) VALUES(值1,值2,...值n);-- 注意:A: 列名和值要一一对应。B: 如果表名后,不定义列名,则默认给所有列添加值Eg:INSERT INTO 表名 Values(值1,值2,...值n);C: 除了数字类型,其他类型需要使用引号(单双都可以)引起来
2. 删除表中数据-- 语法:DELETE FROM 表名 [WHERE 条件]-- 注意:若不加条件,则删除表中所有记录-- 删除所有记录的两种方式A: DELETE FROM 表名; -- 不推荐使用,有多少条记录就会执行多少次删除操作B: TRUNCATE TABLE 表名; -- 推荐使用,先删除表,然后再创建一张一样的表,效率更高3. 修改表中数据-- 语法:UPDATE 表名 SET 列名1 = 值1, 列名2 = 值2,... [WHERE 条件];-- 注意:若不限定条件,则会修改表中的所有记录

(3) DQL:查询表中的记录

SELECT * FROM 表名;
1. 语法:SELECT字段列表FROM表名列表WHERE条件列表GROUP BY分组字段HAVING分组之后的条件ORDER BY排序LIMIT分页限定2. 基础查询-- 多个字段的查询SELECT 字段名1,字段名2... FROM 表名;注意:如果查询所有字段,则可以使用*来替代字段列表。-- 去除重复:DISTINCT-- 计算列一般可以使用四则运算计算一些列的值。(一般只会进行数值型的计算)IFNULL(表达式1,表达式2):null参与的运算,计算结果都为null表达式1:哪个字段需要判断是否为null如果该字段为null后的替换值。-- 起别名:as:as也可以省略3. 条件查询1. where子句后跟条件2. 运算符> 、< 、<= 、>= 、= 、<>BETWEEN...AND IN( 集合) LIKE:模糊查询占位符:_:单个任意字符%:多个任意字符IS NULL AND 或 &&OR 或 || NOT 或 !-- 查询年龄不等于20岁SELECT * FROM student WHERE age != 20;SELECT * FROM student WHERE age <> 20;-- 查询年龄大于等于20 小于等于30(三种方式)SELECT * FROM student WHERE age >= 20 && age <=30;SELECT * FROM student WHERE age >= 20 AND age <=30;SELECT * FROM student WHERE age BETWEEN 20 AND 30;-- 查询年龄22岁,18岁,25岁的信息SELECT * FROM student WHERE age = 22 OR age = 18 OR age = 25SELECT * FROM student WHERE age IN (22,18,25);-- 查询英语成绩为null-- 下面第一句是错误的,null值不能使用 = 和(!=) 判断SELECT * FROM student WHERE english = NULL; (×)SELECT * FROM student WHERE english IS NULL; (√)-- 查询英语成绩不为nullSELECT * FROM student WHERE english IS NOT NULL;-- 查询姓张的有哪些? likeSELECT * FROM student WHERE NAME LIKE '张%';-- 查询姓名第二个是杰的人SELECT * FROM student WHERE NAME LIKE "_杰%";-- 查询姓名是3个字的人SELECT * FROM student WHERE NAME LIKE '___';-- 查询姓名中包含文的人SELECT * FROM student WHERE NAME LIKE '%文%';

DQL:查询语句

1. 排序查询-- 语法:ORDER BY 子句* ORDER BY 排序字段1 排序方式1 ,排序字段2 排序方式2...-- 排序方式:ASC:升序,默认的。DESC:降序-- 注意:如果有多个排序条件,则当前边的条件值一样时,才会判断第二条件。2. 聚合函数:将一列数据作为一个整体,进行纵向的计算。COUNT:计算个数-- 一般选择非空的列:主键-- count(*)MAX:计算最大值MIN:计算最小值SUM:计算和AVG:计算平均值-- 注意:聚合函数的计算,排除null值。解决方案:1. 选择不包含非空的列进行计算2. IFNULL函数3. 分组查询:-- 语法:group BY 分组字段;-- WHERE 和 HAVING 的区别?WHERE 在分组之前进行限定,不满足则不分组HAVING在分组之后进行限定,不满足则查不到WHERE 后不可以跟聚合函数,having可以进行聚合函数的判断-- 常见举例,巩固一下语法-- 按照性别分组,分别查询男、女同学的平均分SELECT sex , AVG(math) FROM student GROUP BY sex;-- 按照性别分组,分别查询男、女同学的平均分,人数SELECT sex , AVG(math),COUNT(id) FROM student GROUP BY sex;-- 按照性别分组,分别查询男、女同学的平均分,人数 要求:分数低于60分的人,不参与分组SELECT sex , AVG(math),COUNT(id) FROM student WHERE math > 60 GROUP BY sex;-- 按照性别分组,分别查询男、女同学的平均分,人数 -- 要求:分数低于60分的人,不参与分组或分组之后,人数要大于2个人SELECT sex , AVG(math),COUNT(id) FROM student WHERE math > 60 GROUP BY sex HAVING COUNT(id) > 2;SELECT sex , AVG(math),COUNT(id) 人数 FROM student WHERE math > 60 GROUP BY sex HAVING 人数 > 2;4. 分页查询-- 语法:limit 开始的索引,每页查询的条数;-- 公式:开始的索引 = (当前的页码 - 1) * 每页显示的条数每页显示5条记录 SELECT * FROM student LIMIT 0,5; -- 第1页SELECT * FROM student LIMIT 5,5; -- 第2页SELECT * FROM student LIMIT 10,5;-- 第3页-- LIMIT 是一个MySQL"方言"

结尾:

如果内容中有什么不足,或者错误的地方,欢迎大家给我留言提出意见, 蟹蟹大家 !^_^

如果能帮到你的话,那就来关注我吧!

我是小架,我们下篇文章见!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/501637.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JAVAWEB入门之Requset原理

Request 1.request和respinse对象的原理 request和respinse对象是由服务器创建的&#xff0c;我们只是使用他们 request对象是来获取请求消息&#xff0c;response是来设置响应消息 3.request对象的继承体系结构&#xff1a; ServletRequest-------接口 继承 HttpServlet…

mysql事务编号_Mysql事务

一&#xff1a;mysql事务1.需求从orders表中查询最新的销售订单编号&#xff0c;并使用下一个销售订单编号作为新的销售订单编号。在指定客户的orders表中插入新的销售订单。将新的销售订单项目插入orderdetails表中。从orders表和orderdetails中获取数据以确认更改。如果由于数…

java try catch 例子_java try catch

try catch机制非常好。那些觉得try catch不行的人&#xff0c;是他们自己的水平有问题&#xff0c;无法理解这种机制。并且这群人写代码不遵守规则&#xff0c;喜欢偷懒&#xff0c;这才造成try catch不好的错觉。详细解释&#xff1a;1.程序要健壮&#xff0c;必须要设计报错机…

java xss 默认值_一台 Java 服务器可以跑多少个线程?

原标题&#xff1a;一台 Java 服务器可以跑多少个线程&#xff1f;转自&#xff1a;简书&#xff0c;作者&#xff1a;新栋BOOK一台Java服务器能跑多少个线程&#xff1f;这个问题来自一次线上报警如下图&#xff0c;超过了我们的配置阈值。京东自研UMP监控分析打出jstack文件&…

java设计模式初探之装饰者_JAVA设计模式初探之装饰者模式

装饰者模式1、意图&#xff1a; 动态地给一个对象添加一些额外的职责。就增加功能来说&#xff0c; Decorator模式相比生成子类更为灵活。该模式以对客 户端透明的方式扩展对象的功能。2、适用环境(1)在不影响其他对象的情况下&#xff0c;以动态、透明的方式给单个对象添加职责…

redis在java中的方法_redis在java中的使用方法

Redis是key-value方式储存数据的内存数据库。下载后解压&#xff0c;redis-server.exe是redis服务&#xff0c;启动之后就可以使用redis。redis-cli.exe是客户端&#xff0c;可以访问本地或远程的redis。redis-cli.exe -h 127.0.0.1 -p 6379 命令行命令。修改-h后的ip…

Java写一个快速排序_快速排序java实现

1.快速排序的思想快速排序属于交换排序&#xff0c;是冒泡排序的升降版。相对于冒泡排序而言&#xff0c;快速排序增大了记录比较和移动的距离&#xff0c;将关键字较大的记录直接移动到后面&#xff0c;将关键字较小的记录直接移动到前面&#xff1b;不再是相邻两个记录依次进…

java porm.xml_通过Maven仓库安装Spire.PDF for Java

本文将介绍如何通过Maven仓库安装Spire.PDF for Java。首先&#xff0c;在pom.xml文件中配置Maven仓库路径。com.e-icebluee-icebluehttp://repo.e-iceblue.com/nexus/content/groups/public/其次&#xff0c;在pom.xml文件中指定Spire.PDF for Java的Maven依赖e-iceblue spire…

JAVA入门级教学之(方法内存分配机制)

目录 JAVA入门级教学之&#xff08;方法内存分配机制&#xff09; 1.方法只定义&#xff0c;不调用&#xff0c;是不会执行的 2.在JVM内存划分上有这样三块主要的内存空间&#xff1a;【还有其它的内存空间】 3.关于"栈"数据结构 4.方法代码片段存在哪里&#xff1f;…

cad与连接mySQL数据库_跨服务器操作数据库?其实很简单!(下)

之前一篇文章一步一步的教小伙伴们如何建立SQL Server的数据库链接(DBLINK)&#xff0c;详细步骤可查看上篇&#xff1a;跨服务器操作数据库&#xff1f;其实很简单&#xff01;(上)今天我们来教大家如何连接MYSQL和Oracle的远程数据库创建MYSQL远程链接第一步需要下载MYSQL驱动…

php如何获取服务器时间_php如何获取当前日期

1、前提条件php网站编程中&#xff0c;我们一般用date函数来获取服务器上的时间。但要想正确调用date函数&#xff0c;必须保证php的配置文件php.ini已经配置正确了&#xff0c;否则调用date函数时会报错&#xff0c;没办法正确进行获取时间。2、用记事本程序打开php配置文件ph…

JAVA入门级教学之(对象的创建和使用)

/* 对象的创建和使用*/ public class OOTest01 {public static void main(String[] args){//通过一个类可是实例化N个对象//实例化对象的语法&#xff1a;new.类名();//new是java语言中的一个运算符//new运算符的作用是创建对象&#xff0c;在JVM【堆】内存中开辟新的内存…

JAVA入门级教学之(对象的使用)

//定义一个用户类public class User {//属性【以下都是成员变量之实例变量】//用户编号//int是一种【基本数据】类型&#xff1a;整数型//no是一个实例变量int no;//用户名//String是一种引用数据类型&#xff1a;代表字符串//name是一个实例变量//name是一个引用String name;/…

台式电脑耳机插孔在哪_一图教你学会电脑主机后面各接口正确接线

电脑主机后面接口众多&#xff0c;很多人分不清各接口都分别起什么作用和怎么接线&#xff0c;下面就来重点说说经常易出错的各接口作用及连接方法。1、 键盘鼠标接口&#xff1a;注意紫色的圆形接口为键盘接口&#xff0c;绿色的圆形接口为鼠标接口。如果你的键盘是紫色的圆形…

软件加入使用时间_你有了抢口罩软件,电商也进行了升级,我们又有了新软件(3月2日更新)...

超神office新鲜一手办公、软件教程你有了抢口罩软件&#xff0c;电商也进行了升级&#xff0c;我们又有了新软件(3月2日更新)”昨天的软件&#xff0c;作者又迎来了更新&#xff0c;功能增加&#xff0c;具体表现还需要各位评测。01新软件介绍一、软件界面秒抢助手内测版&#…

JAVA入门级教学之(内存引用的例子)

先定义一个地址类 public class Address {//地址String addr; } 内存引用的例子 public class OOTest03 { public static void main(String[] args){//u是引用//u是局部变量User unew User();//上一个版本编写//u.addrnew Address();//可以通过前章内存示意图看出其中的原…

小米10开始抓取日志怎么关闭_除了*#*#6485#*#*,小米手机还有这些神秘暗号

最近在小米社区(xiaomi.cn)平台&#xff0c;一条快速查看手机电池信息的代码&#xff0c;居然成了大家广泛关注和讨论的焦点&#xff0c;甚至很多米粉也晒出了自己的界面截图&#xff0c;同时关于电池使用寿命和损耗的问题也被频频提及。而除了这条代码之外&#xff0c;小米手机…

java多线程打印helloworld,Java并发编程--多线程之HelloWorld

上篇博客我们介绍了一些基本概念&#xff0c;进程、线程、并发。下面我们开始写第一个多线程的程序。两种方式&#xff1a;一、实现Runnable接口&#xff1b;二、基础Thread类。一、实现Runnable接口package com.tgb.klx.thread;public class hello1 implements Runnable {publ…

禁售苹果手机_苹果、华为供应商工厂突发火灾!浓烟冲天

网友曝料&#xff0c;9月7日上午&#xff0c;位于江苏昆山的欣兴电子旗下鼎鑫电子的一处工厂突然发生火灾&#xff0c;现场浓烟滚滚。 根据欣兴电子发布的公告&#xff0c;昆山鼎鑫电子工厂今天上午10时50分发生火灾&#xff0c;起火点疑似在生产传统PCB的一…