mysql学习笔记---sql语句

2023-05-16

基本select查询

1,设置系统变量@@sql_mode,有一些限制规则,日期不能为0,除数不能为0,自增不能从0开始,授权用户密码不能为空
@@sql_mode 一般不改

lele@(none) 14:36  mysql>select @@sql_mode;
+-------------------------------------------------------------------------------------------------------------------------------------------+
| @@sql_mode                                                                                                                                |
+-------------------------------------------------------------------------------------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+-------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

存储引擎:

mysql 默认的存储引擎:innodb
show engines; 查看有哪些存储引擎

根据作用域的不同,可分为:

global @@sql_mode  全局sql_mode
session@@sql_mode  当前sql_mode

变量的创建和使用

root@(none) 14:44  mysql>set @sg="wangwang" ;
Query OK, 0 rows affected (0.00 sec)

root@(none) 14:51  mysql>select @sg;
+----------+
| @sg      |
+----------+
| wangwang |
+----------+
1 row in set (0.00 sec)

sql语句的语法规则:

大写字母表示关键字

实操:

root@TENNIS 15:17  mysql>show tables;
+-------------------+
| Tables_in_TENNIS  |
+-------------------+
| COMMITTEE_MEMBERS |
| MATCHES           |
| PENALTIES         |
| PLAYERS           |
| TEAMS             |
+-------------------+
5 rows in set (0.00 sec)

只取某个表的前三行

root@TENNIS 15:11  mysql>select * from PENALTIES LIMIT 3;
+-----------+----------+--------------+--------+
| PAYMENTNO | PLAYERNO | PAYMENT_DATE | AMOUNT |
+-----------+----------+--------------+--------+
|         1 |        6 | 1980-12-08   | 100.00 |
|         2 |       44 | 1981-05-05   |  75.00 |
|         3 |       27 | 1983-09-10   | 100.00 |
+-----------+----------+--------------+--------+
3 rows in set (0.00 sec)

排序 order by,默认升序(asc),降序(desc)

root@TENNIS 15:15  mysql>SELECT * FROM PENALTIES ORDER BY AMOUNT DESC;
+-----------+----------+--------------+--------+
| PAYMENTNO | PLAYERNO | PAYMENT_DATE | AMOUNT |
+-----------+----------+--------------+--------+
|         1 |        6 | 1980-12-08   | 100.00 |
|         3 |       27 | 1983-09-10   | 100.00 |
|         2 |       44 | 1981-05-05   |  75.00 |
|         8 |       27 | 1984-11-12   |  75.00 |
|         4 |      104 | 1984-12-08   |  50.00 |
|         7 |       44 | 1982-12-30   |  30.00 |
|         5 |       44 | 1980-12-08   |  25.00 |
|         6 |        8 | 1980-12-08   |  25.00 |
+-----------+----------+--------------+--------+
8 rows in set (0.00 sec)

取罚款前三名

root@TENNIS 15:15  mysql>SELECT * FROM PENALTIES ORDER BY AMOUNT DESC LIMIT 3;
+-----------+----------+--------------+--------+
| PAYMENTNO | PLAYERNO | PAYMENT_DATE | AMOUNT |
+-----------+----------+--------------+--------+
|         1 |        6 | 1980-12-08   | 100.00 |
|         3 |       27 | 1983-09-10   | 100.00 |
|         2 |       44 | 1981-05-05   |  75.00 |
+-----------+----------+--------------+--------+
3 rows in set (0.00 sec)

从第2行后面开始取(不包括这一行),取三行

root@TENNIS 15:16  mysql>SELECT * FROM PENALTIES ORDER BY AMOUNT DESC LIMIT 2,3;
+-----------+----------+--------------+--------+
| PAYMENTNO | PLAYERNO | PAYMENT_DATE | AMOUNT |
+-----------+----------+--------------+--------+
|         2 |       44 | 1981-05-05   |  75.00 |
|         8 |       27 | 1984-11-12   |  75.00 |
|         4 |      104 | 1984-12-08   |  50.00 |
+-----------+----------+--------------+--------+
3 rows in set (0.00 sec)

select 取出来的默认不会排序

排序可以是单一字段来排,也可以根据多个字段,多个字段排序的时候,先根据一个字段来排,第一个字段相同,再根据后面的字段来排,如果在字段后面跟 desc 则指定该字段降序排列,不跟默认为升序排列。

root@TENNIS 15:27  mysql>SELECT * FROM PENALTIES ORDER BY AMOUNT,PLAYERNO DESC LIMIT 2,3;
+-----------+----------+--------------+--------+
| PAYMENTNO | PLAYERNO | PAYMENT_DATE | AMOUNT |
+-----------+----------+--------------+--------+
|         7 |       44 | 1982-12-30   |  30.00 |
|         4 |      104 | 1984-12-08   |  50.00 |
|         2 |       44 | 1981-05-05   |  75.00 |
+-----------+----------+--------------+--------+
3 rows in set (0.00 sec)

sql语句的大小写问题

关键字大小写不敏感
库名,表名大小写敏感
列名大小写不敏感

列别名
列名 别名
列名 as 别名
如果别名有多个单词组成,中间有空格,需要用“ ”引起来

root@TENNIS 15:45  mysql>SELECT playerno p,amount a FROM PENALLTIES ORDER BY AMOUNT,PLAYERNO DESC LIMIT 2,3;
+-----+-------+
| p   | a     |
+-----+-------+
|  44 | 30.00 |
| 104 | 50.00 |
|  44 | 75.00 |
+-----+-------+
3 rows in set (0.00 sec)

查询所有的罚款信息,要求显示球员编号,罚款金额,罚款金额+300

root@TENNIS 15:49  mysql>SELECT playerno,amount,amount+300 FROM PENALTIES;
+----------+--------+------------+
| playerno | amount | amount+300 |
+----------+--------+------------+
|        6 | 100.00 |     400.00 |
|       44 |  75.00 |     375.00 |
|       27 | 100.00 |     400.00 |
|      104 |  50.00 |     350.00 |
|       44 |  25.00 |     325.00 |
|        8 |  25.00 |     325.00 |
|       44 |  30.00 |     330.00 |
|       27 |  75.00 |     375.00 |
+----------+--------+------------+
8 rows in set (0.00 sec)

给amount+300取别名

root@TENNIS 15:53  mysql>SELECT playerno,amount,amount+300 new_amount FROM PENALTIES;
+----------+--------+------------+
| playerno | amount | new_amount |
+----------+--------+------------+
|        6 | 100.00 |     400.00 |
|       44 |  75.00 |     375.00 |
|       27 | 100.00 |     400.00 |
|      104 |  50.00 |     350.00 |
|       44 |  25.00 |     325.00 |
|        8 |  25.00 |     325.00 |
|       44 |  30.00 |     330.00 |
|       27 |  75.00 |     375.00 |
+----------+--------+------------+
8 rows in set (0.00 sec)

select表达式遵循运算法则

NULL值
一个列具有NULL值,表示该值是未知的
NULL值不等于空的值或0,

空值(有值,但是空的值)和null值(无值,真空)

root@TENNIS 16:04  mysql>select playerno,name,leagueno from PLAYERS;
+----------+-----------+----------+
| playerno | name      | leagueno |
+----------+-----------+----------+
|        2 | Everett   | 2411     |
|        6 | Parmenter | 8467     |
|        7 | Wise      | NULL     |
|        8 | Newcastle | 2983     |
|       27 | Collins   | 2513     |
|       39 | Bishop    | NULL     |
|       44 | Baker     | 1124     |
|       57 | Brown     | 6409     |
|       83 | Hope      | 1608     |
|       95 | Miller    | NULL     |
|      100 | Parmenter | 6524     |
|      104 | Moorman   | 7060     |
|      112 | Bailey    | 1319     |
+----------+-----------+----------+
13 rows in set (0.00 sec)


root@TENNIS 16:03  mysql>select playerno,name,leagueno from PLAYERS where leagueno is not null;
+----------+-----------+----------+
| playerno | name      | leagueno |
+----------+-----------+----------+
|        2 | Everett   | 2411     |
|        6 | Parmenter | 8467     |
|        8 | Newcastle | 2983     |
|       27 | Collins   | 2513     |
|       44 | Baker     | 1124     |
|       57 | Brown     | 6409     |
|       83 | Hope      | 1608     |
|      100 | Parmenter | 6524     |
|      104 | Moorman   | 7060     |
|      112 | Bailey    | 1319     |
+----------+-----------+----------+
10 rows in set (0.00 sec)

拼接
[root@master ~]# cat /etc/hostname /etc/hostname
master
master

root@TENNIS 16:05  mysql>select playerno,name,leagueno from PLAYERS where leagueno is not null;select concat(playerno," ",name) new_name,town from PLAYERS;
+----------+-----------+----------+
| playerno | name      | leagueno |
+----------+-----------+----------+
|        2 | Everett   | 2411     |
|        6 | Parmenter | 8467     |
|        8 | Newcastle | 2983     |
|       27 | Collins   | 2513     |
|       44 | Baker     | 1124     |
|       57 | Brown     | 6409     |
|       83 | Hope      | 1608     |
|      100 | Parmenter | 6524     |
|      104 | Moorman   | 7060     |
|      112 | Bailey    | 1319     |
+----------+-----------+----------+
10 rows in set (0.00 sec)

+---------------+-----------+
| new_name      | town      |
+---------------+-----------+
| 2 Everett     | Stratford |
| 6 Parmenter   | Stratford |
| 7 Wise        | Stratford |
| 8 Newcastle   | Inglewood |
| 27 Collins    | Eltham    |
| 39 Bishop     | Stratford |
| 44 Baker      | Inglewood |
| 57 Brown      | Stratford |
| 83 Hope       | Stratford |
| 95 Miller     | Douglas   |
| 100 Parmenter | Stratford |
| 104 Moorman   | Eltham    |
| 112 Bailey    | Plymouth  |
+---------------+-----------+
13 rows in set (0.00 sec)

指定分隔符

root@TENNIS 16:10  mysql>select concat_ws(",",playerno,name) new_name,town from PLAYERS;                                   
+---------------+-----------+
| new_name      | town      |
+---------------+-----------+
| 2,Everett     | Stratford |
| 6,Parmenter   | Stratford |
| 7,Wise        | Stratford |
| 8,Newcastle   | Inglewood |
| 27,Collins    | Eltham    |
| 39,Bishop     | Stratford |
| 44,Baker      | Inglewood |
| 57,Brown      | Stratford |
| 83,Hope       | Stratford |
| 95,Miller     | Douglas   |
| 100,Parmenter | Stratford |
| 104,Moorman   | Eltham    |
| 112,Bailey    | Plymouth  |
+---------------+-----------+
13 rows in set (0.00 sec)

常量/字面量
日期格式:建议用 - 隔开 eg:2020-10-27

三大数据类型:
数值型
字符串类型
日期时间类型
TIME
DATE
DATETIME
TIMESTAMP

SELECT NOW() ----当前时间

root@TENNIS 16:13  mysql>SELECT NOW();
+---------------------+
| NOW()               |
+---------------------+
| 2020-10-27 16:19:31 |
+---------------------+
1 row in set (0.00 sec)
root@TENNIS 16:20  mysql>CREATE TABLE TIMESTAMP_TABLE(COLUMN1 TIMESTAMP);
Query OK, 0 rows affected (0.05 sec)

root@TENNIS 16:21  mysql>INSERT INTO TIMESTAMP_TABLE VALUES(NOW());
Query OK, 1 row affected (0.01 sec)

root@TENNIS 16:21  mysql>select * from TIMESTAMP_TABLE;
+---------------------+
| COLUMN1             |
+---------------------+
| 2020-10-27 16:21:41 |
+---------------------+
1 row in set (0.00 sec)

时区查看

root@TENNIS 16:22  mysql>select @@time_zone,@@system_time_zone;
+-------------+--------------------+
| @@time_zone | @@system_time_zone |
+-------------+--------------------+
| SYSTEM      | CST                |
+-------------+--------------------+
1 row in set (0.01 sec)

时间间隔:interval

root@TENNIS 16:31  mysql>select now() + interval 3 hour;
+-------------------------+
| now() + interval 3 hour |
+-------------------------+
| 2020-10-27 19:31:37     |
+-------------------------+
1 row in set (0.04 sec)

去重:distinct

root@TENNIS 16:33  mysql>select town from PLAYERS;
+-----------+
| town      |
+-----------+
| Stratford |
| Stratford |
| Stratford |
| Inglewood |
| Eltham    |
| Stratford |
| Inglewood |
| Stratford |
| Stratford |
| Douglas   |
| Stratford |
| Eltham    |
| Plymouth  |
+-----------+
13 rows in set (0.00 sec)

root@TENNIS 16:33  mysql>select distinct town from PLAYERS;
+-----------+
| town      |
+-----------+
| Stratford |
| Inglewood |
| Eltham    |
| Douglas   |
| Plymouth  |
+-----------+
5 rows in set (0.00 sec)

多列去重

root@TENNIS 16:34  mysql>select street,town from PLAYERS;
+----------------+-----------+
| street         | town      |
+----------------+-----------+
| Stoney Road    | Stratford |
| Haseltine Lane | Stratford |
| Edgecombe Way  | Stratford |
| Station Road   | Inglewood |
| Long Drive     | Eltham    |
| Eaton Square   | Stratford |
| Lewis Street   | Inglewood |
| Edgecombe Way  | Stratford |
| Magdalene Road | Stratford |
| High Street    | Douglas   |
| Haseltine Lane | Stratford |
| Stout Street   | Eltham    |
| Vixen Road     | Plymouth  |
+----------------+-----------+
13 rows in set (0.00 sec)

root@TENNIS 16:36  mysql>select distinct street,town from PLAYYERS;
+----------------+-----------+
| street         | town      |
+----------------+-----------+
| Stoney Road    | Stratford |
| Haseltine Lane | Stratford |
| Edgecombe Way  | Stratford |
| Station Road   | Inglewood |
| Long Drive     | Eltham    |
| Eaton Square   | Stratford |
| Lewis Street   | Inglewood |
| Magdalene Road | Stratford |
| High Street    | Douglas   |
| Stout Street   | Eltham    |
| Vixen Road     | Plymouth  |
+----------------+-----------+
11 rows in set (0.00 sec)

where 字句
where子句一般跟在from后面

root@TENNIS 17:08  mysql>select name,town from PLAYERS;
+-----------+-----------+
| name      | town      |
+-----------+-----------+
| Everett   | Stratford |
| Parmenter | Stratford |
| Wise      | Stratford |
| Newcastle | Inglewood |
| Collins   | Eltham    |
| Bishop    | Stratford |
| Baker     | Inglewood |
| Brown     | Stratford |
| Hope      | Stratford |
| Miller    | Douglas   |
| Parmenter | Stratford |
| Moorman   | Eltham    |
| Bailey    | Plymouth  |
+-----------+-----------+
13 rows in set (0.00 sec)

root@TENNIS 17:05  mysql>select name from PLAYERS where town='Stratford';
+-----------+
| name      |
+-----------+
| Everett   |
| Parmenter |
| Wise      |
| Bishop    |
| Brown     |
| Hope      |
| Parmenter |
+-----------+
7 rows in set (0.00 sec)

单条件限制和多条件限制

root@TENNIS 17:09  mysql>select name from PLAYERS where sex=';F';
+-----------+
| name      |
+-----------+
| Newcastle |
| Collins   |
| Moorman   |
| Bailey    |
+-----------+
4 rows in set (0.00 sec)

#两个条件都要满足

root@TENNIS 17:10  mysql>select name from PLAYERS where sex='F' and town='Inglewood';
+-----------+
| name      |
+-----------+
| Newcastle |
+-----------+
1 row in set (0.00 sec)

#只要满足其中一个
root@TENNIS 17:11  mysql>select name from PLAYERS where sex='F' or town='Inglewood';
+-----------+
| name      |
+-----------+
| Newcastle |
| Collins   |
| Baker     |
| Moorman   |
| Bailey    |
+-----------+
5 rows in set (0.00 sec)


字符集–校对规则

查看有哪些字符集

root@TENNIS 17:12  mysql>show character set;
+----------+---------------------------------+---------------------+--------+
| Charset  | Description                     | Default collation   | Maxlen |
+----------+---------------------------------+---------------------+--------+
| big5     | Big5 Traditional Chinese        | big5_chinese_ci     |      2 |
| dec8     | DEC West European               | dec8_swedish_ci     |      1 |
| cp850    | DOS West European               | cp850_general_ci    |      1 |
| hp8      | HP West European                | hp8_english_ci      |      1 |
| koi8r    | KOI8-R Relcom Russian           | koi8r_general_ci    |      1 |
| latin1   | cp1252 West European            | latin1_swedish

查看本机使用的字符集

root@TENNIS 17:13  mysql>show variables like "%char%";
+--------------------------+-------------------------------------+
| Variable_name            | Value                               |
+--------------------------+-------------------------------------+
| character_set_client     | utf8                                |
| character_set_connection | utf8                                |
| character_set_database   | utf8                                |
| character_set_filesystem | binary                              |
| character_set_results    | utf8                                |
| character_set_server     | utf8                                |
| character_set_system     | utf8                                |
| character_sets_dir       | /usr/local/sc_mysql/share/charsets/ |
+--------------------------+-------------------------------------+
8 rows in set (0.05 sec)

查看校对规则

root@TENNIS 17:15  mysql>show variables like "%collation%";
+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database   | utf8_general_ci |
| collation_server     | utf8_general_ci |
+----------------------+-----------------+
3 rows in set (0.00 sec)

查看某个库使用的是什么字符集

root@TENNIS 17:16  mysql>show create database TENNIS;
+----------+-----------------------------------------------------------------+
| Database | Create Database                                                 |
+----------+-----------------------------------------------------------------+
| TENNIS   | CREATE DATABASE `TENNIS` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+-----------------------------------------------------------------+
1 row in set (0.00 sec)

比较操作符

root@TENNIS 17:18  mysql>select playerno from PLAYERS where l
eagueno='7060';
+----------+
| playerno |
+----------+
|      104 |
+----------+
1 row in set (0.00 sec)

找出赢两场输三场的比赛编号


root@TENNIS 17:22  mysql>select matchno from MATCHES where won=2 and lost=3;
+---------+
| matchno |
+---------+
|      11 |
+---------+
1 row in set (0.00 sec)

找出1962-1964年之间出生的球员的编号,出生日期

root@TENNIS 17:32  mysql>select playerno,birth_date from PLAYERS where year(birth_date) between 1962 and 1964;
+----------+------------+
| playerno | birth_date |
+----------+------------+
|        6 | 1964-06-25 |
|        7 | 1963-05-11 |
|        8 | 1962-07-08 |
|       27 | 1964-12-28 |
|       44 | 1963-01-09 |
|       95 | 1963-05-14 |
|      100 | 1963-02-28 |
|      112 | 1963-10-01 |
+----------+------------+
8 rows in set (0.00 sec)

IN 操作符

root@TENNIS 19:18  mysql>select playerno,year(birth_date)from  PLAYERS where year(birth_date) in (1962,1963,1970);
+----------+------------------+
| playerno | year(birth_date) |
+----------+------------------+
|        7 |             1963 |
|        8 |             1962 |
|       44 |             1963 |
|       95 |             1963 |
|      100 |             1963 |
|      104 |             1970 |
|      112 |             1963 |
+----------+------------------+
7 rows in set (0.00 sec)

like 操作符

%:0个或任意个字符
_: 只表示一个任意字符

root@TENNIS 20:36  mysql>select name from PLAYERS where year(birth_date) not in (1963,1964) and name like "%t%";
+-----------+
| name      |
+-----------+
| Everett   |
| Newcastle |
+-----------+
2 rows in set (0.00 sec)

regexp 操作符----正则

root@TENNIS 19:18  mysql>select playerno,name from PLAYERS where name regexp '^ba';
+----------+--------+
| playerno | name   |
+----------+--------+
|       44 | Baker  |
|      112 | Bailey |
+----------+--------+
2 rows in set (0.00 sec)

逻辑操作符
and
or
not
xor :逻辑异或 当一个条件为true,而另一个条件为false,则结果为true

and

root@TENNIS 19:27  mysql>select playerno,name,sex,birth_date from PLAYERS where birth_date >'1962-12-31' and sex='F';
+----------+---------+-----+------------+
| playerno | name    | sex | birth_date |
+----------+---------+-----+------------+
|       27 | Collins | F   | 1964-12-28 |
|      104 | Moorman | F   | 1970-05-10 |
|      112 | Bailey  | F   | 1963-10-01 |
+----------+---------+-----+------------+
3 rows in set (0.00 sec)

not

root@TENNIS 19:28  mysql>select playerno,name,sex,birth_date from PLAYERS where not town='Stratford';
+----------+-----------+-----+------------+
| playerno | name      | sex | birth_date |
+----------+-----------+-----+------------+
|        8 | Newcastle | F   | 1962-07-08 |
|       27 | Collins   | F   | 1964-12-28 |
|       44 | Baker     | M   | 1963-01-09 |
|       95 | Miller    | M   | 1963-05-14 |
|      104 | Moorman   | F   | 1970-05-10 |
|      112 | Bailey    | F   | 1963-10-01 |
+----------+-----------+-----+------------+
6 rows in set (0.00 sec)

小括号 —可以改变运算顺序

xor的用法:

root@TENNIS 19:36  mysql>select playerno,name,birth_date from PLAYERS where town='Stratford' xor (year(birth_date)=1963 andd sex='M');
+----------+-----------+------------+
| playerno | name      | birth_date |
+----------+-----------+------------+
|        2 | Everett   | 1948-09-01 |
|        6 | Parmenter | 1964-06-25 |
|       39 | Bishop    | 1956-10-29 |
|       44 | Baker     | 1963-01-09 |
|       57 | Brown     | 1971-08-17 |
|       83 | Hope      | 1956-11-11 |
|       95 | Miller    | 1963-05-14 |
+----------+-----------+------------+
7 rows in set (0.00 sec)

order by -----排序,默认升序,desc :降序
group by -----分组 须与聚合函数联用,如果@@sql_mode 里有only_full_group_by ,不与聚合函数联用的话就会报错
聚合函数:sum(),avg(),count()

root@TENNIS 19:37  mysql>select playerno,sum(amount) from PENALTIES group by(playerno) order by sum(amount);
+----------+-------------+
| playerno | sum(amount) |
+----------+-------------+
|        8 |       25.00 |
|      104 |       50.00 |
|        6 |      100.00 |
|       44 |      130.00 |
|       27 |      175.00 |
+----------+-------------+
5 rows in set (0.00 sec)

set @@sql_mode=… ,only_full_group_by

select
where
order by 一般放在最后

典型例题
Tbl_Product(ProductId , Name, Price Qutity ,Status(1001–已上架 1002–已下架), CreateTime)
Tbl_Order(OrderId ,ProductId , Price Qutity , OrderTime)

1,用sql语句,查找出2017年间创建,上架状态,且库存数量低于100的产品

select * from Tbl_Product where year(CreateTime)=2007 and Status=1001 and 	Qutity<100;

2,用sql语句统计各产品历史购买总数,及总金额,显示要求下:

产品编号 产品名称 购买总数 购买总金额
p0001 锤子 2000 300000

select Tbl_Product.ProductId "产品编号",Name "产品名称", sum(Tbl_Order.Qutity) "购买总数",sum(Tbl_Order.Price) "购买总金额" from Tbl_Product,Tbl_Order
where Tbl_Product.ProductId=Tbl_Order.ProductId 
group by Tbl_Order.ProductId 

3,用sql语句找出那些产品在2016年从未被购买过

难点:订单表里并非全部的产品,产品表里的产品可能没有出现在订单表里

select ProductId from Tbl_Product where ProductId not in (select ProductId from Tbl_Order where  year(OrderTime)=2016)

4,用sql语句,找出名称带有锤子字样,且销量前10的商品,并按销量倒序排列

select Name,Tbl_Order.Qutity from Tbl_Product,Tbl_Order 
where Tbl_Product.ProductId=Tbl_Order.ProductId and Name like "%锤子%"  
order by Tbl_Order.Qutity desc  limit 10

组函数:聚集函数(aggregation function)
常见的聚合函数:
avg() --求平均值
count()-- 统计数量
sum() —
group by
having

count()的用法

root@TENNIS 09:31  mysql>select count(*) from PLAYERS where t
own='Stratford';
+----------+
| count(*) |
+----------+
|        7 |
+----------+
1 row in set (0.00 sec)

count 与 distinct 联用

root@TENNIS 10:43  mysql>select town from PLAYERS;       
+-----------+
| town      |
+-----------+
| Stratford |
| Stratford |
| Stratford |
| Inglewood |
| Eltham    |
| Stratford |
| Inglewood |
| Stratford |
| Stratford |
| Douglas   |
| Stratford |
| Eltham    |
| Plymouth  |
+-----------+
13 rows in set (0.00 sec)

root@TENNIS 10:44  mysql>select distinct town from PLAYERS;
+-----------+
| town      |
+-----------+
| Stratford |
| Inglewood |
| Eltham    |
| Douglas   |
| Plymouth  |
+-----------+
5 rows in set (0.00 sec)

root@TENNIS 10:44  mysql>select count(distinct town) from PLAYYERS;
+----------------------+
| count(distinct town) |
+----------------------+
|                    5 |
+----------------------+
1 row in set (0.00 sec)
root@TENNIS 10:48  mysql>select count(distinct year(birth_date)),count(distinct sex) from PLAYERS;
+----------------------------------+---------------------+
| count(distinct year(birth_date)) | count(distinct sex) |
+----------------------------------+---------------------+
|                                7 |                   2 |
+----------------------------------+---------------------+
1 row in set (0.00 sec)

max()—最大值 min() —最小值

root@TENNIS 10:56  mysql>select max(amount),min(amount) from PENALTIES;
+-------------+-------------+
| max(amount) | min(amount) |
+-------------+-------------+
|      100.00 |       25.00 |
+-------------+-------------+
1 row in set (0.00 sec)

统计每个城市有多少球员

root@TENNIS 10:57  mysql>select town,count(*) from PLAYERS group by town;
+-----------+----------+
| town      | count(*) |
+-----------+----------+
| Douglas   |        1 |
| Eltham    |        2 |
| Inglewood |        2 |
| Plymouth  |        1 |
| Stratford |        7 |
+-----------+----------+
5 rows in set (0.00 sec)

统计每个球队参加了多少比赛,赢了多少场

root@TENNIS 11:07  mysql>select teamno,count(matchno),sum(won)) from MATCHES group by teamno;
+--------+----------------+----------+
| teamno | count(matchno) | sum(won) |
+--------+----------------+----------+
|      1 |              7 |       13 |
|      2 |              5 |        9 |
+--------+----------------+----------+
2 rows in set (0.00 sec)

统计每个队的每个球员赢的总场数

root@TENNIS 11:09  mysql>select teamno,playerno,sum(won) from MATCHES group by teamno,playerno;
+--------+----------+----------+
| teamno | playerno | sum(won) |
+--------+----------+----------+
|      1 |        2 |        1 |
|      1 |        6 |        6 |
|      1 |        8 |        0 |
|      1 |       44 |        3 |
|      1 |       57 |        3 |
|      1 |       83 |        0 |
|      2 |        8 |        0 |
|      2 |       27 |        3 |
|      2 |      104 |        3 |
|      2 |      112 |        3 |
+--------+----------+----------+
10 rows in set (0.00 sec)

统计每个球员每年累计罚款多少钱?并统计罚款次数

root@TENNIS 11:17  mysql>select playerno,year(payment_date) year,sum(amount),count(*) from PENALTIES group by playerno,yearr(payment_date);
+----------+------+-------------+----------+
| playerno | year | sum(amount) | count(*) |
+----------+------+-------------+----------+
|        6 | 1980 |      100.00 |        1 |
|        8 | 1980 |       25.00 |        1 |
|       27 | 1983 |      100.00 |        1 |
|       27 | 1984 |       75.00 |        1 |
|       44 | 1980 |       25.00 |        1 |
|       44 | 1981 |       75.00 |        1 |
|       44 | 1982 |       30.00 |        1 |
|      104 | 1984 |       50.00 |        1 |
+----------+------+-------------+----------+
8 rows in set (0.00 sec)

对于penalties表中的每一年,得到支付罚款的总次数

root@TENNIS 11:21  mysql>select year(payment_date) year,count(*) from PENALTIES group by year(payment_date);
+------+----------+
| year | count(*) |
+------+----------+
| 1980 |        3 |
| 1981 |        1 |
| 1982 |        1 |
| 1983 |        1 |
| 1984 |        2 |
+------+----------+
5 rows in set (0.00 sec)

对于penalties表中的每一年,得到支付罚款的总次数,统计出罚款次数大于等于2的

root@TENNIS 11:21  mysql>select year(payment_date) year,count(*) from PENALTIES group by year(payment_date) having count(*)>=2;
+------+----------+
| year | count(*) |
+------+----------+
| 1980 |        3 |
| 1984 |        2 |
+------+----------+
2 rows in set (0.00 sec)

延伸

root@TENNIS 11:25  mysql>select year(payment_date) year,count(*) from PENALTIES group by year(payment_date) having count(*)>=2 order by count(*);
+------+----------+
| year | count(*) |
+------+----------+
| 1984 |        2 |
| 1980 |        3 |
+------+----------+
2 rows in set (0.00 sec)

root@TENNIS 11:26  mysql>select year(payment_date) year,count(*) from PENALTIES group by year(payment_date) having count(*)>=2 order by count(*) desc;
+------+----------+
| year | count(*) |
+------+----------+
| 1980 |        3 |
| 1984 |        2 |
+------+----------+
2 rows in set (0.00 sec)

group_concat()的用法–将多个值放在一行显示

root@TENNIS 11:26  mysql>select teamno,group_concat(playerno)from MATCHES group by teamno;
+--------+------------------------+
| teamno | group_concat(playerno) |
+--------+------------------------+
|      1 | 6,6,44,83,2,57,8       |
|      2 | 27,104,112,112,8       |
+--------+------------------------+
2 rows in set (0.00 sec)

查询

root@TENNIS 11:45  mysql>select name from student group by name having min(fenshu)>80;
+--------+
| name   |
+--------+
| 王五   |
+--------+
1 row in set (0.00 sec)

root@TENNIS 11:45  mysql>select * from student;
+--------+---------+--------+
| name   | kecheng | fenshu |
+--------+---------+--------+
| 张三   | 语文    |     81 |
| 张三   | 数学    |     75 |
| 李四   | 数学    |     90 |
| 王五   | 数学    |    100 |
| 王五   | 语文    |     81 |
| 王五   | 英语    |     90 |
| 李四   | 语文    |     76 |
+--------+---------+--------+
7 rows in set (0.00 sec)

查询每门课程不及格数大于2的课程信息

root@TENNIS 14:06  mysql>select t.kecheng from (select kecheng,fenshu from student where fenshu<60) as t group by kecheng having count(fenshu)>=2;
+---------+
| kecheng |
+---------+
| 英语    |
| 语文    |
+---------+
2 rows in set (0.00 sec)

root@TENNIS 14:06  mysql>select * from student;
+--------+---------+--------+
| name   | kecheng | fenshu |
+--------+---------+--------+
| 张三   | 语文    |     81 |
| 张三   | 数学    |     75 |
| 李四   | 数学    |     90 |
| 王五   | 数学    |    100 |
| 王五   | 语文    |     81 |
| 王五   | 英语    |     90 |
| 李四   | 语文    |     76 |
| 李四   | 英语    |     56 |
| 赵六   | 英语    |     46 |
| 赵六   | 语文    |     55 |
| 赵六   | 数学    |     49 |
| 钱七   | 语文    |     48 |
+--------+---------+--------+
12 rows in set (0.00 sec)

查询每科成绩最好的学生及成绩信息(有问题)

root@TENNIS 14:17  mysql>select name,kecheng,fenshu from studeent where fenshu in(select max(fenshu) from student group by kecheng);
+--------+---------+--------+
| name   | kecheng | fenshu |
+--------+---------+--------+
| 李四   | 数学    |     90 |
| 王五   | 数学    |    100 |
| 王五   | 英语    |     90 |
| 钱八   | 语文    |     98 |
+--------+---------+--------+
4 rows in set (0.00 sec)

单行函数

upper() lower() ----作用于列

root@TENNIS 14:42  mysql>select name from PLAYERS;
+-----------+
| name      |
+-----------+
| Everett   |
| Parmenter |
| Wise      |
| Newcastle |
| Collins   |
| Bishop    |
| Baker     |
| Brown     |
| Hope      |
| Miller    |
| Parmenter |
| Moorman   |
| Bailey    |
+-----------+
13 rows in set (0.00 sec)

root@TENNIS 14:43  mysql>select upper(name) from PLAYERSS;
+-------------+
| upper(name) |
+-------------+
| EVERETT     |
| PARMENTER   |
| WISE        |
| NEWCASTLE   |
| COLLINS     |
| BISHOP      |
| BAKER       |
| BROWN       |
| HOPE        |
| MILLER      |
| PARMENTER   |
| MOORMAN     |
| BAILEY      |
+-------------+
13 rows in set (0.00 sec)

concat()
concat_ws()

root@TENNIS 14:45  mysql>select concat(playerno,name) frrom PLAYERS;
+-----------------------+
| concat(playerno,name) |
+-----------------------+
| 2Everett              |
| 6Parmenter            |
| 7Wise                 |
| 8Newcastle            |
| 27Collins             |
| 39Bishop              |
| 44Baker               |
| 57Brown               |
| 83Hope                |
| 95Miller              |
| 100Parmenter          |
| 104Moorman            |
| 112Bailey             |
+-----------------------+
13 rows in set (0.00 sec)

root@TENNIS 14:45  mysql>select concat_ws(',',playerno,nname) from PLAYERS;
+------------------------------+
| concat_ws(',',playerno,name) |
+------------------------------+
| 2,Everett                    |
| 6,Parmenter                  |
| 7,Wise                       |
| 8,Newcastle                  |
| 27,Collins                   |
| 39,Bishop                    |
| 44,Baker                     |
| 57,Brown                     |
| 83,Hope                      |
| 95,Miller                    |
| 100,Parmenter                |
| 104,Moorman                  |
| 112,Bailey                   |
+------------------------------+
13 rows in set (0.00 sec)

substring()----字符串切片

root@TENNIS 14:45  mysql>select substring(name,1,3) fromm PLAYERS;
+---------------------+
| substring(name,1,3) |
+---------------------+
| Eve                 |
| Par                 |
| Wis                 |
| New                 |
| Col                 |
| Bis                 |
| Bak                 |
| Bro                 |
| Hop                 |
| Mil                 |
| Par                 |
| Moo                 |
| Bai                 |
+---------------------+
13 rows in set (0.00 sec)

lenth() ----计算字符串长度

root@TENNIS 14:48  mysql>select length(name) from PLAYERRS;
+--------------+
| length(name) |
+--------------+
|            7 |
|            9 |
|            4 |
|            9 |
|            7 |
|            6 |
|            5 |
|            5 |
|            4 |
|            6 |
|            9 |
|            7 |
|            6 |
+--------------+
13 rows in set (0.00 sec)

lpad() -----左填充
rpad() ------右填充

root@TENNIS 14:48  mysql>select lpad(name,10,"#") from PLAYERS;
+-------------------+
| lpad(name,10,"#") |
+-------------------+
| ###Everett        |
| #Parmenter        |
| ######Wise        |
| #Newcastle        |
| ###Collins        |
| ####Bishop        |
| #####Baker        |
| #####Brown        |
| ######Hope        |
| ####Miller        |
| #Parmenter        |
| ###Moorman        |
| ####Bailey        |
+-------------------+
13 rows in set (0.00 sec)
root@TENNIS 14:52  mysql>select rpad(name,10,"#") from PLAYERS;
+-------------------+
| rpad(name,10,"#") |
+-------------------+
| Everett###        |
| Parmenter#        |
| Wise######        |
| Newcastle#        |
| Collins###        |
| Bishop####        |
| Baker#####        |
| Brown#####        |
| Hope######        |
| Miller####        |
| Parmenter#        |
| Moorman###        |
| Bailey####        |
+-------------------+
13 rows in set (0.00 sec)

trim() —默认去掉空格
repeat() —重复
reverse()----反转

root@TENNIS 14:52  mysql>select reverse(name) from PLAYERS;
+---------------+
| reverse(name) |
+---------------+
| tterevE       |
| retnemraP     |
| esiW          |
| eltsacweN     |
| snilloC       |
| pohsiB        |
| rekaB         |
| nworB         |
| epoH          |
| relliM        |
| retnemraP     |
| namrooM       |
| yeliaB        |
+---------------+
13 rows in set (0.00 sec)

char() ----- 数字对应–ascii码

root@TENNIS 14:58  mysql>select char(65)
    -> ;
+----------+
| char(65) |
+----------+
| A        |
+----------+
1 row in set (0.00 sec)

root@TENNIS 14:58  mysql>select char(165)
    -> ;
+-----------+
| char(165) |
+-----------+
| ¥          |
+-----------+
1 row in set (0.00 sec)

round()—四舍五入

root@TENNIS 15:01  mysql>select round(1.999,1);
+----------------+
| round(1.999,1) |
+----------------+
|            2.0 |
+----------------+
1 row in set (0.00 sec)

truncate() ----截取

root@TENNIS 14:58  mysql>select truncate(1.999,1);
+-------------------+
| truncate(1.999,1) |
+-------------------+
|               1.9 |
+-------------------+
1 row in set (0.00 sec)

ceil()—返回不小于x的最小整数
floor() ----返回不大于x的最大整数

rand()的用法

#默认产生0-1之间的随机数
root@TENNIS 15:09  mysql>select rand();
+--------------------+
| rand()             |
+--------------------+
| 0.3464466951288718 |
+--------------------+
1 row in set (0.00 sec)
#产生1-100之间的随机数
root@TENNIS 15:02  mysql>select rand()*100;
+------------------+
| rand()*100       |
+------------------+
| 9.14398050787298 |
+------------------+
1 row in set (0.00 sec)
产生1-100之间的随机整数
root@TENNIS 15:05  mysql>select truncate(rand()*100,0); 
+------------------------+
| truncate(rand()*100,0) |
+------------------------+
|                     88 |
+------------------------+
1 row in set (0.00 sec)
#
root@TENNIS 15:06  mysql>select rand()*10+20;
+--------------------+
| rand()*10+20       |
+--------------------+
| 21.759564626738022 |
+--------------------+
1 row in set (0.00 sec)

root@TENNIS 15:07  mysql>select rand()*18+17;
+-------------------+
| rand()*18+17      |
+-------------------+
| 23.74753778869988 |
+-------------------+
1 row in set (0.00 sec)

now()
date()

root@TENNIS 15:10  mysql>select now(),date(now());
+---------------------+-------------+
| now()               | date(now()) |
+---------------------+-------------+
| 2020-10-29 15:12:11 | 2020-10-29  |
+---------------------+-------------+
1 row in set (0.00 sec)

date_add()

root@TENNIS 15:15  mysql>select date_add(now(),interval 20 day);
+---------------------------------+
| date_add(now(),interval 20 day) |
+---------------------------------+
| 2020-11-18 15:15:49             |
+---------------------------------+
1 row in set (0.00 sec)
root@TENNIS 15:15  mysql>select date_add(now(),interval 2 month);
+----------------------------------+
| date_add(now(),interval 2 month) |
+----------------------------------+
| 2020-12-29 15:16:27              |
+----------------------------------+
1 row in set (0.00 sec)

date_diff(expr1,expr2)----两个时间相差多少小时

root@TENNIS 15:18  mysql>select datediff('2020-12-3','20020-12-5')
    -> ;
+-----------------------------------+
| datediff('2020-12-3','2020-12-5') |
+-----------------------------------+
|                                -2 |
+-----------------------------------+
1 row in set (0.00 sec)

root@TENNIS 15:19  mysql>select datediff('2020-12-3','2020-12-1');
+-----------------------------------+
| datediff('2020-12-3','2020-12-1') |
+-----------------------------------+
|                                 2 |
+-----------------------------------+
1 row in set (0.00 sec)

timestampdiff()

root@TENNIS 15:24  mysql>select timestampdiff(year,(select birth_date from PLAYERS where name='Wise'),(select birth_date from PLAYERS where name='Bishop')) diff;
+------+
| diff |
+------+
|   -6 |
+------+
1 row in set (0.00 sec)

查找出5月份出生的所有球员的名字和性别,并统计有多少人

root@TENNIS 15:34  mysql>select count(*) from (select name,sex,birth_date from PLAYERS where month(birth_date)=5) as t;
+----------+
| count(*) |
+----------+
|        3 |
+----------+
1 row in set (0.00 sec)

类型转换函数和case表达式

ifnull (expr1,expr2) —如果expr1不为null,就直接返回,expr2

root@TENNIS 19:24  mysql>select ifnull(1,0);
+-------------+
| ifnull(1,0) |
+-------------+
|           1 |
+-------------+
1 row in set (0.00 sec)

root@TENNIS 19:25  mysql>select ifnull(null,10);
+-----------------+
| ifnull(null,10) |
+-----------------+
|              10 |
+-----------------+
1 row in set (0.00 sec)

nullif(expr1,expr2) —如果两个参数相等,就返回null,否则返回expr1

root@TENNIS 19:25  mysql>select nullif(1,1);
+-------------+
| nullif(1,1) |
+-------------+
|        NULL |
+-------------+
1 row in set (0.00 sec)

root@TENNIS 19:26  mysql>select nullif(1,2);
+-------------+
| nullif(1,2) |
+-------------+
|           1 |
+-------------+
1 row in set (0.00 sec)

if(1,2,3) 1–true -》2 ,否则-》3

root@TENNIS 15:37  mysql>select if(sex='M','男','女') from PLAYERS;
+-------------------------+
| if(sex='M','男','女')   |
+-------------------------+
||
||
||
||
||
||
||
||
||
||
||
||
||
+-------------------------+
13 rows in set (0.00 sec)
 

CASE表达式
分为
simple case

searched case

simple case的用法:

root@TENNIS 16:20  mysql>select playerno,case sex when 'F' then 'female' else 'male' end sex,name from PLAYERS where joined>1980;
+----------+--------+---------+
| playerno | sex    | name    |
+----------+--------+---------+
|        7 | male   | Wise    |
|       27 | female | Collins |
|       57 | male   | Brown   |
|       83 | male   | Hope    |
|      104 | female | Moorman |
|      112 | female | Bailey  |
+----------+--------+---------+
6 rows in set (0.00 sec)

town是Stratford 的,输出湖南人,Eltham 输出山东人,其他输出广东人

root@TENNIS 16:29  mysql>select name,sex, case town whenn 'Stratford' then '湖南人' when 'Eltham' then '山东人' else '广东人' end new_town from PLAYERS;
+-----------+-----+-----------+
| name      | sex | new_town  |
+-----------+-----+-----------+
| Everett   | M   | 湖南人    |
| Parmenter | M   | 湖南人    |
| Wise      | M   | 湖南人    |
| Newcastle | F   | 广东人    |
| Collins   | F   | 山东人    |
| Bishop    | M   | 湖南人    |
| Baker     | M   | 广东人    |
| Brown     | M   | 湖南人    |
| Hope      | M   | 湖南人    |
| Miller    | M   | 广东人    |
| Parmenter | M   | 湖南人    |
| Moorman   | F   | 山东人    |
| Bailey    | F   | 广东人    |
+-----------+-----+-----------+
13 rows in set (0.01 sec)

searched case 的用法

root@TENNIS 16:33  mysql>select playerno,joined, case when joined<1980 then '青年组' when joined<1983 then '少年组' else '儿童组' end as age_group from PLAYERS order by joined;
+----------+--------+-----------+
| playerno | joined | age_group |
+----------+--------+-----------+
|       95 |   1972 | 青年组    |
|        2 |   1975 | 青年组    |
|        6 |   1977 | 青年组    |
|      100 |   1979 | 青年组    |
|        8 |   1980 | 少年组    |
|       39 |   1980 | 少年组    |
|       44 |   1980 | 少年组    |
|        7 |   1981 | 少年组    |
|       83 |   1982 | 少年组    |
|       27 |   1983 | 儿童组    |
|      104 |   1984 | 儿童组    |
|      112 |   1984 | 儿童组    |
|       57 |   1985 | 儿童组    |
+----------+--------+-----------+
13 rows in set (0.00 sec)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql学习笔记---sql语句 的相关文章

随机推荐

  • MyBatis(一)—— 2h学完这篇就可以入门mybatis啦

    一 简介 1 1 什么是MyBatis MyBatis是一个持久层框架 xff0c 既然和持久层有关那就可以简单理解成和数据库有关 xff0c 既然是框架那么就肯定是为了简化数据库有关的操作 由于传统的JDBC代码处理数据库有关的代码太复杂
  • MyBatis(二)—— 进阶

    一 详解配置文件 1 1 核心配置文件 官方建议命名为mybatis config xml xff0c 核心配置文件里可以进行如下的配置 xff1a lt environments gt 和 lt environment gt mybati
  • mysql常用sql处理

    一 查询字段处理 1 将Int 转为varchar经常用 concat函数 xff0c 比如concat 8 0 得到字符串 80 2 将varchar 转为Int 用 cast a as signed xff0c a为varchar类型的
  • 【电机驱动芯片(H桥、直流电机驱动方式)——DRV8833、TB6612、A4950、L298N的详解与比较】

    文章目录 一 全H桥电路基础知识1 原理图 xff08 以全NMOS管为例 xff09 2 H桥工作模式正转模式反转模式电流衰减模式 3 补充 二 DRV8833芯片介绍1 基本介绍2 引脚功能3 功能框图4 结构详细介绍5 逻辑控制6 另
  • 个人面试分享(小厂)

    个人面试分享 xff08 小厂 xff09 今天终于提起键盘了 xdm xff0c 假期过得如何 xff0c 祝大家节日快乐 上个月利用一些请假面试了几家公司 xff0c 然后想跟大家分享下一些面试题 xff08 面试的公司规模大概是50
  • 在HAL库中的使用printf()函数和sprintf()函数

    在HAL库中的使用printf xff08 xff09 函数和sprintf xff08 xff09 函数 1 printf xff08 xff09 2 sprintf xff08 xff09 xff1a 运行环境为 xff1a HAL库
  • 内部函数和外部函数

    内部函数 xff08 静态函数 xff09 xff1a 只能被本文件中其它函数调用 定义内部函数时 xff0c 在函数名核函数类型的前面加上static static int fun int a int b fun是内部函数 xff0c 不
  • C语言文件操作函数fwrite导致写入文件的内容乱码的问题解决方案

    fwrite 函数用来向文件中写入块数据 xff0c 它的原型为 xff1a size t fwrite void ptr size t size size t count FILE fp 参数说明 xff1a ptr 为内存区块的指针 x
  • 通信协议(三)——IIC协议

    1 基础知识 1 1 概念 IIC通讯协议 Inter xff0d Integrated Circuit xff0c 也常被写作I2C 是由 Philips 公司开发的一种简单 双向二线制同步串行总线 xff0c 只需要两根线即可在连接于总
  • linux经典面试题----开机启动流程

    linux开机启动流程 1 xff0c power on 开机 2 xff0c POST开机自检 由主板上的BIOS程序来完成 3 xff0c BIOS对硬件进行检测 BIOS xff1a 基本输入输出系统 xff0c 是个人电脑启动时加载
  • 高可用和负载均衡学习笔记

    负载均衡 LB xff1a load balancer 化整为零 高可用 xff08 HA xff09 xff1a High Avilibility 互相备份 xff0c 互相替换 防止单点故障 好处 xff1a 防止单点故障 xff0c
  • 浅谈列表和元组的区别

    常见面试题 列表 xff08 list xff09 和元组 xff08 tuple xff09 的区别和使用场景 一 相同点 列表和元组都是序列化类型的容器对象 xff0c 可以存放任何类型的数据 xff0c 支持切片和迭代 二 不同点 列
  • 详解三次握手

    简述三次握手的过程 应用场景 xff1a 当客户端向服务器端发送数据之前 xff0c 需要建立一个TCP连接 第一次握手 xff1a 客户端向服务器端发送一个SYN请求包 xff08 序列号syn为x xff09 并进入SYN SENT状态
  • win10 切换Fn热键

    切换Fn热键 新买的联想小新 xff0c 到手发现F1 F12的使用需要热键Fn的配合 xff0c 这对一个开发人员来说 xff0c 是件麻烦事儿 xff0c 解决方法如下 xff1a 重启电脑 xff0c Fn 43 F2 不停戳 进入B
  • LAMP和LNMP详解,面试必备

    LAMP简介 LAMP 是指一个集成开发环境 一般用来建立web应用平台 L Linux A Apache M Mysql P PHP或指Perl或指Python 1 Linux xff1a 是一个性能稳定的多用户网络操作系统 xff0c
  • 系统运行缓慢该怎么排查

    对于系统运行缓慢问题 xff0c 要分情况讨论 xff1a 如果该问题导致线上系统不可用 出现这种情况可能的原因主要有两种 xff1a 代码中某个位置读取数据量较大 xff0c 导致系统内存耗尽 xff0c 从而导致 Full GC 次数过
  • 编译安装Nginx步骤详解

    编译安装Nginx步骤详解 1 xff0c 去Nginx官方网站下载源码包并解压 curl O 或wget 跟下载链接 tar xf 解压 2 xff0c 进入nginx解压后的目录执行 configure configure prefix
  • python2和python3的差异,超详细总结

    python2与python3的区别 1 xff0c 市场差异 python2 xff1a 官方通知python2 2020开始不再维护 xff0c 但企业很多代码都是python2 python2有很大的用户基群故会出现历史遗留问题 xf
  • mysql学习笔记--主从复制

    主从复制简介 首先需要两台机器 xff0c 并且主从复制的前提是需要先做数据同步 xff0c 先在我的master机器上用mysqldump 将所有的数据备份 xff0c 然后scp传输到我的slave机器上 xff0c 然后在slave机
  • mysql学习笔记---sql语句

    基本select查询 1 xff0c 设置系统变量 64 64 sql mode xff0c 有一些限制规则 xff0c 日期不能为0 xff0c 除数不能为0 xff0c 自增不能从0开始 xff0c 授权用户密码不能为空 64 64 s