Collect and sort out common mysql SQL skills,
If you don't talk much about it, You can directly post code to everyone.
1. Number Auxiliary table
// Create table test (id int unsigned not null primary key); delimiter // create procedure pnum (cnt int unsigned) begindeclare I int unsigned default 1; insert into num select I; while I * 2 <cnt doinsert into num select I + id from num; set I = I * 2; end while; end // delimiter; ##### column value discontinuous problem: the id value in Table a is 3,100,101,110,111, set @ q = 0; select id, @ q: = @ q + 1 as cn from a; ##### grouping discontinuous sets @ a = 0; select min (id) as start_v, max (id) as end_v from (select id, cn, id-cn as diff from (select id, @ a: = @ a + 1 as cn from pi) as p) as pp group by diff; ##### use test for Discontinuous values; drop table if EXISTS pincer; create table pincer (a int UNSIGNED ); insert into pincer values (1), (2), (5), (100), (101), (103), (104), (105 ); select a + 1 as start, (select min (a)-1 from pincer as ww where ww. a> qq. a) as end from pincer as qq where not exists (select * from pincer as pp where qq. a + 1 = pp. a) and a <(select max (a) from pincer); ################ select id, num, ranknum, diff from (select id, num, ranknum, num-ranknum as diff from (select id, num, if (@ id = id, @ rownum: = @ rownum + 1, @ rownum: = 1) ranknum, @ id: = id from tt, (select @ rownum: = 0, @ id: = null) a) B) c group by id, diff having count (*)> = 2 ;################
2. Birthday issues
select name,birthday,if(cur>today,cur,next) as birth_dayfrom(select name,birthday,today,date_add(cur,interval if(day(birthday)=29 && day(cur)=28,1,0) day)as cur, date_ad(next,interval if(day(birthday)=29 && day(next)=28,1,0) day) as nextfrom(select name,birthday,today, date_add(birthday,interval diff year) as cur, date_add(birthday,interval diff+1 year) as next,from(select concat(laster_name,'',first_name) as name, birth_date as birthday, (year(now())-year(birth_date) )as diff, now() as today from employees) as a) as b) as c
3. date problem ---- computing workday
Create table sals (id int, date datetime, cost int, primary key (id); select date_add ('2017-01-01 ', interval floor (datediff (date, '2017-01-01 ')/7) * 7 day) as week_start, date_add ('2017-01-01', interval floor (datediff (date, '2017-01-01 ') /7*7 + 6 days) as week_end, sum (cost) from sales; Calculate the Business day (specify the number of business days for two date segments) create procedure pgetworkdays (s datetime, e datetime) beginselect floor (days/7) * 5 + days % 7 case when 6 between wd and wd + days % 7-1 then 1 else 0 endcase then 7 between wd and wd + days % 7-1 then 1 else 0 endfrom (select datediff (e, s) + 1 as days, weekday (s) + 1 as wd) as a; end;
Mysql SQL statement Overview
1. Description: Create a database
Create database database-name
2. Description: delete a database.
Drop database dbname
3. Description: Back up SQL server
--- Create a device for the backup data
USE master
EXEC sp_addumpdevice 'disk', 'testback', 'c: \ mssql7backup \ MyNwind_1.dat'
--- Start backup
Backup database pubs TO testBack
4. Description: Create a new table.
Create table tabname (col1 type1 [not null] [primary key], col2 type2 [not null],...)
Create a new table based on an existing table:
A: create table tab_new like tab_old (use the old table to create A new table)
B: create table tab_new as select col1, col2... From tab_old definition only
5. Description: delete a new table.
Drop table tabname
6. Description: Add a column.
Alter table tabname add column col type
Note: Columns cannot be deleted after they are added. After columns are added to DB2, the data type cannot be changed. The only change is to increase the length of the varchar type.
7. Description: add a primary key: Alter table tabname add primary key (col)
Delete a primary key: Alter table tabname drop primary key (col)
8. Description: create an index: create [unique] index idxname on tabname (col ....)
Delete index: drop index idxname
Note: The index cannot be changed. To change the index, you must delete it and recreate it.
9. Description: create view viewname as select statement
Delete view: drop view viewname
10. Description: several simple basic SQL statements
Select: select * from table1 where range
Insert: insert into table1 (field1, field2) values (value1, value2)
Delete: delete from table1 where range
Update: update table1 set field1 = value1 where range
Search: select * from table1 where field1 like '% value1 %' --- the like syntax is very subtle, query information!
Sort: select * from table1 order by field1, field2 [desc]
Total: select count as totalcount from table1
Sum: select sum (field1) as sumvalue from table1
Average: select avg (field1) as avgvalue from table1
Max: select max (field1) as maxvalue from table1
Min: select min (field1) as minvalue from table1
11. Description: several advanced query Operators
A: UNION operator
The UNION operator combines two other result tables (such as TABLE1 and TABLE2) and removes any duplicate rows from the table to generate a result table. When ALL is used together with UNION (that is, union all), duplicate rows are not eliminated. In either case, each row of the derived table is from either TABLE1 or table2.
B: Random t operator
The distinct t operator derives a result table by including all rows in Table 1 but not in table 2 and eliminating all repeated rows. When ALL is used with distinct T (distinct t all), duplicate rows are not eliminated.
C: INTERSECT Operator
The INTERSECT operator derives a result table by only including the rows in TABLE1 and TABLE2 and eliminating all repeated rows. When ALL is used with INTERSECT (intersect all), duplicate rows are not eliminated.
Note: The query results of several computation words must be consistent.
12. Note: use external connections
A. left (outer) join:
Left Outer Join (left join): the result set contains the matched rows in the connected table, and all rows in the left connected table.
SQL: select a. a, a. B, a. c, B. c, B. d, B. f from a left out join B ON a. a = B. c
B: right (outer) join:
Right Outer Join (right join): the result set includes both matched join rows in the connection table and all rows in the right join table.
C: full/cross (outer) join:
Full outer join: includes not only matching rows in the symbolic join table, but also all records in the two join tables.
12. Group: Group:
A table can only obtain group-related information after the query.
Group-related information: (Statistical Information) Standard of count, sum, max, min, and avg groups)
When grouping in SQLServer: fields of the text, ntext, and image types cannot be used as grouping bases.
Fields in the selecte statistical function cannot be put together with common fields;
13. perform operations on the database:
Detaching a database: sp_detach_db; appending a database: sp_attach_db indicates that the complete path name must be appended.
14. How to modify the Database Name:
Sp_renamedb 'old _ name', 'new _ name'
Articles you may be interested in:
- Six tips for MySQL database performance optimization
- Difference between mysql and select count
- 101 MySQL optimization tips and tips
- MySQL index type summary and usage tips and precautions
- Binlog commands and restoration techniques in MySQL
- How to quickly access mysql using cmd
- Usage of visual charts in MySQL and tips on multi-Table INNER JOIN
- Mysql tips: speed up data insertion (adding records)
- Php performance optimization techniques for importing large amounts of data to mysql
- Tips for optimizing distinct in MySQL