MYSQL比较生僻的几种SQL

本文介绍了如何将TXT文件导入数据库、导出库表结构、查看MySQL配置与状态、修改字段属性、更新特定数据行、使用CASE WHEN THEN ELSE END语句进行条件判断以及在CentOS环境下启动MySQL的方法。

//txt文件入数据库
LOAD DATA INFILE 'data.txt' INTO TABLE table2
FIELDS TERMINATED BY ',';

//导出空的库表结构
mysqldump -d -u xxx -p resin_log> /temp/dump.sql

//查看MYSQL配置,这些信息一般都是静态的
show variables;
//查看MYSQL 状态,这些信息一般都是动态的
show status
//修改字段原有属性
ALTER TABLE ind_day_scale  MODIFY COLUMN avg_pv double unsigned NOT NULL DEFAULT '0' COMMENT '新增PV/新增UV'
//更改一个字段的部分值
UPDATE day_resinlog_2012_06_12 SET access_time = REPLACE(access_time,'2012-06-12','2012-06-14')

//查看库中表的信息

select
   t.table_schema,
   t.table_name,
   t.table_comment
from
   information_schema.tables t

//导入SQL文件中数据

use dbname;

set @@autocommit = 0;

source H:\month_resinlog_2012_08.sql(注意,末尾不要加分号哦)

commit;

//删除指定行数的数据

DELETE FROM users_wap_index WHERE access_date = '2012-10-06' LIMIT 100

//CASE WHEN THEN ELSE END

SELECT
     xly_r_period.`access_date` AS xly_r_period_access_date,
     CASE
  WHEN period = 0 THEN '00:00-03:00'
  WHEN period = 1 THEN '03:00-06:00'
  WHEN period = 2 THEN '06:00-09:00'
  WHEN period = 3 THEN '09:00-12:00'
  WHEN period = 4 THEN '12:00-15:00'
  WHEN period = 5 THEN '15:00-18:00'
  WHEN period = 6 THEN '18:00-21:00'
  ELSE '21:00-00:00'
 END  xly_r_period_period,
     xly_r_period.`pv` AS xly_r_period_pv,
     xly_r_period.`uv` AS xly_r_period_uv
FROM
     `xly_r_period` xly_r_period

//远程登录执行SQL文件

mysql -h 192.168.0.201 -P 3306 -u root -p123
use test

set @@autocommit=0

source ''

commit

//centos 下启动mysql

service mysqld start

### 如何在 MySQL 中查询字段是否包含生僻字或特殊字符 要检测 MySQL 数据库中的字段是否包含生僻字或特殊字符(如 `*`, `%`, `?`, `@` 或其他超出基本多文种平面 BMP 的 Unicode 字符),可以采用以下几种方法: #### 方法一:使用正则表达式匹配 MySQL 支持通过 `REGEXP` 进行模式匹配。对于特殊字符,可以直接编写正则表达式来查找这些字符的存在情况: ```sql SELECT * FROM your_table WHERE chinese_field REGEXP '[\\*\\%\\?@]' -- 匹配 * % ? @ 等特殊字符 OR LENGTH(chinese_field) != CHAR_LENGTH(chinese_field); -- 检测是否存在多字节字符 ``` 这里的 `LENGTH()` 返回字符串的字节数,而 `CHAR_LENGTH()` 返回字符数。如果两者的值不同,则说明该字段中存在多字节字符,可能是生僻字或其他非 ASCII 字符[^1]。 --- #### 方法二:基于字符集特性检测 由于 MySQL 的 `utf8` 字符集仅支持 BMP 平面内的字符,无法存储 4 字节长度的 UTF-8 字符(如部分生僻字和 Emoji)。因此,可以通过尝试将字段转换为 `utf8` 字符集并观察其行为来进行判断: ```sql SELECT *, CASE WHEN CONVERT(CONVERT(chinese_field USING latin1) USING utf8) = chinese_field THEN 'No Special Characters' ELSE 'Contains Special or Rare Characters' END AS result FROM your_table; ``` 此方法的核心思想是先将字段从当前字符集转为 `latin1`,再重新转回 `utf8`。如果两次转换的结果一致,则表明字段中不存在超出生僻字范围的内容;反之则可能存在生僻字或特殊字符[^3]。 --- #### 方法三:直接对比字符集差异 当数据库表已知使用了 `utf8mb4` 字符集时,可进一步利用字符集之间的兼容性差异进行检测。例如: ```sql SELECT * FROM your_table WHERE chinese_field COLLATE utf8mb4_bin != chinese_field COLLATE utf8_general_ci; ``` 此处假设字段原本是以 `utf8mb4` 存储的。通过将其强制转换为 `utf8` 后再次比较原值与新值是否相同即可得出结论。如果不相同,则意味着字段中含有无法被 `utf8` 完全表示的字符,即可能为生僻字或特殊字符[^2]。 --- #### 方法四:枚举法结合 LIKE 关键字 针对一些固定的特殊字符列表,也可以采取简单粗暴的方式逐一排查: ```sql SELECT * FROM your_table WHERE chinese_field LIKE '%[*]%' OR chinese_field LIKE '%[%]' OR chinese_field LIKE '%[?]%' OR chinese_field LIKE '%[@]%'; ``` 这种方式适用于明确知道哪些字符属于“特殊”的情况下,并且易于理解和维护[^4]。 --- ### 总结 上述四种方法各有优劣,在实际运用过程中可以根据具体业务需求灵活选用。通常推荐优先考虑 **正则表达式** 和 **字符集特性检测** 方案,因为它们更加通用且高效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值