MySQL

发布于:2025-05-16 ⋅ 阅读:(15) ⋅ 点赞:(0)

数据库

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

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

存储在表中的数据是一种类型的数据,不同类型的数据应放到不同的表中,否则会使以后的检索和访问很困难。
数据库中的每个表都有一个名字,用来标识自己。此名字是唯一的,这表示数据库中没有其他表具有相同的名字。
表由一个或多个列组成。每一列存储一列特定的信息,列称为字段,每个列都有相应的数据类型。数据类型定义列可以存储的数据种类。例如,某一列中需要存储数字,该列的数据类型应该定义为数值类型。

基本语句

SQL语法不区分大小写。由于博主个人习惯,所以全篇用小写了(抱拳)。
每个语句后面是否有结束符号,主要看你运行几条语句,1条语句就不用加结束符号,而大于1条语句 就要加上结束符号了。
like为模糊查询,**=**为准确查找

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

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

创建数据库

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

使用数据库

use 数据库名

删除数据库

drop database[if exists]数据库名;

查询当前数据库信息

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

创建表

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

显示数据库中的表

show tables;

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

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

查看表的基本结构

desc 表名;
例:desc emp;

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

show create database 数据库名;
show create table 表名;

查询

简单查询

查询指定字段

select 字段1,字段2,......
例:select ename,sal from emp;
   select ename from emp;

查询全部字段

select * from 表名;
select * from emp;

条件查询

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

select * from emp where 条件;
select * from emp where empno>7500;

高级查询

排序

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

限制数量

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

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

例:这是一个排完序的表格

select * from emp order by sal limit 1;

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


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

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

去重

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

组合查询

  • union操作符:执行多个查询(多条selete语句),将结果合并为单个结果集返回
select 字段1[,字段2,。。] from1
union
select 字段1[,字段2,。。] from2

例:

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,用于定义和管理数据库中的对象和结构,如表,列,索引等。

创建表

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

修改表

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

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

重命名表

alter table 旧表名
rename to 新表名;

删除表

drop table [if exists]1[,2,表3......];

DML(数据操作语言)

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

插入数据

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

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

更新数据

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

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

删除数据

delete from 表名
where 限制条件;

同样,不加限制条件会删除整个表中每一条数据
物理删除,无法恢复
注意:在对update或delete使用where前,应该先用selete语句进行测试,保证它的过滤结果是正确的(谨记)


网站公告

今日签到

点亮在社区的每一天
去签到