Calculate the number of visits based on days
First create a table and insert some data. Each piece of data represents the date the user visited a certain website. (For example: 2000-01-01)
mysql> CREATE TABLE t1(
-> year YEAR(4),
-> month INT(2) UNSIGNED ZEROFILL,
-> day INT(2) UNSIGNED ZEROFILL
-> );
Query OK, 0 rows affected (0.53 sec)
mysql> INSERT INTO t1 VALUES(2000,1,1) ,(2000,1,20),(2000,1,30),(2000,2,2),
-> (2000,2,23),(2000,2,23);
Query OK, 6 rows affected (0.08 sec)
Records: 6 Duplicates: 0 Warnings: 0
mysql>
Chestnut: Query the number of visit days per month (duplicates are not counted)
The operation is as follows:
SELECT year, month, BIT_COUNT(BIT_OR(1
mysql> SELECT year, month,
-> BIT_COUNT(BIT_OR(1-> GROUP BY year, month ;
+------+-------+-----+
| year | month | day |
+------+--- ----+-----+
| 2000 | 01 | 3 |
| 2000 | 02 | 2 |
+------+-------+ -----+
2 rows in set (0.00 sec)
mysql>
Portal Share a blog explaining BIT_COUNT() and BIT_OR().
There is another teleporter who reads the same books as me.
Check the data in the table:
mysql> SELECT * FROM t1;
+------+- ------+------+
| year | month | day |
+------+-------+------+
| 2000 | 01 | 01 |
| 2000 | 01 | 20 |
| 2000 | 01 | 30 |
| 2000 | 02 | 02 |
| 2000 | 02 | 23 |
| 2000 | 02 | 23 |
+------+-------+------+
6 rows in set (0.00 sec)
mysql>
If you feel like you don’t understand it after reading it, then just listen to my vernacular.
Read this operation:
SELECT year, month, BIT_COUNT(BIT_OR(1
I believe that most people will have two doubts in their minds. What do BIT_OR() and BIT_COUNT() do? Why is this still done?
First explain the BIT_COUNT() function:
BIT_COUNT(N) returns the number of 1's in N (binary).
I'll write a chestnut and you can Got it:
SELECT BIT_COUNT(100); What’s the answer to this?
Think about the binary representation of 100: 1100100
mysql> SELECT bin(100);
+----------+
| bin( 100) |
+----------+
| 1100100 |
+----------+
1 row in set (0.00 sec)
mysql>
Then the answer should be 3?
mysql> SELECT BIT_COUNT(100);
+----------------+
| BIT_COUNT(100) |
+-- ----------------+
| 3 |
+----------------+
1 row in set ( 0.00 sec)
mysql>
Young man, you have really good eyesight, the answer is 3.
Now you know what the BIT_COUNT() function does.
Then let’s discuss the second question. What does BIT_OR() do?
Even though they look alike, they have different functions.
BIT_OR(expr) is to OR all the fields in the expr column. The accuracy of calculation execution is 64 bits. Many blogs here have not listed examples of how to use it. Maybe they think it is simple, or maybe Even they don’t know how to use it (they definitely don’t know how to use it, hehehe)
The previous shop table is used as an operation:
SELECT * FROM shop;
mysql> SELECT * FROM shop;
+---------+--------+-------+
| article | dealer | price |
+ ---------+--------+-------+
| 0001 | A | 3.45 |
| 0001 | B | 3.99 |
| 0002 | A | 10.99 |
| 0003 | B | 1.45 |
| 0003 | C | 1.69 |
| 0003 | D | 1.25 |
| 0004 | D | 19.95 |
+---------+--------+-------+
7 rows in set (0.06 sec)
Let’s try BIT_OR() on the article column. Before the experiment, guess what the result should be?
0001
0001
0010
0011
0011
0011
OR 0100
————————
0111
Should the result be like this?
mysql> SELECT BIT_OR(article) FROM shop;
+-----------------+
| BIT_OR(article) |
+-----------------+
| 7 |
+------------------+
1 row in set (0.00 sec)
mysql>
7 is binary 0111, right, and no matter how many 1 there are, the result of continuous OR is always 1
1 or 1 or 0 or 1 = 1
The logic in this question is: No matter how many times I visited today, I have visited this website (the logical representation is 1)
Let’s go back and look at this operation again:
SELECT year, month, BIT_COUNT(BIT_OR(1
Now it seems much easier to explain. 1 Shift the number of days to the left, and the corresponding number of digits represents the day of the month (64 bits are enough anyway). For example, today 2017-06-02
1
UseAUTO_INCREMENT
Just listen to the name and you will know that it will be automatically added. Just go to the operation:
mysql> CREATE TABLE animals(
-> id MEDIUMINT NOT NULL AUTO_INCREMENT,
-> name CHAR(30) NOT NULL,
-> PRIMARY KEY(id)
-> );
Query OK, 0 rows affected (0.85 sec)
mysql> INSERT INTO animals (name) VALUES
- > ('dog'),('cat'),('penguin'),
-> ('lax'),('whale'),('ostrich');
Query OK, 6 rows affected (0.13 sec)
Records: 6 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM animals;
+----+--------- +
| id | name |
+----+---------+
| 1 | dog |
| 2 | cat |
| 3 | penguin |
| 4 | lax |
| 5 | whale |
| 6 | ostrich |
+----+---------+
6 rows in set (0.00 sec)
mysql>
First create an animals table with fields id and name. The id is set to an auto-incrementing primary key, and only the name is written when inserting data. Then the id will be filled in automatically.
There is also another command that can modify the starting value of AUTO_INCREMENT.
The operation is as follows:
ALTER TABLE tbl_name AUTO_INCREMENT = 2333;
to be continued. ..
The above is the detailed content of Mysql study notes. For more information, please follow other related articles on the PHP Chinese website!

MySQL's position in databases and programming is very important. It is an open source relational database management system that is widely used in various application scenarios. 1) MySQL provides efficient data storage, organization and retrieval functions, supporting Web, mobile and enterprise-level systems. 2) It uses a client-server architecture, supports multiple storage engines and index optimization. 3) Basic usages include creating tables and inserting data, and advanced usages involve multi-table JOINs and complex queries. 4) Frequently asked questions such as SQL syntax errors and performance issues can be debugged through the EXPLAIN command and slow query log. 5) Performance optimization methods include rational use of indexes, optimized query and use of caches. Best practices include using transactions and PreparedStatemen

MySQL is suitable for small and large enterprises. 1) Small businesses can use MySQL for basic data management, such as storing customer information. 2) Large enterprises can use MySQL to process massive data and complex business logic to optimize query performance and transaction processing.

InnoDB effectively prevents phantom reading through Next-KeyLocking mechanism. 1) Next-KeyLocking combines row lock and gap lock to lock records and their gaps to prevent new records from being inserted. 2) In practical applications, by optimizing query and adjusting isolation levels, lock competition can be reduced and concurrency performance can be improved.

MySQL is not a programming language, but its query language SQL has the characteristics of a programming language: 1. SQL supports conditional judgment, loops and variable operations; 2. Through stored procedures, triggers and functions, users can perform complex logical operations in the database.

MySQL is an open source relational database management system, mainly used to store and retrieve data quickly and reliably. Its working principle includes client requests, query resolution, execution of queries and return results. Examples of usage include creating tables, inserting and querying data, and advanced features such as JOIN operations. Common errors involve SQL syntax, data types, and permissions, and optimization suggestions include the use of indexes, optimized queries, and partitioning of tables.

MySQL is an open source relational database management system suitable for data storage, management, query and security. 1. It supports a variety of operating systems and is widely used in Web applications and other fields. 2. Through the client-server architecture and different storage engines, MySQL processes data efficiently. 3. Basic usage includes creating databases and tables, inserting, querying and updating data. 4. Advanced usage involves complex queries and stored procedures. 5. Common errors can be debugged through the EXPLAIN statement. 6. Performance optimization includes the rational use of indexes and optimized query statements.

MySQL is chosen for its performance, reliability, ease of use, and community support. 1.MySQL provides efficient data storage and retrieval functions, supporting multiple data types and advanced query operations. 2. Adopt client-server architecture and multiple storage engines to support transaction and query optimization. 3. Easy to use, supports a variety of operating systems and programming languages. 4. Have strong community support and provide rich resources and solutions.

InnoDB's lock mechanisms include shared locks, exclusive locks, intention locks, record locks, gap locks and next key locks. 1. Shared lock allows transactions to read data without preventing other transactions from reading. 2. Exclusive lock prevents other transactions from reading and modifying data. 3. Intention lock optimizes lock efficiency. 4. Record lock lock index record. 5. Gap lock locks index recording gap. 6. The next key lock is a combination of record lock and gap lock to ensure data consistency.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

SublimeText3 Chinese version
Chinese version, very easy to use

mPDF
mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

DVWA
Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

Dreamweaver Mac version
Visual web development tools

SecLists
SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.