暂无图片
暂无图片
2
暂无图片
暂无图片
1
暂无图片

MySQL必知必记的CRUD命令

93

MySQL入门基础操作之必知必记的CRUD命令


二话不说,官网献上:https://dev.mysql.com/

数据库:DataBase(DB)

登录MySQL:mysql -p 密码 -u 用户名 -h 主机名 --default-character-set=utf8

>mysql -u root -p root用户登录 -u:指定登录的用户,后面有无空格均可
复制
查看所有DB:SHOW DATABASES; 新建DB:CREATE DATABASE [IF NOT EXISTS] 数据库名; 进入/切换DB:USE 数据库名; 查看DB包含的数据表:SHOW TABLES; 查看表结构:DESC 表名;
复制

结束符:英文分号(;)
大小写:语句不区分大小写->自动转为大写(故一般建议也是用大写)
数据区分大小写
标识符:字母开头+数字+三个特殊字符(#_$)

标准的SQL语句:

  • 查询语句:select
  • DML:insert、update、delete
  • DDL:create、alter、drop、truncate
  • DCL:grant、revoke
  • 事务控制语句:commit、rollback、savepoint

一、查询语句:select

SELECT 字段... from 表名 WHERE 判断条件 ORDER BY DESC; SELECT * FROM 表名 WHERE NOT 字段 LIKE '\_%' ESCAPE '\';
复制

去除重复行:SELECT DISTINCT xxx…
a BETWEEN b AND c 包括左右:a>=b && a<=c
LIKE 反斜线(\)作为转义字符,但无法转义自身,需用ESCAPE关键字显式进行转义
IS NULL
IN
NOT、AND、OR
ORDER BY DESC 默认升序ASC,DESC降序

数据库函数

  • 单行函数:一次操作一行
    字符函数 数值函数 日期函数 转换函数 通用函数
  • 多行函数 :一次操作多行
    组函数、 聚合函数

多表连接查询-联结(join):

  • 交叉连接-笛卡尔积(cross join):所有情况的组合 ,不推荐使用
  • 内连接 :多张表通过 相同字段进行匹配,只显示匹配成功的数据
写法一. select * from 表名1,表名2 where 表名1.字段 = 表名2.字段 ; 写法二. select * from 表名1 inner join 表名2 on 表名1.字段 = 表名2.字段;
复制
  • 不等值连接(一般不用)
select * from 表名1,表名2 where 表名1.字段 != 表名2.字段;
复制
  • 自连接:将一张表通过别名 “视为”不同的表,必须费性能(n的平方)

  • 外连接

    左外连接:以左表为基准(左表数据全部显示),去匹配右表数据,如果匹配成功 则全部显示;匹配不成功,显示部分(无数据部分 用NULL填充)

a.(oracle独有) select * from 表名1,表名2 where 表名1.字段 = 表名2.字段(+) ; b. select * from 表名1 left outer join 表名2 on 表名1.字段 = 表名2.字段;
复制

右外连接:以右表为基准(右表数据全部显示),去匹配左表数据,如果匹配成功 则全部显示;匹配不成功,显示部分(无数据部分 用NULL填充)

a.(oracle独有) select * from 表名1,表名2 where 表名1.字段(+) = 表名2.字段 ; b. select * from 表名1 right outer join 表名2 on 表名1.字段 = 表名2.字段;
复制

全外连接 = 左外 + 右外连接 - 去重
在这里插入图片描述

  • 子查询-嵌套查询:

集合运算:
并运算:UNION
交运算:INTERSECT
差运算:MINUS

二、DML:insert、update、delete

插入表信息语句:INSERT INTO 表名(字段...) VALUES(字段对应插入的值...); 同时插入多个值:INSERT INTO 表名(字段...) VALUES(字段对应插入的值...),(字段对应插入的值...),...; 修改表信息语句:UPDATE 表名 SET 字段=修改的值 WHERE 判断条件; 删除表信息语句:DELETE FROM 表名 WHERE 判断条件;
复制

三、DDL:create、alter、drop、truncate

建表:

CREATE TABLE 表名( 字段 类型 [约束], ... );
复制

获取数据建表:

CREATE TABLE 表名 AS 取建表数据;
复制

修改表结构:

ALTER TABLE 表名 ADD( 字段 类型 [约束], ... );
复制

仅修改一行数据可省略括号

修改列类型:

ALTER TABLE 表名 MODIFY 字段 新类型 [约束] [FIRST | AFTER 指定字段];
复制

删除列:

ALTER TABLE 表名 DROP 字段;
复制

重命名数据表:

ALTER TABLE 表名 RENAME TO 新表名;
复制

修改列名:

ALTER TABLE 表名 CHANGE 字段 新字段 新类型;
复制

删表:

DROP TABLE 表名;
复制

删表-保留表结构:

TRUNCATE 表名;
复制

truncate一次性删除全部,再新建表结构,速度快;delete一行一行删除

五种完整性约束:

  • NOT NULL
  • UNIQUE
  • PRIMARY KEY
  • FOREIGN KEY
  • CHECK

MySQL使用information_schema数据库里的TABLE_CONSTRAINTS表来保存所有的约束信息
行级约束:在建表类型后直接声明 - [约束]
表级约束:在建表末尾处补充说明 - CONSTRAINT 约束名 约束(字段…)
也可建表后在修改添加

增加约束:

ALTER TABLE 表名 ADD 约束(字段...);
复制

修改列类型时增加约束:

ALTER TABLE 表名 MODIFY 字段 新类型 [约束] [FIRST | AFTER 指定字段];
复制

删除约束:

ALTER TABLE 表名 DROP INDEX 约束名;
复制

删除主键约束:

ALTER TABLE 表名 DROP PRIMARY KEY;
复制

添加外键约束:

CONSTRAINT 约束名(表名_主表名_fk) FOREIGN KEY(字段) REFERENCES 主表(字段) [on delete cascade | on delete set null]
复制

on delete cascade:删主表记录时从表记录级联删除
on delete set null:删主表记录时从表记录的外键设为null

索引:

创建索引:CREATE INDEX 索引名 ON 表名(字段...); 删除索引:DROP INDEX 索引名 ON 表名;
复制

视图:

创建视图:

CREATE OR REPLACE VIEW 视图名 as 创建视图的数据 [with check option];
复制

with check option:指定不允许修改该视图的数据
Oracle采用-with check only
删除视图:DROP VIEW 视图;

四、DCL:grant、revoke

show grants for xxx; 查看用户权限 grant connect,resource to xxx; 授予xxx用户链接/资源处理权限 grant all privileges on DB.* to 用户名@localhost identified by '密码' 为用户授权访问本地DB grant all privileges on databases.* to 用户名@"%" identified by '密码' 准许用户从其他客户机访问DB
复制

五、事务控制语句:commit、rollback、savepoint

开启事务:

  • BEGIN
  • SET AUTOCOMMIT=0
  • START TRANSACTION

保留点SAVEPOINT:

  • SAVEPOINT savepointName 声明
  • ROLLBACK TO savepointName 回滚
  • RELEASE TO savepointName 删除
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论

D
DBA小白菜
暂无图片
2月前
评论
暂无图片 0
MySQL入门基础操作之必知必记的CRUD命令
2月前
暂无图片 点赞
评论