挨踢小子MySQL笔记体现SQL功底12道
2023-06-13 09:17:27 时间
1、复制数据库表数据操作
1、如果是整个表复制表达如下:
insert into table1 select * from table2
2、如果是有选择性的复制数据表达如下:
insert into table1(column1,column2,column3...)
select column1,column2,colunm3...from table2
3、一个数据库中的表中的数据复制到另一个数据库中的一个表,使用方法如下:
insert into 数据库A.dbo.table1(col1,col2,col3...)
select col1,col2,col3... from 数据库B.dbo.table2
4、直接复制现有表重命名CREATE TABLE 表名 AS SELECT 语句;
2、sql的子查询可以放到查询字段之中
select name,age,(select date from tableB)
from tableA where age="12";
3、一张表中两个字段值互换(重点思想)
update table a, table b
set a.filed1= b.field2, a.field2= b.field1
where a.id = b.id
4、实现数据库两列数据的上下移动操作
update test set priority=
(case when id=1 then
(select priority from test where id=2)
when id=2 then
(select priority from test where id=1) end)
where id=1 or id=2;
5、mysql合并字符串
concat(string1,string2,string3,…)
select concat( '1', '01','02')
// 10102
concat_ws(separator,str1,str2,...)
select concat_ws('-','1','2','3')
// 1-2-3
group_concat()
group_concat(
[distinct] 要连接的字段
[order by 排序字段 asc/desc ]
[separator '分隔符']
)
// 例如:
SELECT group_concat(content ORDER BY id DESC separator '-') from t_noteinfo
6、删除重复数据,只保留最小ID编号
delete tablename where id not in(select min(id) from tablename group by name,………………)
7、两张关联表,删除主表中已经在副表中没有的信息
delete from info where not exists
(select * from infobz where info.infid=infobz.infid)
8、日程安排提前五分钟提醒(日期操作)
select * from 日程安排
where datediff('minute',f 开始时间,getdate())>5
9、查询出每门课都大于90 分的学生姓名
select name from table group by name having min(fenshu)>90
10、数据结构转换形式
year month amount
1991 1 1.1
1991 2 1.2
1991 3 1.3
1991 4 1.4
1992 1 2.1
1992 2 2.2
1992 3 2.3
1992 4 2.4
查成这样一个结果
year m1 m2 m3 m4
1991 1.1 1.2 1.3 1.4
1992 2.1 2.2 2.3 2.4
select year,
(select amount from aaa m where month=1 and m.year=aaa.year) as m1,
(select amount from aaa m where month=2 and m.year=aaa.year) as m2,
(select amount from aaa m where month=3 and m.year=aaa.year) as m3,
(select amount from aaa m where month=4 and m.year=aaa.year) as m4
from aaa group by year
11、find_in_set笔记学习(历史文章有详解,此处略)
SELECT t.dept_id FROM sys_dept t
WHERE FIND_IN_SET (102,ancestors)
12、explain查看sql的具体的执行计划(历史文章有详解,此处略)
explain select * from tablename
相关文章
- vue django mysql_Python MySQL
- MySQL添加表字段的简单指南(mysql给表添加字段)
- MySQL实现启动服务的命令行操作(mysql启动服务命令)
- SQL访问MySQL:揭秘数据库访问之旅(sql访问mysql)
- MySQL多表查询笔试:挑战你的SQL技能(mysql多表查询笔试题)
- 文件使用 MySQL 导出 SQL 文件的步骤(mysql转储sql)
- 使用MySQL执行SQL指令:简单易学的基础教程(mysql运行sql命令)
- MySQL如何修改SQL语句?(mysql修改sql)
- MySQL教程:拼接SQL语句的方法(mysql拼接sql语句)
- 步步深入:配置MySQL环境变量(配置mysql的环境变量)
- 文件MySQL导入SQL文件教程(mysql怎么导入sql)
- MySQL安装失败:解决常见错误(mysql安装错误)
- 使用MySQL命令连接数据库:简便方法(mysql命令连接数据库)
- MySQL利用子查询实现数据的删除(mysql 子查询删除)
- MySQL优化实战:记录与经验总结(mysql优化 笔记)
- Oracle SQL跟踪利器:掌握Oracle跟踪SQL工具!(oracle跟踪sql工具)
- MySQL 语句构建指南:手把手教你掌握SQL语句(mysql所有语句怎么写)
- 最佳实践:MySQL分页SQL语句编写(mysql分页sql语句)
- MySQL数据库简单导出SQL脚本方法(mysql导出sql脚本)
- MySQL中创建主键的SQL语句(mysql中主键的语句)
- 比较AliSQL和MySQL的优势与劣势(alisql和mysql)
- ADO如何连接MySQL数据库(ado怎么连接mysql)
- 1365解放MySQL开放数据库时代(1365mysql)
- 1200突破Mysql联网的新尝试(1200和mysql通信)