首页 > 数据库 >Mysql基础命令总结

Mysql基础命令总结

时间:2024-10-22 22:36:09浏览次数:6  
标签:总结 索引 数据库 Mysql 命令 表名 table 列名 select

1. DDL

1.1 操作数据库和表

Data Definition Language 数据定义语言
Create,Retrieve(查询),update,Delete

1.1.1 操作数据库

  1. 显示所有数据库:show databases;
  2. 显示创建得数据库:show create database 数据库名称;
  3. 创建一个数据库:create database 数据库名称;
  4. 创建数据库前先判断是否存在:create database if not exists 数据库名称;
  5. 创建数据库并设置字符编码格式:create database 数据库名 character set gbk;
  6. 修改数据库的字符集:alter database 数据库名称 character set 字符集名称(utf8);
  7. 删除一个数据库:drop database 数据库名;(drop database if exists 数据库名称; 先判断是否存在数据库)
  8. 切换数据库:use 数据库名称;
  9. 查询现在正在使用的数据库:select database();

1.1.2 操作数据表

`
create table tablename(
字段1 数据类型 约束1 约束2
字段2 数据类型 约束

);

create table employee(
id int primary key auto_increment, #id主键且自增
name varchar(10) not null,
sex varchar(5) not null,
department varchar(30) not null
)auto_increment=2; set @@ auto_increment_increment=3
`

  1. 查询某个数据库的所有表的名称:show tables;
  2. 查询表结构:desc 表名;
  3. 创建表:create table 表名(列名1 数据类型1,列名2 数据类型2 ...);
  4. 复制表:create table 表名1 like 表名2;
  5. 清空表的数据:delete from 表名;
  6. 删除表: drop table if exists 表名;

1.1.3 操作数据列

  1. 修改表名:alter table 表名 rename to 新表名;
  2. 显示表的字符创建信息:show create table 表名;
  3. 修改表的字符集:alter table 表名 character set 字符集;
  4. 添加一列:alter table 表名 add 列名 数据类型;
  5. 修改列名称:alter table 表名 change 旧列名 新列名 数据类型;
  6. 修改列数据类型: alter table 表名 modify 列名 数据类型;
  7. 删除列:alter table 表名 drop 列名;

1.2 DDL 数据进行增删改查

DML(增删改查表中的数据)对数据进行增删改查

  1. 添加数据:insert into 表名(列名1,列名2...)values{...};
  2. 删除数据:delete from 表名 where 条件;
  3. 删除全部记录:delete from 表名;
  4. 删除表并创建一个同名的空表(效率更高):teuncate table 表名;
  5. 修改数据:update 表名 set 列名1=值1,列名2=值2 where 条件

2. DQL查询数据

DQL(Data Query Language 数据查询语言) 用来查询数据

2.1 基本语法语法

select 字段1,字段2....(字段列表) from 表一,表二....(表名列表) where 条件1,条件2...(条件列表) group by 分组字段 having 分组之后的条件 order by 按什么字段排序 limit 6 分页限定

2.2 基本查询语句

  1. 查询所有信息:select * from 表名;
  2. (distinct)去除相同的数据:如 :select distinct 列名 from student;
  3. (between and)之间(包含之间):如 :select * from stu where age between 20 and 30;
  4. 在查询中使用列的别名: select 列名 AS 新列名 form 表名 where 查询条件;
  5. (null)查询: select * from stu where id is null /is not null;
  6. (like)模糊查询 select * from 表名 where 字段名 like 对应值(子串),(*like,单个任意字符 %多个任意字符)查询学好1开头的学生:select * from stu id like “1%”;
  7. (order by)排序(可叠加):select * from stu order by math asc/desc,english asc;(desc降序);

2.3 聚合函数

  1. count函数 : select count(ifnull(name,0)) from stu;(自动排除null)
  2. count(*)//有多少行数据
  3. max/min/sum/avg(最大/最下/和/平均):select max(math) from stu;
  4. 将字符串s中的所有字符改为大写 lower(s) /upper(s)
  5. 获取当前日期:curdate();
  6. 获取当前时间:curtime();
  7. 获取当前日期和时间:now();

(group by)分组查询(查询的字段只能是聚合函数或分组的字段)
基本语法:select 字段名列表 form 表名 where 约束条件 group by分组的字段名
如:select sex avg(math) from stu group by sex; 查询男女的平均分

limit 分页查询:select * from stu limit 3;(3条数据)
where和Having区别:
where在分组之前进行判定,having在分组之后进行判定)
where后不可以跟聚合函数,having后可以跟聚合函数

2.4 连接查询

隐式内联:select * from emp,dept where dept.id=emp.id;
显式内联:select * from emp inner join dept on emp.id=dept.id;

2.4.1 外连接

外连接查询中参与连接的表有主从之分,已主表的每行数据匹配从表的数据列,将符合连接条件的数据直接返回到结果集中,对不符合连接条件的列,将被填上null值再返回到结果集中。

左外连接(查询的是左表的所有记录或交集),右边没有的会填充null;
如 : select t1.*,t2.name from emp as t1 left join dept as t2 on t1.id=t2.id;

右外连接(右外连接包含右表中所有的匹配行,右表中有的项在左表中没有对应的项将以null值填充)。
如: select t1.*,t2.name from emp as t1 right join dept as t2 on t1.id=t2.id;

3. DCL 授权,权限和安全访问

  1. 创建用户:create user ‘用户名’@‘主机名(%未任意主机)’ identified by ‘密码’;
  2. 删除用户:drop user ‘用户名’@‘主机名’;
  3. 修改用户密码:update user set password = password(‘新密码’) where user = ‘用户名’;
    set password for ‘用户名’@‘主机名’ where user=‘用户名’;
  4. 查用户的权限:show Grants for ‘用户名’@‘主机名’;
  5. 授予权限:grant 权限列表 to ‘用户名’@‘主机名’;
  6. 权限列表:delete,update,select on stu
  7. 授予所有权限在任意数据库和表,grant all on . to ‘用户名’@‘主机名’;
  8. 撤销权限:revoke 权限列表 on 数据库名.表名 from ‘用户名’@‘主机名’;

4. 约束

对表中的数据进行限定,保证数据的正确性,有效性,完整性
基本语法:
表创建好了: alter table 表名 modify 列名 类型 约束;
表还没创建好,对于字段的约束: id int 约束(可以是 primary key auto_increment)

  1. primary key(特殊) 删除唯一约束:alter table 表名 drop primary key;
  2. not null(非空约束):alter table 表名 modify 列名 类型 not null;
  3. unique (特殊)删除唯一约束:alter table 表名 drop index 列名;
  4. auto_increment(自动增长) 例id自动增长 id int primary key auto_increment
  5. 删除自动增长 alter table stu modify id int;
  6. (foreign key)创建表的时候添加外键:constraint 外键名称 foreign key(外键列名称) references 主表名称(主表列名称)

5. 事务

如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败
开启事务:start transaction ;
提交事务:commit;
回溯: rollback;
start transaction ...(业务逻辑) commit
事务4大特征:
原子性(不可分割的最小操作单位)
持久性(事务提交或回滚,数据库持久化保存数据)
隔离性(事务之间相互独立)
一致性(事务操作前后总量不变)
隔离:多个事务之间是隔离的,相互独立的,但如果多个事务操作同一批数据,则会引发一些问题,设置不同的隔离级别就可以解决问题
多线程读取同一数据存在问题:
读脏:一个事务,读取到另一个事务没有提交的数据
不可重复读(虚读):在同一个事务中,两次读取到的数据不一样
幻读:一个事务操作(DML)数据表中的所有记录,另一个书屋添加一条数据。则第一个事务查询不到自己的修改

6. 索引

索引是帮助MySQL高效获取数据的数据结构。更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度。 一般来说索引本身也很大,不可能全部存储在内存中,因此索引往往是存储在磁盘上的文件中的(可能存储在单独的索引文件中,也可能和数据一起存储在数据文件中) 数据量大时减少查询时间效果明显
优点:可以提高数据检索的效率,降低数据库的IO成本,通过索引列对数据进行排序,降低数据排序的成本,降低了CPU的消耗。如果按照索引列的顺序进行排序,对应order by语句来说,效率就会提高很多。
缺点:索引会占据磁盘空间,索引虽然会提高查询效率,但是会降低更新表的效率。比如每次对表进行增删改操作,MySQL不仅要保存数据,还有保存或者更新对应的索引文件。

索引名命名格式为 :表名 _字段名

6.1 索引的操作:

  1. 创建索引(普通索引,可重复):create index 索引名 on 表名('字段名');
    create index stu_name on student(name);
  2. 删除索引:drop index stu_name;
  3. 查看表的索引:show index from table_name(表名)
  4. 唯一性索引:unique
    create unique index 索引名 on 表名(列名); create unique index ind_name on school(phone);
  5. 位图(分类)索引:bitmap
    数据量比较大,基数比较小 比如:男/女 create bitmap index 索引名 on 表名(列名); create bitmap index ind_sid on student(sid);

标签:总结,索引,数据库,Mysql,命令,表名,table,列名,select
From: https://www.cnblogs.com/shuijibaobao/p/18493988

相关文章

  • 通过命令行修改nacos配置文件
    通过命令行修改nacos配置文件1、介绍nacos-cli是一个命令行工具,用来代替nacos的图形界面操作。下载地址:GitHub-szpinc/nacos-cli:用终端命令行的方式操作nacos2、安装进入页面之后,下载对应的文件,上传到服务器上,授予执行权限,放到Linux执行文件bin目录,/usr/local/bin和/u......
  • Linux系统:more命令
    1、命令详解:        more命令是Linux系统中的一个文本查看器,它可以一次显示一页内容,并提供了一些方便的浏览操作,比如向下滚动、向上滚动、搜索等。当需要查看大型文件或长文本时,通过分页显示可以很好地避免一次性将整个文件显示在终端上,从而提高效率。2、语法:more......
  • 10.22 课程内容总结
    本节课学习进一步运用AI生成一份完整、独特、符合自己需要的个性化教案。以下为课程中设计到的提示语以及思维导图和PPT生成工具。提示语设计:·提示语设计,是指用户设计提供给生成式人工智能大模型的一段文字,AI根据这些文本生成回应内容。·提示语如何设计,决定了AI生成内容的质......
  • MySQL学习笔记
    目录基础篇:通用语法:基础操作:DDL-数据库操作:基本指令:数据类型:数值类型:字符串类型:日期时间类型:表结构修改:DML-增、删、改操作:插入操作:修改、删除操作:DQL-查询操作:DQL-编写顺序:基础查询:条件查询:分组查询:聚合函数:语法:排序查询:分页查询:DQL-执行顺序:DCL-用户管理:DCL-权限控制:函数:字符串......
  • 如何实现聚水潭·奇门销售数据与MySQL的高效对接
    聚水潭·奇门数据集成到MySQL的技术案例分享在现代企业的数据管理中,如何高效、准确地实现不同系统之间的数据对接和集成是一个重要的课题。本文将聚焦于一个具体的系统对接案例:将聚水潭·奇门平台上的销售出库单数据集成到MySQL数据库中的BI智选-销售出库表。为了确保数据集成......
  • 在Linux命令行下载Google Drive大文件(解决Google Drive下载慢的问题)
    文章目录1、使用gdown命令2、复制链接3、替换为Linux下载链接注意:在Linux命令行进行1、使用gdown命令wget只能下载小文件,大文件需要用到gdownpipinstallgdown#如果不能够直接安装,使用以下命令gitclonehttps://github.com/wkentaro/gdowncdgdownpipin......
  • iOS - Swift 正则校验场景总结
    1.校验是否只含有“数字和字母”或者“字母”classfunccheckUserName(_username:String)->Bool{    letregex=try?NSRegularExpression(pattern:"^(?![0-9]+$)[0-9A-Za-z]{8,16}$",options:[])    returnregex?.firstMatch(in:usernam......
  • markdown转pdf,方法总结
     总结使用1.VScode插件MarkdownPreviewEnhanced。格式是正确的。但是无法批处理和指令处理 2. pandoc--pdf-engine=typst。无法导出粗体和斜体 需求markdown格式转为pdf 我遇到的:1.我现在想把多个八股文文档(GitHub项目里的scutan90/DeepLearning-500-quest......
  • Python——脚本实现datax全量同步mysql到hive
    文章目录前言一、展示脚本二、使用准备1、安装python环境2、安装EPEL3、安装脚本执行需要的第三方模块三、脚本使用方法1、配置脚本2、创建.py文件3、执行脚本4、测试生成json文件是否可用前言在我们构建离线数仓时或者迁移数据时,通常选用sqoop和datax等工具进行......
  • RocketMQ - 总结
    1.为什么要使用MQ,使用场景是什么异步:减少请求响应时间,实现非核心流程异步化(架构设计原则,能异步就不要同步)解耦:屏蔽异构平台的细节,生产者消费者可自行扩展修改系统能力只需遵循消息约束,生产者消费者不受对方影响流量削峰:消息堆积能力,消息保存在MQ中,消费端以稳定的速率拉......