当前位置:网站首页>Mysql database (IV) transactions and functions

Mysql database (IV) transactions and functions

2022-07-06 15:10:00 Hand pluckable Xinchen

1, Business

Concept : Is to put a group SQL Statements are executed in the same batch , If one SQL Statement error , Then all of the SQL Will be cancelled .

characteristic : If a database operation fails in a transaction , Then all database operations of the whole transaction will fail , The database data will be rolled back to the state before the transaction .
Limit :MySQL Only in the database InnoDB and BDB Database tables of type support transactions .

2, The principle of affairs

(1) Atomicity  
         It means that the transaction execution in the database is as atomic granularity . That is, it can no longer be divided , The whole statement either executes , Or not .
(2) Uniformity
         That is, before the transaction starts and after the transaction ends , The database integrity constraint is not broken .
(3) Isolation,
         The execution of transactions is non-interference , It's impossible for one transaction to see other transactions running , Data at some point in the middle .
(4) persistence
         It means after the transaction is completed , Changes made by the firm to the database are persisted in the database , It's not
Rolled back .

3, The way to implement a transaction

        COMMIT  Commit a transaction to the database .
        START TRANSACTION  Start a transaction , Mark the starting point of a transaction .
        ROLLBACK  Roll back the transaction , The data returns to the initial state of this transaction .
        SET AUTOCOMMIT  Use this statement to change the auto submit mode , be equal to 0 Turn off auto submit mode , be equal to 1 Turn on auto submit mode . The default is 1, When using transactions 0.

4, Steps to implement a transaction

(1)SET AUTOCOMMIT = 0;              close MySQL Automatic submission
(2)START TRANSACTION;                  Start a transaction , Mark the starting point of a transaction
(3)COMMIT;                                          Commit a transaction to the database
(4)ROLLBACK;                                  Roll back the transaction , All database operations are cancelled
(5)SET AUTOCOMMIT = 1;              Turn on MySQL Automatic submission
--  Operation of transaction 
-- 1, Turn off auto submit 
SET autocommit = 0;

-- 2, Open transaction 
START TRANSACTION;

-- 3, Perform a group of SQL sentence 
update bank set bmoney = bmoney-1000 where bname=' Ma Zhi ';
update bank set bmoney = bmoney+1000 where bname=' Liu Xinmiao ';

-- 4, End the business 
-- 4.1  Submit 
COMMIT;

-- 4.2  Roll back 
ROLLBACK;

SET autocommit = 1;

5,MySQL The four isolation levels

(1)Read Uncommitted( Read uncommitted content ) Also known as “ Dirty reading ”

(2)Read Committed( Read submissions   Also called non repeatable )

(3)Repeatable Read( Can be reread ) Add the corresponding “ Fantasy reading ”

(4)Serializable( Serializable )

--  View the current isolation level 
select @@global.transaction_isolation,@@transaction_isolation;

 6,MySQL function

Function name Return value
curdate()
Returns the current date
curtime() Return to the current time
now()
Returns the current date and time
date_format(date,fmt)
As specified fmt Format format date date value
year(date)
Return date date A year of (1000~9999)
month(date)
return date The month of (1~12)
day(date) return date Day of
#  function 
--  Must appear in SQL In the sentence , Not alone 

--  Date function 
SELECT CURDATE();

SELECT CURTIME();

SELECT NOW();

SELECT DAYOFWEEK(NOW()) - 1  week ;

--  Please check the students whose birthdays are in that month 
SELECT * FROM student WHERE MONTH(birthday)  = MONTH(NOW());

--  Format date 
SELECT DATE_FORMAT(NOW(),'%Y-%c-%d');

7, Calculate the difference between dates

--  Time difference ( Days )
SELECT DATEDIFF(NOW(),'2022-5-1');
--  Time difference calculation date 
-- +  How long after the date   -  How long ago was the date 
SELECT NOW() + INTERVAL 14 DAY;
SELECT * FROM student WHERE MONTH(birthday)  = MONTH(NOW());

8, Common string functions

Function name Return value
concat(s1,s2...sn)
take s1,s2...,sn Concatenated into a string
concat_ws(sep,s1,s2...sn)
take s1,s2...,sn Concatenated into a string , And use sep Character spacing
--  String function 
SELECT CONCAT('hello',' Hello ');
SELECT CONCAT_WS('!','hello',' Hello ');

8, Common mathematical functions

Function name Return value
ceiling(x)
Return is greater than the x The minimum integer value of
floor(x)
Back to less than x The maximum integer value of
round(x,y)
Returns the parameter x The rounding of is y A decimal value
truncate(x,y)
Return to digital x Truncate to y The result of decimal places
--  Rounding up 
SELECT CEILING(68.15);

--  Rounding down 
SELECT FLOOR(68.15);

--  rounding 
SELECT ROUND(68.55,1);

--  truncation 
SELECT TRUNCATE(68.55,1);
--  Aggregate functions 
SELECT ssex,COUNT(*),GROUP_CONCAT(sname) FROM student GROUP BY ssex;

9, The slow query

Concept :MySQL Default 10 No response in seconds SQL result , Slow query .

#  The slow query 

select count(*) from emp;
select count(1) from emp;
select count(eid) from emp;

show create table emp;

CREATE TABLE `emp` (
  `eid` bigint(20) DEFAULT NULL,
  `ename` varchar(10) DEFAULT NULL,
  `esex` varchar(5) DEFAULT NULL,
  `ebirthday` datetime DEFAULT NULL,
  `ehisday` datetime DEFAULT NULL,
  `job` varchar(15) DEFAULT NULL,
  `emoney` decimal(10,2) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci


--  View connections 
show status like 'connections'; 

--  Slow query status   OFF  close   ON  Turn on 
Show variables like '%slow_query%';

--  Turn on slow query 
set global slow_query_log='ON';

set global log_output='TABLE';

--  The number of slow queries 
show status like 'slow_queries';

select * From mysql.slow_log ;

select convert(sql_text using utf8) sql_text from mysql.slow_log

ALL: This connection type performs a full scan on each of the previous records Union , This is generally worse , It should be avoided as much as possible .

explain select eid,ename,esex,ebirthday,ehisday,job ,emoney 
from emp where eid = 20000;

10, Indexes

Concept : An index is a structure that sorts the values of a column or columns in a database table , Use indexes to quickly access specific information in database tables .

characteristic :

(1) Efficiency : Using index can improve the efficiency of database query .

(2) integrity : Users can accelerate the connection between meters , Achieve referential integrity between tables .

(3) Uniqueness : The index can ensure the uniqueness of the checked data .

(4) Special abilities : By using index , In the process of query , Using the optimize hide tool , Improve system performance .

shortcoming :

(1) Although the index greatly improves the query speed , At the same time, it will reduce the speed of updating the table , Such as on the table INSERT、

UPDATE and DELETE.
(2) Because when updating tables ,MySQL Not only to save data , And save the index file . Indexing will occupy disk
Index file of space .
(3) If you create multiple combined indexes on a large table , Index files will expand quickly .

11, Classification of indexes

(1) primary key          Defining a primary key for a table in a database diagram will automatically create a primary key index .

(2) unique index          Rows with the same index value are not allowed , This prevents duplicate indexes or key values .      

(3) General index          The most basic index type , There's no such thing as uniqueness .

(4) Full-text index          The key technology of search engine , Used to retrieve text information , It can be words or paragraphs .

alter table emp add primary key (eid);

explain select eid,ename,esex,ebirthday,ehisday,job ,emoney 
from emp where eid = 44040;

explain select * from emp where ename = ' Weicui '

--  Add general index 
alter table emp add index(ename);
create table wenzhang(
	wid int PRIMARY KEY auto_increment,
	title varchar(20),  
	content text, 
	zuozhe varchar(20), 
	FULLTEXT(title,content,zuozhe) with parser ngram
);

insert into wenzhang(title,content,zuozhe) 
values
(' Xi'an past ',' This is an ancient city , There are many people in this city , factory , building ',' Old Xue '),
(' Shanxi past ',' This is an ancient city , There are many people here , factory , Architecture ',' Old Xu '),
(' The past of the earth ',' This is an ancient planet , There are many people here ',' Lao Liu is in Xi'an '),
(' Galactic past ',' This is a department , I plan to build a Xi'an outside this department ',' Peng ');

--  It is a kind of fuzzy query 
select * from wenzhang where match(title,content,zuozhe) AGAINST(' Xi'an ');
select * from wenzhang where match(title,content) AGAINST(' Xi'an ');
alter table wenzhang add fulltext(title,content) with parser ngram;


--  Look at the index 
show index from student;
  cardinality / count(*)  The closer the 1  The better   The closer the 0  Worse 

show index from emp;



 

原网站

版权声明
本文为[Hand pluckable Xinchen]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/187/202207060919160161.html

随机推荐