groovy怎样从sql语句中截取表名_Mysql和SQL

b8443f9f708df2ce9d0f772e1b05f7a6.png

基本概念

1.数据库DataBase简称:DB

2.什么数据库?——用于存储和管理数据的仓库。存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后在该程序中就可以调用多次。

3.数据库的特点:持久化存储数据。数据库就是一个文件夹系统

MySQL服务启动

1. 手动:管理——服务——手动关闭和开启。

2.cmd-->services.msc打开服务的窗口

3.使用管理员打开cmd

net start mysql:启动mysql的服务

net stop mysql:关闭mysql服务

MySQL登录

1.mysql-uroot-p密码

2.mysql-hip-uroot-p连接目标的密码

MySQL退出

1.exit(退出)

2.quit(辞职、退出)

索引的作用?它的优点缺点是什么?

索引在数据库的搜索时可以加速对数据的检索。类似与现实生活中书的目录,缺点是它减慢了数据录入的速度,同时也增加了数据库的尺寸大小。

在数据库中查询语句速度很慢,如何优化?

1.建索引2.减少表之间的关联 3.优化sql,尽量用PreparedStatement来查询,不要用Statement

索引类型有哪些?B-tree :b+树、b-树——叶子节点中的数据索引、二叉树,红黑树、Hash表

什么是事务?

事务就是被绑定在一起的SQL语句分组,有原子性,一致性,隔离性和持久性。

怎么验证MySQL的索引是否满足需求

explain语法:explain select*from table where type=1。

数据库的事务隔离

MySQL的事务隔离是在MySQL.ini配置文件最后添加:transaction-isolation=REPEATABLE-READ

可用的配置值:READ-UNCOMMITTED、READ-COMMITTED、REPEATABLE-READ、SERIALIZABLE。

Read-uncommitted:未提交读,最低隔离级别、事务未提交前,就可被其他事务 生了幻觉。发生幻读的原因也是另外一个事务新增或者删除或者修改了第一个事务结果集里面的数据,同一个记录的数据内容被修改了,所有数据行的记录就变多或者变少了。

视图:是一种虚拟的表,具有和物理表相同的功能。优点:对数据库的访问,因为视图可以有选择性的选取数据库里的一部分。

Oracle和Mysql的区别?

1)库函数不同。

2)Oracle是用表空间来管理的,Mysql不是。

Oracle语句分三类:DDL、DML、DCL。DDL(Data Definition Language)数据定义语言,包括:Create语句:可以创建数据库和数据库的一些对象。Drop语句:可以删除数据表、索引、触发程序、条件约束以及数据表的权限等。Alter语句:修改数据表定义及属性。Truncate语句:删除表中的所有记录,包括所有空间分配的记录被删除。DML(Data Manipulation Language)数据操控语言,包括:Insert语句:向数据表张插入一条记录。Delete语句:删除数据表中的一条或多条记录,也可以删除数据表中的所有记录,但是它的操作对象仍是记录。Update语句:用于修改已存在表中的记录的内容。DCL(Data Control Language)数据库控制语言,包括:Grant语句:允许对象的创建者给某用户或某组或所有用户(PUBLIC)某些特定的权限。Revoke语句:可以废除某用户或某组或所有用户访问权限

数据库三范式是什么?

第一范式:列不可再分第二范式:行可以唯一区分,主键约束第三范式:三大范式是一级一级依赖的

什么是SQL?

Structured Query Language:结构化查询语言,定义了操作所有关系型数据库的规则。每一种数据库操作的方式存在不一样的地方,称为“方言”。Mysql,oracle,SQLserver, DB2

都是关系型数据库。

SQL语句单行或多行书写,以分号结尾。MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。单行注释:--  注释内容或#注释内容(mysql特有)多行注释:/*注释*/

SQL分类

1) Data Definition Language (DDL 数据定义语言) 如:建库,建表 关键字:create,drop,alter等

2) Data Manipulation Language(DML 数据操纵语言),如:对表中的记录操作增删改 关键字:insert,delete,update等

3) Data Query Language(DQL 数据查询语言),如:对表中的查询操作 关键字:select,where等

4) Data Control Language(DCL 数据控制语言),如:对用户权限的设置。关键字:GRANT,REVOKE等

DDL:操作数据库、表——CRUD

1.C(Create):创建

创建数据库:

create database数据库名称;

创建数据库,判断不存在,再创建:

create database if not exists数据库名称;

创建数据库,并指定字符集

create database数据库名称character set字符集名;

练习:创建db4数据库,判断是否存在,并制定字符集为gbk

create database if not exists db4 character set gbk;

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.DCL操作表

1.C(Create):创建

1.语法:

create table表名(

列名1数据类型1,

列名2数据类型2,

列名n数据类型n

);

*注意:最后一列,不需要加逗号(,)

*数据库类型:

1.int:整数类型

age int,

2.double:小数类型

score double(5,2)

3.date:日期,只包含年月日,yyyy-MM-dd

4.datetime:日期,包含年月日时分秒yyyy-MM-dd HH:mm:ss

5.timestamp:时间错类型包含年月日时分秒yyyy-MM-dd HH:mm:ss

如果将来不给这个字段赋值,或赋值为null,则默认使用当前的系统时间,来自动赋值

6.varchar:字符串

*name varchar(20):姓名最大20个字符

*zhangsan 8个字符张三2个字符

*创建表

create table student(

id int,

name varchar(32),

age int,

score double(4,1),

birthday date,

insert_time timestamp

);

*复制表:

*create table表名like被复制的表名;

2.R(Retrieve):查询

*查询某个数据库中所有的表名称

*show tables;

*查询表结构

*desc表名;

3.U(Update):修改

1.修改表名

alter table表名rename to新的表名;

2.修改表的字符集

alter table表名character set字符集名称;

3.添加一列

alter table表名add列名数据类型;

4.修改列名称类型

alter table表名change列名新列别新数据类型;

alter table表名modify列名新数据类型;

5.删除列

alter table表名drop列名;

4.D(Delete):删除

*drop table表名;

*drop table if exists表名;

*客户端图形化工具:SQLYog

DML:增删改表中数据

1.添加数据:

*语法:

*insert into表名(列名1,列名2,...列名n)values(值1,值2,...值n);

*注意:

1.列名和值要一一对应。

2.如果表名后,不定义列名,则默认给所有列添加值

insert into表名values(值1,值2,...值n);

3.除了数字类型,其他类型需要使用引号(单双都可以)引起来

2.删除数据:

*语法:

*delete from表名[where条件]

*注意:

1.如果不加条件,则删除表中所有记录。

2.如果要删除所有记录

1.delete from表名;--不推荐使用。有多少条记录就会执行多少次删除操作

2.TRUNCATE TABLE表名;--推荐使用,效率更高先删除表,然后再创建一张一样的表。

3.修改数据:

*语法:

*update表名set列名1=值1,列名2=值2,...[where条件];

*注意:

1.如果不加任何条件,则会将表中所有记录全部修改。

##DQL:查询表中的记录

*select*from表名;

1.语法:

select

字段列表

from

表名列表

where

条件列表

group by

分组字段

having

分组之后的条件

order by

排序

limit

分页限定

2.基础查询

1.多个字段的查询

select字段名1,字段名2...from表名;

*注意:

*如果查询所有字段,则可以使用*来替代字段列表。

2.去除重复:

*distinct

3.计算列

*一般可以使用四则运算计算一些列的值。(一般只会进行数值型的计算)

*ifnull(表达式1,表达式2):null参与的运算,计算结果都为null

*表达式1:哪个字段需要判断是否为null

*如果该字段为null后的替换值。

4.起别名:

*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岁

SELECT*FROM student WHERE age=20;

--查询年龄不等于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=25

SELECT*FROM student WHERE age IN(22,18,25);

--查询英语成绩为null

SELECT*FROM student WHERE english=NULL;--不对的。null值不能使用=(!=)判断

SELECT*FROM student WHERE english IS NULL;

--查询英语成绩不为null

SELECT*FROM student WHERE english IS NOT NULL;

--查询姓马的有哪些?like

SELECT*FROM student WHERE NAME LIKE'马%';

--查询姓名第二个字是化的人

SELECT*FROM student WHERE NAME LIKE"_化%";

--查询姓名是3个字的人

SELECT*FROM student WHERE NAME LIKE'___';

--查询姓名中包含德的人

SELECT*FROM student WHERE NAME LIKE'%德%';

查询缓存(了解):MySQL拿到一个查询请求后→会先到查询缓存看看之前是不是执行过这条语句→命中就返回缓存的value。【他跟Redis一样,只要是你之前执行过的语句,都会在内存里面用key-value形式存储着。缓存在MySQL8.0之后就取消了——查询的缓存容易被清空消失(原因)】 

MySQL的内连接、左连接、右连接有什么区别?

内连接:inner join;左连接:left join;右连接:right join。

内连接是把匹配的关联数据显示出来;左连接是把表全部显示出来,右边的表显示出符合条件的数据

MySQL索引是怎么实现的?

索引是满足某种特定查找算法的数据结构,而这些数据结构会以某种方式指向数据,从而实现高效查找数据。不同的数据引擎实现有所不同。

MySQL中的索引是B+树实现的,B+树的搜索效率,可以到达二分法的性能,找到数据区域之后就找到了完整的数据结构了,所有索引的性能也是更好的。

MySQL常用的引擎?

InnoDB引擎:InnoDB引擎提供了对数据库acid事务的支持,并且还提供了行级锁和外键的约束,它的设计的目标就是处理大数据容量的数据库系统。MySQL运行的时候,InnoDB会在内存中建立缓冲池,用于缓冲数据和索引。但是该引擎是不支持全文搜索,同时启动也比较的慢,它是不会保存表的行数的,所以当进行select count(*)from table指令的时候,需要进行扫描全表。由于锁的粒度小,写操作是不会锁定全表的,所以在并发度较高的场景下使用会提升效率的。

MyIASM引擎:MySQL的默认引擎,但不提供事务的支持,也不支持行级锁和外键。因此当执行插入和更新语句时,即执行写操作的时候需要锁定这个表,所以会导致效率会降低。不过和InnoDB不同的是,MyIASM引擎是保存了表的行数,于是当进行select count(*)from table语句时,可以直接的读取已经保存的值而不需要进行扫描全表。所以,如果表的读操作远远多于写操作时,并且不需要事务的支持的,可以将MyIASM作为数据库引擎的首选。

什么是锁

锁:在所以的DBMS中,锁是实现事务的关键,锁可以保证事务的完整性和并发性。

MySQL的行锁和表锁乐观锁和悲观锁

MyISAM只支持表锁,InnoDB支持表锁和行锁,默认为行锁。

表级锁:开销小,加锁快,不会出现死锁。锁定粒度大,发生锁冲突的概率最高,并发量最低。

行级锁:开销大,加锁慢,会出现死锁。锁力度小,发生锁冲突的概率小,并发度最高。

乐观锁:每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在提交更新的时候会判断一下在此期间别人有没有去更新这个数据。

悲观锁:每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻止,直到这个锁被释放。

数据库的乐观锁需要自己实现,在表里面添加一个version字段,每次修改成功值加1,这样每次修改的时候先对比一下,自己拥有的version和数据库现在的version是否一致,如果不一致就不修改,这样就实现了乐观锁。

MySQL问题排查都有哪些手段

使用show processlist命令查看当前所有连接信息。

使用explain命令查询SQL语句执行计划

开启慢查询日志,查看慢查询的SQL。

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

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

相关文章

STM32F1笔记(八)时钟

STM32有五种时钟源 1、HSI。高速内部时钟&#xff0c;RC振荡器&#xff0c;频率为8MHz。 2、HSE。高速外部时钟&#xff0c;可接石英/陶瓷谐振器&#xff0c;或者借外部时钟源&#xff0c;频率范围为4MHz~16MHz。 3、PLL。锁相环倍频输出&#xff0c;其时钟输入源可选择为HS…

java常用工具类(一)

一、String工具类 package com.mkyong.common; import java.util.ArrayList; import java.util.List; /** * * String工具类. <br> * * author 宋立君 * date 2014年06月24日 */ public class StringUtil { private static final int INDEX_NO…

python可以下载百度文库_不用下载券也能下载百度文库资料,Python帮你轻松搞定...

大家可能平时都有在百度文库下载文档的经历&#xff0c;费尽心思好不容易在文库找了一份可以用的资料&#xff0c;一看需要用下载券下载&#xff0c;搞的人很烦。 有的人为了节省时间&#xff0c;就任性办理了个文库VIP&#xff0c;再也不用纠结怎么下文档了。如果你是一个百度…

STM32F1笔记(九)通用定时器

STM32F1的定时器分为TIME1/8等高级定时器&#xff0c;TIME2~5等通用定时器&#xff0c;TIME6/7基本定时器。三者的区别主要参考《STM32中文参考手册》里特性的每种定时器主要特性的异同。 先看中文手册中通用定时器的简介&#xff1a; 通用定时器的寄存器有一个比较有趣的地方…

c++保存图标到dll_自动保存邮件附件至指定文件夹

最近有个需求&#xff0c;ERP系统会自动发很多csv附件到我邮箱&#xff0c;我需要把这些附件上传到FTP服务器&#xff0c;服务器会把这些csv的数据写到另外一个系统的数据库。每次大概有30个邮件&#xff0c;每个邮件有一个附件&#xff0c;而且附件的名字都一样&#xff0c;是…

有时在Java中,一个布局管理器是不够的

在开发Java Swing应用程序时&#xff0c;最经常的是&#xff0c;我们需要在多个嵌套面板中使用多个布局管理器。 通常这不是问题&#xff0c;并且被认为是几乎所有人类已知语言的所有UI开发的常规做法。 但是&#xff0c;大多数情况下&#xff0c;对于UI中的每个面板&#xff0…

python中print的用法_Python中print函数简单使用总结

Python中print函数简单使用总结 print函数是Python的入门&#xff0c;每一个学习python的人都绕不开这个函数&#xff0c;下面介绍一下这个函数的用法。 打开电脑&#xff0c;选择python软件&#xff0c;下面选择python 3.7为例进行介绍&#xff0c;点击python 3.7&#xff0c;…

STM32F1笔记(十)PWM

PWM&#xff1a;Pulse Width Modulation&#xff0c;脉冲宽度调制。是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单来说就是对脉冲宽度的控制。 在《STM32中文参考手册》里可以看到 占空比&#xff1a;占空比是指在一个脉冲循环内&#xff0c;通电时…

从GlassFish 3.x扩展到WebLogic 12c Server

Oracle针对GlassFish服务器的策略的主要目标之一是“与Fusion Middleware and Products集成”&#xff08;来源&#xff1a; Community Roadmap&#xff0c;2010年5月 &#xff09;。 在今年早些时候&#xff0c;您听到了很多关于两台服务器合而为一的恐惧和谣言。 看到这两种产…

hashset去重原理_基于simhash的文本去重原理

互联网网页存在着大量重复内容&#xff0c;必须有一套高效的去重算法&#xff0c;否则爬虫将做非常多的无用功&#xff0c;工作时效性无法得到保证&#xff0c;更重要的是用户体验也不好。业界关于文本指纹去重的算法众多&#xff0c;如 k-shingle 算法、google 提出的simhash …

解决express video 手机无法播放的问题

http://stackoverflow.com/questions/24976123/streaming-a-video-file-to-an-html5-video-player-with-node-js-so-that-the-video-c 项目地址 https://github.com/shenggen1987/mp4-demo express index.jade extends layoutblock contenth1 titlep Welcome to #{title}vid…

STM32F1笔记(十一)ADC

查看《STM32中文参考手册》里ADC的介绍和特性 STM32的ADC最大转换速率为1Mhz&#xff0c;即1us&#xff0c;在ADCCLK14M&#xff0c;采样周期为1.5个ADC时钟下得到。当ADC的时钟超过14M时&#xff0c;将导致结果准确度下降。 规则通道相当于正常运行的程序。注入通道就相当于中…

java epoll select_字节跳动高频面试题,操作系统/算法/Java等。

字节跳动# Java▲ 20 Java 中垃圾回收机制中如何判断对象需要回收&#xff1f;常见的 GC 回收算法有哪些&#xff1f;▲ 18 synchronized 关键字底层是如何实现的&#xff1f;它与 Lock 相比优缺点分别是什么&#xff1f;▲ 17 hashmap 和 hashtable 的区别是什么&#xff1f;▲…

STM32F1笔记(十二)DAC

先看《STM32中文参考手册》中DAC的介绍 引脚的定义与ADC类似 这里需要留意手册提供的注意&#xff0c;DAC应该是输出&#xff0c;但是GPIO初始化配置时却要设置为模拟输入。 DAC配置示例 void DAC_Init(void) {GPIO_InitTypeDef GPIO_InitStructure;DAC_InitTypeDef DAC_Init…

STM32F1笔记(十三)SPI

SPI&#xff1a;Serial Peripheral interface&#xff0c;串行外围设备接口。 SPI接口一般使用4条线通信&#xff1a; MISO主设备数据输入&#xff0c;从设备数据输出。 MOSI主设备数据输出&#xff0c;从设备数据输入。 SCLK时钟信号&#xff0c;由主设备产生。 从图中可以…

在WebLogic 12c上运行RichFaces 4.1.0.Final

您可能已经注意到&#xff0c;我只是喜欢JSF。 不仅是Mojarra的规范和参考实现&#xff0c;而且是市场上最具创意的组件套件。 这是我一直以来最喜欢的PrimeFaces &#xff0c;当然还有RichFaces 。 这就是为什么在这里找到“在xxx上运行xxx”帖子的原因:)今天是我的RichFaces和…

C语言开发笔记(一)自动转换和强制转换

整型数据和实行数据之间可以进行运算&#xff0c;而且字符型数据可以和整型数据通用&#xff0c;所以整型、实型、字符型数据之间也是可以进行运算的&#xff0c;但在运算处理之前&#xff0c;不同类型的数据要事先转换成同一种数据类型。转换方法有两种&#xff1a;自动转换和…

Maven 导出依赖Jar,生成source.jar,javadoc.jar

下载最新版的Maven http://maven.apache.org/download.cgi 解压到本地文件夹新建环境变量 MAVEN_HOME maven解压目录在path加入 %MAVEN_HOME%/bin;需要确保已经有Java环境变量 &#xff08;打开cmd java -version,javac -version两个命令看正常不&#xff09;一、导出到默认目…

asp.net 分布式应用开发

Net Framework推出的许多新技术为上述任务的实现提供了相对简单的解决方案。其中&#xff0c;基于SOAP的Web Service在处理分布式应用时具有比传统的DCOM/CORBA明显的优点&#xff0c;结合基于Web的ASP.NET页面开发技术和SQL Server数据存储技术&#xff08;或Xml文档&#xff…

C语言开发笔记(三)自加和自减

看到一段代码&#xff0c;被坑了。 #include <stdio.h>int main(void) {int a 7;printf("%d\n", a);printf("%d\n", a--);printf("%d\n", -a);printf("%d\n", -a--);printf("%d\n", a);return 0; } 结果为 -a的逻辑…