Mysql常用语句

Mysql对参赛队伍按照队伍创建时间排序,并且给出队伍的排名(无并列的情况)

奇葩的产品需求,要求对参赛队伍进行创建时间排序,并且给出每个队伍的得票排名
当然有更简单的方法,在每次投票过后,将队伍按投票数倒序排序获取,然后遍历设置排名,但当队伍过多的时候,该方法执行速度过慢,大大影响了程序的反应时间
所以就会出现以下sql语句,当队伍过多的情况下,执行速度还是异常的迅速

SELECT
    pve.teamId,		#队伍主键
    pve.teamPollNum,#队伍票数
    pve.teamName,	#队伍名称
    (SELECT
         f.num
     FROM
     	(SELECT
			@rownum := @rownum + 1 AS num,	#队伍排名
			t.teamId
		FROM
			(SELECT
			    pvi.teamId 		#队伍id主键
			    pvi.teamPollNum #队伍票数
			 FROM
			    活动队伍表 AS pvi	 
			 ORDER BY pvi.teamPollNum DESC #根据队伍票数排名
			) t,
			(SELECT @rownum := 0) r
       ) f
     WHERE
         f.teamId = pvt.teamId	#根据每个队伍的id进行关联
     ) ranking	#队伍排名
FROM
    活动队伍表 AS pve
ORDER BY pve.createTime DESC #队伍的创建时间排序

Mysql时间相关sql

将数据库中createTime时间,格式化为"2020-10-01" 这种的字符串

DATE_FORMAT(createTime,'%Y-%m-%d') 

将字符串格式化为时间类型

STR_TO_DATE(‘2020-10-01’,'%Y-%m-%d') 

获取当前时间是第多少周,NOW()为获取当前时间

YEARWEEK(NOW())

DAYOFWEEK()函数为获取当前为周几,当周日时为1,周一为2依次排下去

DAYOFWEEK(‘2020-10-01’)

对YEARWEEK()函数的优化,以及对上面函数的结合使用
YEARWEEK()该函数有一个问题,当时间为周日时,会判断为下一周,正常逻辑常为周一到周日为一周,而且很多程序逻辑也是这样进行操作的

xxx为数据库中时间类型数据,下列语句为查找当周内所有的数据

	(CASE
     WHEN DAYOFWEEK(date_format(xxx,'%Y-%m-%d'))=1 THEN YEARWEEK(xxx)-1
     ELSE YEARWEEK(xxx) END) =
     (CASE WHEN DAYOFWEEK(date_format(NOW(),'%Y-%m-%d'))=1 THEN YEARWEEK(NOW())-1
     ELSE YEARWEEK(NOW()) END)

上述sql语句用到CASE函数

该语句类似于if else语句,WHEN类似if()小括号中的东西,THEN为if后面大括号的内容,中间还可以添加多个WHEN THEN,类比为else if(){}

xxx为数据库中字符串,如果xxx为1那么该结果为ture

SELECT
	(CASE
	WHEN a.xxx='1' THEN true
	ELSE false END) a
FROM
	表名 as a

快速修改数据库下所有表的编码格式和排序类型

该方法用sql中CONCAT()拼接字符串,拼接成sql语句,
下面sql语句中的xxx为要改的数据库名称,将查询的到的该数据库中所有表,拼接成sql语句,返回到结果中,复制粘贴就可以直接执行。

SELECT
    CONCAT( 'ALTER TABLE ', TABLE_NAME, ' CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;' ) 
FROM
    information_schema.TABLES 
WHERE
    TABLE_SCHEMA = 'xxx';
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 以下是 MySQL 常用的 SQL 语句: 1. 创建数据库 ``` CREATE DATABASE database_name; ``` 2. 删除数据库 ``` DROP DATABASE database_name; ``` 3. 创建表 ``` CREATE TABLE table_name ( column1 datatype, column2 datatype, column3 datatype, .... ); ``` 4. 删除表 ``` DROP TABLE table_name; ``` 5. 插入数据 ``` INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...); ``` 6. 更新数据 ``` UPDATE table_name SET column_name1 = value1, column_name2 = value2, ... WHERE condition; ``` 7. 删除数据 ``` DELETE FROM table_name WHERE condition; ``` 8. 查询数据 ``` SELECT column1, column2, ... FROM table_name WHERE condition; ``` 9. 排序 ``` SELECT column1, column2, ... FROM table_name ORDER BY column_name ASC|DESC; ``` 10. 分组 ``` SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name; ``` 11. 连接 ``` SELECT column_name(s) FROM table_name1 JOIN table_name2 ON table_name1.column_name = table_name2.column_name; ``` 以上是 MySQL 常用的 SQL 语句,希望能对你有所帮助。 ### 回答2: MySQL 是一种流行的关系型数据库管理系统,被广泛应用于Web开发和其他数据存储需求。以下是一些常用MySQL 语句: 1. 创建数据库: ``` CREATE DATABASE database_name; ``` 2. 选择使用的数据库: ``` USE database_name; ``` 3. 创建表: ``` CREATE TABLE table_name ( column1 datatype constraint, column2 datatype constraint, ... ); ``` 4. 插入数据: ``` INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...); ``` 5. 更新数据: ``` UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition; ``` 6. 删除数据: ``` DELETE FROM table_name WHERE condition; ``` 7. 查询数据: ``` SELECT column1, column2, ... FROM table_name WHERE condition; ``` 8. 排序数据: ``` SELECT column1, column2, ... FROM table_name ORDER BY column_name ASC|DESC; ``` 9. 过滤数据: ``` SELECT column1, column2, ... FROM table_name WHERE column_name operator value; ``` 10. 聚合数据: ``` SELECT aggregate_function(column_name) FROM table_name GROUP BY column_name; ``` 以上是一些基本的 MySQL 语句,用于创建数据库、表和执行常见的数据操作。MySQL还有更多高级的功能和语句,可以根据具体需求深入学习和掌握。 ### 回答3: MySQL是一种流行的关系型数据库管理系统,它使用结构化查询语言(SQL)进行数据库操作。以下是MySQL常用的一些SQL语句: 1. 创建数据库:CREATE DATABASE databasename; 该语句用于创建一个新的数据库。 2. 删除数据库:DROP DATABASE databasename; 该语句用于删除一个已存在的数据库。 3. 创建表:CREATE TABLE tablename( column1 datatype constraint, column2 datatype constraint, ... ); 该语句用于创建一个新的表格,并定义表格中的列名、数据类型以及约束条件。 4. 删除表:DROP TABLE tablename; 该语句用于删除一个已存在的表格。 5. 插入数据:INSERT INTO tablename (column1, column2, ...) VALUES (value1, value2, ...); 该语句用于向表格中插入新的行数据。 6. 更新数据:UPDATE tablename SET column1 = value1, column2 = value2, ... WHERE condition; 该语句用于更新表格中已有的行数据。 7. 删除数据:DELETE FROM tablename WHERE condition; 该语句用于根据条件删除表格中的行数据。 8. 查询数据:SELECT column1, column2, ... FROM tablename WHERE condition; 该语句用于从表格中查询指定的列数据,并根据条件过滤结果。 9. 排序数据:SELECT column1, column2, ... FROM tablename ORDER BY column1 ASC/DESC; 该语句用于按照指定列的升序(ASC)或降序(DESC)对查询结果进行排序。 10. 连接表查询:SELECT column1, column2, ... FROM table1 JOIN table2 ON table1.column = table2.column; 该语句用于联结两个或多个表格,并根据指定的条件进行联结查询。 以上是MySQL中一些常用的SQL语句,通过使用这些语句,可以对数据库进行创建、删除、插入、更新、删除以及查询等操作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值