当前位置: 首页 > news >正文

数据库

数据库操作DDL

创建

create database 数据库名

查询

show databases ; show database like '数据库名';

修改

alter database 数据库名 set 字段名 类型 约束;

删除

drop database 数据库名;

使用

use 数据库名;

数据库表操作DDL

创建

create table 表名(字段  类型  索引);

查看表结构

desc 表名;

复制数据表

create table 表名1 like 表名2; 

复制表结构和数据

create table 表名1 as select * from 表2;

修改字段数据类型

alter table 表名 modify 字段名 数据类型;

修改字段名

alter table 表名 change <旧字段><新字段><数据类型>;

增加字段

alter table 表名 add<新字段><数据类型>;

删除字段

alter table 表名 drop<字段>;

删除

drop database 数据表;

数据操纵语句DML

insert插入数据
INSERT INTO <表名> [ <列名1> [ , … <列名n>] ]
VALUES (值1) [… , (值n) ];
update修改数据
UPDATE <表名> SET 字段1=值1 [,字段2=值2… ] [WHERE 子句 ] [LIMIT 子句]
UPDATE emp SET is_enable = 0 WHERE id = 1
delete删除数据
DELETE FROM <表名> [WHERE 子句] [LIMIT 子句]
DELETE FROM emp WHERE is_enable = 0;
执行顺序

from > on > join > where > group by > having > select > distinct > order by > limit

distinct去重数据
SELECT DISTINCT <字段名>,<字段名>, FROM <表名>;
  • distinct只能在select语句中使用
  • distinct必须在所有字段前面
  • 如果有多个字段需要去重,则会对多个字段进行组合去重,即所有字段的数据重复才会被去重
as取别名
#as可省略
<表名> [AS] <别名>  
<字段名> [AS] <别名>
select age as "年龄",sex"性别",username"姓名" from TableA as a
limit限制返回数量
LIMIT 初始位置,记录数   #初始位置从0开始
select * from Table limit 2,2;  #从第3条记录开始返回2条
select * from Table limit 5 offset 1; #从第2条记录开始返回5条
order by对查询排序
ORDER BY <字段名> [,<字段名>...] [ASC | DESC]   #默认ASC升序,DESC降序
select * from Table order by id desc, sex asc;
where条件查询
WHERE 查询条件
select * from Table where id = 1;
比较运算法:
=:等于
<=>:安全等于
!=、<>:不等于
<、>、<=、>=:小于、大于、小于等于、大于等于
逻辑运算符:
and、&&:所有查询条件均满足才会被查询出来
or、||:满足任意一个查询条件就会被查询出来
xor:满足其中一个条件,并且不满足另一个条件时,才会被查询出来
like模糊查询
LIKE  '字符串'
NOT LIKE  '字符串'
select * from Table where username like "%test%";
#%表示任意长度的字符串,包括0
#_表示单个字符,字符长度不能等于0
#匹配字符串必须加双引号或单引号
is null空值查询
IS NULL
IS NOT NULL
select * from Table where sex is null;
#is null是一个整体,不能用=null 替代 
#is not null同理,不能用!= null或<>替代
between and范围查询
BETWEEN 取值1 AND 取值2
NOT BETWEEN 取值1 AND 取值2
select * from Table where age between 19 and 21;
group by分组查询
GROUP BY  <字段名>[,<字段名>,<字段名>]
select count(*) from Table group by department;
#group by一般配合聚合函数使用count():统计记录的条数sum():字段值的总和max():字段值的最大值min():字段值的最小值avg():字段值的平均值
having过滤分组结果集
HAVING <查询条件>
#having关键字对group by分组后的数据进行过滤
select *from Table where sex = "1" group by department having department = "ART"
where having
不可以使用聚合函数 可以使用聚合函数
数据 group by 前过滤 数据 group by 后过滤
查询条件中不可以使用字段别名 查询条件中可以使用字段别名
用于过滤数据行 用于过滤分组后的结果集
根据数据表的字段直接过滤 根据已查询出的字段进行过滤
多表查询
#cross join:交叉连接  两张表的笛卡尔积
SELECT <字段名> FROM <表1> CROSS JOIN <表2> [WHERE]
#inner join:内连接  两张表的交集,两张表记录都不为null才会返回
SELECT <字段名> FROM <表1> INNER JOIN <表2> [ON子句]
#left join:左外连接  表1为主表,右表为空字段补null
SELECT <字段名> FROM <表1> LEFT OUTER JOIN <表2> <ON子句>
#right join:右外连接 表2为主表,左表为空字段补null
SELECT <字段名> FROM <表1> RIGHT OUTER JOIN <表2> <ON子句>
#union、union all:全连接  获取左右两表的所有记录
#union 连接的每条 sql 指定的字段顺序最好一致
select * from emp as a left join dept as b on a.dept_id = b.id
union all
select * from emp as a right join dept as b on a.dept_id = b.id;
子查询
#字段、表名、查询条件都可以嵌套子查询
select <子查询> from <表名> where <查询条件>
select <字段> from <子查询> as <别名> where <查询条件>
select <字段> from <表名> where <子查询>
http://www.hskmm.com/?act=detail&tid=8850

相关文章:

  • 代码随想录算法训练营第二天 | leetcode 209
  • mpv硬件解码
  • 2025.9.78——卷6-8选择
  • 关于pytorch的读书报告
  • Emacs 折腾日记(三十)——打造C++ IDE 续
  • 数据结构 项目一
  • 好烦
  • 用 Go 语言与 Tesseract OCR 识别英文数字验证码
  • FreeRTOS和LVGL组合使用教程
  • Codeforces 1646 记录
  • 综合与实现流程【p3】--(DSP-存储)优化PS系统集成
  • Linux中 sed命令忽略大小写匹配
  • 【STL库】哈希封装 unordered_map/unordered_set - 教程
  • Pip换源
  • 7zip压缩解压缩-测试CPU性能
  • 高数
  • P5666 [CSP-S2019] 树的重心
  • Java运行机制
  • 除自身以外数组的乘积-leetcode
  • 【2022】SDRZ夏令营游记
  • rapidXML解析xml文件
  • office2024免费永久激活版下载安装教程:含激活步骤 + 一键安装包下载
  • 大学不止GPA
  • 大学目标
  • [论文笔记/评估方法] RELIABLE AND DIVERSE EVALUATION OF LLM MEDICAL KNOWLEDGE MASTERY
  • 本地VMware Workstation Pro的rhel-server-7.9-x86_64服务器配置本地源
  • 2025年十大AI网站构建工具:专家评测与推荐!
  • 扫描线乱谈
  • 详细介绍:量子计算学习(第十四周周报)
  • 视频播放时切出页面视频暂停(亲测可用)