前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL常用命令

MySQL常用命令

作者头像
用户7741497
发布2022-02-28 14:01:44
1.3K0
发布2022-02-28 14:01:44
举报
文章被收录于专栏:hml_知识记录hml_知识记录
  • DQL 数据查询语言 select
  • DML 数据操作语言 insert delete update
  • DDL 数据定义语言 create drop alter
  • DCL 数据控制语言 grant revoke

net start mysql80 win开启mysql进程

net stop mysql80 win关闭mysql进程

MySQL -uroot -p<password> 登录MySQL

create database <dbname> 创建名字为dbname的数据库

show databases; 查看MySQL里面有几个数据库,默认自带四个

use <dbname> 使用dbname数据库

show tables 查看当前库所有表名

desc <tableName> 查看表结构

  • DQL

select * form <tableName> 对tableName进行全表查询

select <field1>, <field2>... from <tableName> 从tableName表查询field1,filed2...

使用as取别名,但是不改变表filed名。(as可以省略,别名不能有空格,有空格可以用单引号)

select <field> as <myfield> for <tableName> 讲查询结果field->myfield

查询计算

select <field>*<n> as <myfiled> form <tableName> 将filed查询结果乘n并且改为myfiled

条件查询 where

**= 等于

<> 或者 !+ 不等于

<= 大于等于 >= 小于等于 > 大于 < 小于

between ... and ... 等价于 >= and <= (左小右大)

and 并且逻辑(优先级高于or, 可以()来提高or优先级)

or 或者逻辑

in (<v1>, <v2>,<v3>...) 在里面就为true

not in (<v1>,<v2>...)

模糊查询%(任意多个) _(任意一个)可以用\转义

排序 order by (默认升序) order by <field1>,<field2> desc 按field1降序,如果相等再比field2

order by <n> 按查询结果的第n列排序

语句执行顺序:select ... from ... where ... order by ... : from->where->select->order by

分组查询(group by可以多个字段联合分组):select <field> from <table> where <condition> group by <field> order by <field>执行顺序from-where-group by-select-order by

having:可以对分组之后的数据进一步过滤,效率比较低,尽量使用where过滤

注意:在分组查询里面select<field>里面的field只能是分组字段和分组函数,不然没有意义。

注意:null的判断要用is 或者is not

连接查询
  • 内连接 select <>,<> from <> inner join <> on <> where <>
    • 等值连接 on条件为等值
    • 非等值连接 on条件为非等值
    • 自联接 一张表取多次别名(看成多张表)
  • 外连接 select <>,<> from
    • 左外连接 左边的数据全部查询出来
    • 右外连接 右边的数据全部查询出来
  • 全连接
子查询:就是select或where或from语句里面嵌套select语句嵌套
  • DDL

建表:create table <tableName> (<field1> <type> <opt>,<field2> <type> <opt>, ...);

删表:drop table <tableName>(删除的表不存在会报错), drop table if exists <tableName>(避免报错)

增加数据insert into:insert into <tableName> (<field1>,<field2> ...) values <v1>,<v2> ...

更新数据:update <tableName> set <field1>=<v1>,<field2>=<v2> ... where <condition> 注意:没有条件会全部更新

删除数据(DML)

delete delete from<tableName> where <condition> 注意:没有条件会删除所有的数据,可以回滚,效率低

truncate(DDL) truncate table <tableName> 删除不可以回滚, 效率高

  • 对表结构的修改(alter)(DDL)(几乎不用,成本高):
  • 约束:建表时可以对字段进行约束
    • 非空约束 not null
    • 主键约束 primary key,auto_incremen自增
    • 唯一约束 unique
    • 外键约束 foreign key foreign key <fkName> references <tbName>(<field>) 外键fkName引用表tbName的field字段
  • 存储引擎(engine):不同的存储引擎,MySQL的存储数据的方式不一样
    • InnoDB(默认):数据有两个文件(*.frm;*.DB)支持事务,行锁,MVCC
    • MyISAM:数据有三个文件(.frm;.MYD;*.MYI);可压缩,
    • memory:数据存储在内存,反应速度快,但易丢失
  • 事务:MySQL的最小执行单元,要么全部成功,要么全部失败。(默认提交,即没执行一条就提交事务)

开启事务:start transaction

提交事务:commit

回滚事务:rollback

事务的特性(ACID):

  1. 原子性(A):最小执行单元不可再分.
  2. 一致性(C):一个事务里面的操作同时成功或失败。
  3. 隔离性(I):事务之间互不影响。
  4. 持久性(D):事务提交之后会落盘。
  • 事务隔离级别:
    • 读未提交(read uncommitted):隔离级别最低,存在脏读。
    • 读已提交(read committed):解决了脏读现象,但是不满足重复读取要求的业务。
    • 可重复读(repeat able):MySQL默认级别,只要事务不提交,读取的数据都不变,但是存在幻读(其他事务insert导致)。
    • 串行化(serializable):事务顺序执行,隔离级别最高,效率太低了。

设置MySQL隔离级别:set global transaction isolation level <isolationLevel>

查看当前的隔离级别:select @@tx_isolation

  • 索引(index):为了提高效率,避免全表扫描的一种机制,有哈希索引,B树,B+tree等

创建索引: create index <indexName> on <tableName>(<field>) 给表tableName的field字段加索引。

删除索引drop index <indexName> on <tableName>(<field>) 删除表tableName的field字段的索引。

索引失效几种情况:

  1. 模糊查询以%开头。
  2. where语句中使用or,并且or两端有一端字段没有索引。
  3. 复合索引不满足最左前缀原则。
  4. 索引字段在where子句里面参与了运算或者函数运算等。
  • 视图(view):对创建的视图进行操作(增删改)会影响原数据(简化开发)。

创建视图:create view <viewName> as <opt> 用opt(DQL)操作的查询结果创建视图

删除视图:drop view <viewName>

  • DCL

创建用户:create user <userName> indentified by <password>

  • 数据库三范式:表的设计规则,可以减少数据冗余。
    • 第一范式:有主键,字段原子不可再分。
    • 第二范式:满足第一范式,并且不存在部分依赖。
    • 第三范式:满足第二范式,并且不存在传递依赖。
  • MySQL常见数据类型: varchar 会根据实际的长度动态分配内存 省空间但是速度慢 char 定长 不灵活可能浪费空间但是分配速度快 int 最长11位 bigint 长整型long float double date 短日期 包括 年 月 日 默认格式 %Y-%m-%d datetime 长日期 包括 年 月 日 时 分 秒 默认格式 %Y-%m%d %h:%i:%s clob 字符大对象,可以存储最大4G的字符串,超过255字符的都用clob存储 blob 二进制大对象,存储图片,声音,视频等
  • 数据处理函数(单行:一个输入一个输出; 多行:多个输入一个输出): 单行处理函数:

lower 转小写

upper 转大写

substr 取子串 substr(<strName>,<start>,<len>) 截取strName从start(1开始)开始长度为len

concat 字符串拼接 concat(<str1>,<str2>) 结果为str1+str2

length 取长度

trim 去除前后的空白

str_to_date 将varchar字符串转换成日期date

date_format 将日期date转化为varchar字符串

format 数字格式化

round 四舍五入 round(<num>,<n>) 将num四舍五入保留小数点后n(可以为负数)位

rand() 生成随机数

ifnull 可以将null转换为具体值 ifnull(<field>,<value>) 如果field为null则当作值value

now() 可以获取当前时间

多行处理函数(group by 分组)(默认所有为一组):

count 计数(忽略null) count(<field>) 统计field不为null的行数 count(*) 统计总行数

sum 求和

avg 求平均

max 求最大值

min 求最小值

注意:分组函数不能放在where子句里面

  • orther

select version(); 查看当前MySQL的版本

\c 可以终止sql的输入

source path 导入path路径的数据

mysqldump <databaseName> <path> 把库databaseName导出为sql脚本文件到path目录下

执行顺序 from-where-group by-having-select-order by-limit

case when then 语句 case <field> when <v1> then <opt1> when <v2> then <opt2> else <opt3> end

distinct 查询结果去重 select distinct <field1>,<field2> from <tableName> 联合去重

distinct 只能在所有查询字段最前面

union:结果集合并注意:结果集合并时两个语句的列要相等

limit:将查询结果一部分取出来,分页查询 limit<n> 取查询结果的前n个 limit <start>,<len> 取start(0开始)开始的n个

笛卡儿积:表连接查询是没加条件查询的结果条数是所有表的积。避免:加条件查询。

create table <tableName> as <opt> 将opt的查询结果新建应该tableName表

unique约束字段自动添加索引

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 连接查询
  • 子查询:就是select或where或from语句里面嵌套select语句嵌套
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档