MySQL常用命令

  • 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约束字段自动添加索引

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,658评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,482评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,213评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,395评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,487评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,523评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,525评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,300评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,753评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,048评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,223评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,905评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,541评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,168评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,417评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,094评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,088评论 2 352

推荐阅读更多精彩内容