MySQL

数据库

数据库是一个系统,用来存储、管理和组织大量有结构的数据。它可以帮助用户高效地存取和操作信息,比如用户资料、订单信息、商品详情等。

简单来说,数据库就像是一个电子化的"档案柜",里面有很多"文件夹"和"文件",方便你查找和维护数据。

存储在表中的数据是一种类型的数据,不同类型的数据应放到不同的表中,否则会使以后的检索和访问很困难。

数据库中的每个表都有一个名字,用来标识自己。此名字是唯一的,这表示数据库中没有其他表具有相同的名字。

表由一个或多个列组成。每一列存储一列特定的信息,列称为字段,每个列都有相应的数据类型。数据类型定义列可以存储的数据种类。例如,某一列中需要存储数字,该列的数据类型应该定义为数值类型。

基本语句

SQL语法不区分大小写。由于博主个人习惯,所以全篇用小写了(抱拳)。

每个语句后面是否有结束符号,主要看你运行几条语句,1条语句就不用加结束符号,而大于1条语句 就要加上结束符号了。
like 为模糊查询,= 为准确查找

sql 复制代码
like"%王" //为王字结尾的名字  前面有多少字符无所谓
like"_王"//为王字结尾的名字  但是前面只能有一个字符
like"王%"//为王字开始的名字  后面多少字符无所谓
like"王_"//为王字开始的名字  后面只能有一个字符

当然也可以连续使用单字符
比如:
"王__"  //表示王后面有两个字符
"_王%"//王字前面有一个字符
..................
等等 有很多 就不一一列举了。

创建数据库

sql 复制代码
create database [if not exists]数据库名
// if notexists 是进行判断 所 创建\删除 的 库\表 是否存在

使用数据库

sql 复制代码
use 数据库名

删除数据库

sql 复制代码
drop database[if exists]数据库名;

查询当前数据库信息

sql 复制代码
# 查询当前连接的数据库
select database();
#查询当前的数据库版本
select version();
#查询当前的日期
select now();
#查询当前的用户
select user();

创建表

sql 复制代码
create table[if not exists] 表名(
    字段1 字段类型[列级约束条件],
    字段2 字段类型[列级约束条件],
    .......
    [表级约束条件]
)

显示数据库中的表

sql 复制代码
show tables;

导入数据库脚本

(结尾不加分号,读取外部SQL脚本,SQL脚本里的语句是以分号结尾的)

  • 注意
    • 导入的时候没有分号,路径中不能含有中文
    • 需要先创建数据库,然后use使用才能导入
sql 复制代码
source 脚本文件路径
例:source  D:\pointer\lessson\MYSQL\comment.sql

查看表的基本结构

sql 复制代码
desc 表名;
例:desc emp;

查看数据库/表的创建语句

sql 复制代码
show create database 数据库名;
show create table 表名;

查询

简单查询

查询指定字段

sql 复制代码
select 字段1,字段2,......
例:select ename,sal from emp;
   select ename from emp;

查询全部字段

sql 复制代码
select * from 表名;
select * from emp;

条件查询

使用where语句,放在from后面。

sql 复制代码
select * from emp where 条件;
select * from emp where empno>7500;

高级查询

排序

  • order by句子:对查询结果按指定字段进行排序。也可以指定select列表中列的序号进行排序。
sql 复制代码
order by 字段1[,字段2][asc|desc](正序|倒序)
select *from emp order by sal desc;

限制数量

  • limit子句:select语句返回所有匹配的行,他们可能是指定表中的每个行,为了前几行或中间几行,可以使用limit子句。使用limit可以解决分页问题。
sql 复制代码
limit 行数(从第一行开始)
limit 开始行(从0开始),行数

select* from emp order by sal limit 1;//排序后,取第一行(即最小的薪水的员工)。
select * from emp order by sal limit 3,5;//排序后,从第4行开始(偏移3,从0开始算),取连续的5行。

例:

sql 复制代码
select * from emp order by sal limit 1;

//返回第一行:薪水最小的员工(张三)。


select * from emp order by sal limit 3,5;

//从偏移3(第4个位置,也就是赵六)开始,取连续5行:
//结果会是:赵六、孙七、周八(如果表中还存在更多行的话,会继续取,否则取到最后一行)。

去重

  • distinct关键字:用于返回唯一不同的值
sql 复制代码
#列出所有岗位,先查询在去重
select distinct job from emp;
#同时作用两列,不能查询目标列以外的列
select distinct job,mgr from emp;

组合查询

  • union操作符:执行多个查询(多条selete语句),将结果合并为单个结果集返回
sql 复制代码
select 字段1[,字段2,。。] from 表1
union
select 字段1[,字段2,。。] from 表2;

例:

sql 复制代码
select empno,ename from emp where empno>7700
union
select empno,ename from emp where ename not like'%c';//like模糊查询

select empno,ename from emp
union
select deptno,dname from dept;

注意

  • 每个查询必须包含相同数量的列
  • 列必须拥有相似的数据类型
  • union自动去除了重复的行,如果允许重复行,请使用union all

DDL(数据定义语言)

Data Definition Language,用于定义和管理数据库中的对象和结构,如表,列,索引等。

创建表

sql 复制代码
create table[if not exists] 表名(
    字段1 字段类型[列级约束条件],
    字段2 字段类型[列级约束条件]
    .......
    [表级约束条件]
)

修改表

理想状态下,当表中储存数据以后,该表就不应该被更新。在表的设计过程中需要花大量时间来考虑,以便后期不对该表进行大的改动。

  • 添加字段
sql 复制代码
alter table 表名// alter表示修改表
add column 新列名 数据类型[约束条件][first|after列名];// column表示列
  • 修改字段类型
sql 复制代码
alter table 表名
modify column 列名 数据类型[约束条件];//modify表示修改已存在列的定义(数据类型、长度、约束等)
  • 修改字段位置
sql 复制代码
alter table 表名
modify column 列名 数据类型 first|after 列名;//这里面frist|after表示位置放在第一列或者最后一列
  • 修改字段名
sql 复制代码
alter table 表名
change column 旧列名 新列名 数据类型;
  • 删除字段
sql 复制代码
alter table 表名
drop column 列名;

重命名表

sql 复制代码
alter table 旧表名
rename to 新表名;

删除表

sql 复制代码
drop table [if exists]表1[,表2,表3......];

DML(数据操作语言)

Data Manipulation Language,用于操作数据库中的实际数据,如插入,更新,删除和查询数据。

插入数据

  • 插入完整的行,所有字段。每一个字段都必须提供一个值,如果某个字段没有值应该使用NULL,每个字段必须以他们在表中定义的顺序给出。这种语法很简单,但是不安全,应该避免使用。
sql 复制代码
insert into 表名
values(
    字段1的值,
    字段2的值,
    。。。。。
);
  • 更安全的方法是,在表名后括号中给出字段名,values中的值的顺序与前面给出的字段的顺序相同,一一对应。不需要与表中定义的顺序相同,没有值的字段可以不提供。
sql 复制代码
insert into 表名(
    字段1,
    字段2
    。。。
)`
values(
    字段1的值,
    字段2的值,
    。。。
);

values后面可以跟多个括号,括号间用逗号分离,每个括号代表要插入的一条数据。单个insert语句插入多条数据比多条insert语句快。

更新数据

sql 复制代码
update 表名
set 字段1=字段1的值,
字段2=字段2的值,
。。。
where 限制条件;

记得加where限制条件,否则更新整个表中的每一条数据。

删除数据

sql 复制代码
delete from 表名
where 限制条件;

同样,不加限制条件会删除整个表中每一条数据

物理删除,无法恢复
注意:在对update或delete使用where前,应该先用selete语句进行测试,保证它的过滤结果是正确的(谨记)

相关推荐
小陈工2 小时前
Python Web开发入门(十七):Vue.js与Python后端集成——让前后端真正“握手言和“
开发语言·前端·javascript·数据库·vue.js·人工智能·python
0xDevNull6 小时前
MySQL数据冷热分离详解
后端·mysql
科技小花6 小时前
数据治理平台架构演进观察:AI原生设计如何重构企业数据管理范式
数据库·重构·架构·数据治理·ai-native·ai原生
一江寒逸7 小时前
零基础从入门到精通MySQL(中篇):进阶篇——吃透多表查询、事务核心与高级特性,搞定复杂业务SQL
数据库·sql·mysql
D4c-lovetrain7 小时前
linux个人心得22 (mysql)
数据库·mysql
阿里小阿希7 小时前
CentOS7 PostgreSQL 9.2 升级到 15 完整教程
数据库·postgresql
荒川之神7 小时前
Oracle 数据仓库雪花模型设计(完整实战方案)
数据库·数据仓库·oracle
做个文艺程序员7 小时前
MySQL安全加固十大硬核操作
数据库·mysql·安全
不吃香菜学java8 小时前
Redis简单应用
数据库·spring boot·tomcat·maven
一个天蝎座 白勺 程序猿8 小时前
Apache IoTDB(15):IoTDB查询写回(INTO子句)深度解析——从语法到实战的ETL全链路指南
数据库·apache·etl·iotdb