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.pswp.cn/news/374394.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/374394.shtml
英文地址,請注明出處:http://en.pswp.cn/news/374394.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用java.util.prefs.Preferences代替java.util.Properties

典型的應用程序安裝程序需要向用戶詢問幾個選項&#xff0c;其中一些是配置問題&#xff0c;例如&#xff0c;應用程序應在其上運行的端口&#xff0c;應如何運行等。應用程序必須記住這些選項&#xff0c;并在每個選項中使用它們。跑。 解決此問題的標準方法是將這些選項寫入屬…

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…

Oracle定時器調用存儲過程

關于Oracle定時器調用存儲過程的一點總結&#xff0c;如果有不足的地方&#xff0c;希望大家多多指導&#xff0c;也是第一次在博客上寫東西&#xff0c;以前也只是自己總結之后放在硬盤了&#xff0c;后來同事告訴自己&#xff0c;其實寫博客可以獲得很多&#xff0c;不管是知…

python可以下載百度文庫_不用下載券也能下載百度文庫資料,Python幫你輕松搞定...

大家可能平時都有在百度文庫下載文檔的經歷&#xff0c;費盡心思好不容易在文庫找了一份可以用的資料&#xff0c;一看需要用下載券下載&#xff0c;搞的人很煩。 有的人為了節省時間&#xff0c;就任性辦理了個文庫VIP&#xff0c;再也不用糾結怎么下文檔了。如果你是一個百度…

將對象映射到多個XML模式–天氣示例

我已經在EclipseLink JAXB&#xff08;MOXy&#xff09;的XmlPath和外部綁定文件擴展中撰寫了以前的文章。 在本文中&#xff0c;我將通過將單個對象模型映射到兩個不同的XML模式來演示這些擴展的功能。 為了使示例更加“真實”&#xff0c;XML數據將來自提供天氣信息的兩種不同…

STM32F1筆記(九)通用定時器

STM32F1的定時器分為TIME1/8等高級定時器&#xff0c;TIME2~5等通用定時器&#xff0c;TIME6/7基本定時器。三者的區別主要參考《STM32中文參考手冊》里特性的每種定時器主要特性的異同。 先看中文手冊中通用定時器的簡介&#xff1a; 通用定時器的寄存器有一個比較有趣的地方…

佳能MP258的5200錯誤和P08代碼解決方法及清零方法

參考文章轉載于:https://www.cnblogs.com/arcer/p/5659624.html

tomcat通過conf-Catalina-localhost目錄發布項目詳解

轉自&#xff1a;http://www.cnblogs.com/iyangyuan/p/3316444.html&#xff0c;感謝 楊元。 Tomcat發布項目的方式大致有三種&#xff0c;但小菜認為通過在tomcat的conf/Catalina/localhost目錄下添加配置文件&#xff0c;來發布項目&#xff0c;是最佳選擇。 因為這樣對tomca…

c++保存圖標到dll_自動保存郵件附件至指定文件夾

最近有個需求&#xff0c;ERP系統會自動發很多csv附件到我郵箱&#xff0c;我需要把這些附件上傳到FTP服務器&#xff0c;服務器會把這些csv的數據寫到另外一個系統的數據庫。每次大概有30個郵件&#xff0c;每個郵件有一個附件&#xff0c;而且附件的名字都一樣&#xff0c;是…

有時在Java中,一個布局管理器是不夠的

在開發Java Swing應用程序時&#xff0c;最經常的是&#xff0c;我們需要在多個嵌套面板中使用多個布局管理器。 通常這不是問題&#xff0c;并且被認為是幾乎所有人類已知語言的所有UI開發的常規做法。 但是&#xff0c;大多數情況下&#xff0c;對于UI中的每個面板&#xff0…

VM克隆之后啟動eth0找不到eth0:unknown interface:no such device

問題出現&#xff1a;VMware 克隆之后&#xff0c;ifconfig命令執行找不到eth0,報錯 eth0:unknown interface:no such device 是因為/etc/sysconf/network-scripts/ifcfg-eth0配置復制過來和虛擬主機的網卡Mac等信息不匹配 解決方法&#xff1b; 刪除/etc/udev/rules.d/70-pers…

“精彩極了”和“糟糕透了”

雖然已經是25歲&#xff0c;但是對小學的一篇課文依然記憶尤新&#xff0c;《“精彩極了”和“糟糕透了”》。 課文正文 記得七八歲的時候&#xff0c;我寫了第一首詩。母親一念完那首詩&#xff0c;眼睛亮亮的&#xff0c;興奮地嚷著&#xff1a;“巴迪&#xff0c;真是你寫的…

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;您聽到了很多關于兩臺服務器合而為一的恐懼和謠言。 看到這兩種產…

移動互聯網時代:如何讓女孩愛上你在一分鐘內?

部分《移動互聯網時代&#xff1a;讓女孩愛上你在一分鐘內》其實我只是做原來的盲目思想有移動互聯網的自主知識產權&#xff0c;他沒有詳細說明如何真正讓女孩愛上你在一分鐘內&#xff1f;在真實生活中&#xff0c;預期也沒有那么簡單&#xff0c;易于&#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;將導致結果準確度下降。 規則通道相當于正常運行的程序。注入通道就相當于中…