【MySQL中的SQL语句】

引言:以下 SQL 语句均为 MySQL 的实例,其他关系型数据的SQL与此会略有区别,请大家注意!😁
如果想要 安装MySQL,可以看这篇帖子👉 https://blog.youkuaiyun.com/SuperCodeZhy/article/details/143773796


 

零:SQL中的9大核心动词

  • 数据定义:createdropalter
  • 数据查询:select
  • 数据操纵:insertupdatedelete
  • 数据控制:grantrevoke

 

提示1:下面所有的演示为了方便大家理解,作者使用了部分中文,大家在实际编写 SQL 中,请更换成自己需要的英文。

提示2:以下内容中带有 [ ] 的地方,均表示可以省略的内容;带有 | 的地方,均表示 的意思;# 后面是 注释

 

一:数据库 database

  • 创建数据库:create database 数据库名;

  • 删除数据库:drop database 数据库名;

  • 查看所有库:show databases;

  • 使用某个库:use 数据库名;

  • 知识点:创建和删除 数据库 时,可以在 数据库名 前面添加 if existsif not exists 进行判断

 

二:模式 schema

  • 创建模式:create schema [模式名] authorization 用户名;     # 如果省略模式名,则模式名为用户名

  • 删除模式:drop schema 模式名 cascade | restrict;     # cascade(级联) 和 restrict(限制) 必须2选1

 

三:表 table

  • 创建表:create table 表名( 字段名 数据类型 [字段约束], ... , [表约束] );

  • 删除表:drop table 表名;

  • 查看表结构:desc | describe 表名;

  • 查看所有表:show tables;

  • 创建临时表:create temporary table 表名 ( 查询语句 );

  • 知识点:创建和删除 表 时,可以在 表名 后面添加 if existsif not exists 进行判断

  • 知识点:约束分为 列级完整性约束表级完整性约束
    若表的主码是由多个属性构成的,则必须作为表级完整性约束进行定义,应写在最后面。


创建表时常用的约束中文释义
unsigned无符号
not null非空值
default默认值
comment字段说明
primary key主键
foreign key外键
unique唯一
constraint约束
references引用
cascade级联
restrict限制
index索引
using使用

 

四:更改 alter

  • 修改表名:alter table 原表名 rename 新表名;

  • 添加新列:alter table 表名 add 新列名 数据类型 [约束];

  • 删除旧列:alter table 表名 drop 列名 [约束];

  • 修改旧列:alter table 表名 change 原列名 新列名 数据类型 [约束];

  • 添加主键:alter table 表名 add primary key(列名);

  • 删除主键:alter table 表名 drop primary key;     # 自增的主键不能删除

  • 添加外键:alter table 外表名 add constraint 外键约束名 foreign key (外键列名) references 主表名 (主键列名);

  • 删除外键:alter table 外表名 drop foreign key 外键约束名;

  • 添加复合主键:alter table 表名 add primary key( 列名1, 列名2, ... );

 

五:插入 insert

  • 插入单条数据:insert into 表名 (列名1, 列名2, ...) values ( 值1, 值2, ...);

  • 插入多条数据:insert into 表名 (列名1, 列名2, ...) values ( 值1, 值2, ...), ( 值1, 值2, ...), ...;

  • 插入或更新数据:replace into 表名 (列名1, 列名2, ...) values ( 值1, 值2, ...);

  • 将查询结果插入到新表中:create table 表名 ( 查询语句 );

 

六:删除 delete

  • 选择性删除:delete from 表名 where 条件;     # 自增列不会重新编号

  • 无条件删除:truncate table 表名;     # 自增列会重新编号

 

七:更新 update

  • 无条件修改:update 表名 set 列名1=值1, 列名2=值2, ...;     # 整个列的数据都会被修改

  • 少条件修改:update 表名 set 列名1=值1, 列名2=值2, ... where 条件;

  • 多条件修改:update 表名 set 列名1=值1, 列名2=值2, ... where 条件1 and 或 or 条件2 ...;

  • 数值型修改:update 表名 set 列名=列名 + 或 - 数值 where 条件 ...;

  • 字符型修改:update 表名 set 列名='字符串' where 条件 ...;

 

八:查询 select

  • 查询所有列:select * from 表名;

  • 条件查询所有列:select * from 表名 条件...;

  • 查询部分列:select 列名1, 列名2, ... from 表名 条件...;

  • 给定列别名查询:select 列名1 as 别名1, 列名2 as 别名2, ... from 表名 where 条件...;

  • 给定表别名查询:select 新表名.列名1, 新表名.列名2, ... from 表名 as 新表名 where 条件...;

  • in子查询:select 列名1, 列名2, ... from 表名 where in (select查询语句 或 值1,值2, ... );

  • 区间查询:select 列名1, 列名2, ... from 表名 where 列名 between 值1 and 值2;

  • 数值型合并查询:select 列名1 + 列名2, ... as 新列名 from 表名 where 条件...;

  • 空值/非空值查询:select 列名1, 列名2, ... from 表名 where 列名 is null 或 is not null;

  • 将查询结果插入某个表中:insert into 插入表名(列名1, 列名2, ...) (select列名1, 列名2, ... from 查询表名);

  • 综合查询:select 列名/表达式/函数/常量/* [as 别名] from 表名 [as 别名] where 条件 group by 列名 [having 条件] order by 列名 [asc | desc] limit ...;

  • 知识点1:在 select 后面跟 distinct 就可以去除重复的查询结果

  • 知识点2group bywhere 条件语句结合使用时,where 在前,group by 在后

  • 知识点3:使用 having 的前提是分组,即 having 只能用在 group by 后面,对分组后的结果进行筛选

  • 知识点4where 后的条件表达式里不允许使用 聚合函数,而在 having 后可以使用 聚合函数

知识点5:当一个查询语句同时出现 wheregroup byhavingorder bylimit 的时候,执行顺序如下:

   ① 执行 where ... 对全表数据进行条件筛选,返回 第1个结果集

   ② 针对 第1个结果集 使用 group by ... 进行分组,返回 第2个结果集

   ③ 针对 第2个结果集 中的每一组数据进行 select ... ,有几组就执行几次查询,之后返回 第3个结果集

   ④ 针对 第3个结果集 执行 having ... 进行筛选,选出满足条件的分组,返回 第4个结果集

   ⑤ 针对 第4个结果集 使用 order by... 进行排序,返回 第5个结果集

   ⑥ 针对 第5个结果集 进行分页处理,返回 最终结果集

 

九:事务 transaction

  • 开始事务:begin;start transaction;

  • 提交事务:commit;

  • 回滚事务:rollback;

  • 知识点1:使用事务应该先关闭自动提交 set autocommit=0;

  • 知识点2:查看当前sql语句是否为自动提交 show variables like 'autocommit';

 

十:视图 view

  • 创建视图:create view 视图名[(列名, ...)] as select查询语句 [with check option];

  • 删除视图:drop view 视图名 [cascade];

  • 查看视图:select 列名... from 视图名;

 

勾:索引 index

  • 创建索引:create index 索引名 on 表名(列名);

  • 删除索引:drop index 索引名 on 表名;

  • 查看索引:explain select 列名 from 表名;

 

圈:触发器 trigger

  • 查看触发器:SHOW TRIGGERS;

  • 删除触发器:DROP TRIGGER 触发器名;

 

凯:创建用户与授权

  • 创建用户:CREATE USER '用户名'@'主机IP' IDENTIFIED BY '密码';

  • 删除用户:DROP USER '用户名'@'主机IP';

  • 更改用户密码:SET PASSWORD FOR '用户名'@'主机IP' = PASSWORD('新密码');

  • 查看所有用户及其IP:select user,host from mysql.user;

  • 给某用户授权:GRANT 权限 ON 数据库名.表名 TO '用户名'@'主机IP';

  • 给某用户授权并且该用户也能给别人授权:GRANT 权限 ON 数据库名.表名 TO '用户名'@'主机IP' WITH GRANT OPTION;

  • 撤销用户授权:REVOKE 权限 ON 数据库名.表名 FROM '用户名'@'主机IP' [cascade | restrict];

  • 查看某用户所有权限:SHOW GRANTS FOR '用户名'@'主机IP';

  • 知识点:权限包括 selectinsertupdatedeleteallcreatedrop

 

尖:备份和恢复

  • 备份数据库:mysqldump -u 用户名 -p 数据库名 > 导出路径例如d:\xxx.sql

  • 备份数据表:mysqldump -u 用户名 -p 数据库名 表名 > 导出路径例如d:\xxx.sql

  • 注意:上述备份在dos窗口中操作,只需输入密码即可

  • 恢复数据库:mysql -u 用户名 -p 数据库名 < 文件路径例如d:\xxx.sql

  • 恢复数据表:mysql -u 用户名 -p 数据库名 表名 < 文件路径例如d:\xxx.sql

  • 注意:上述恢复必须存在要恢复的数据库,且需要use这个数据库

 

王:外键的三种模式

  • RESTRICT (限制):如果有引用,不允许删除和修改

  • CASCADE (级联):只要删除父表中的外键值,子表中的外键值所在的记录也会一并删除

  • SET NULL (设置为NULL):如果有引用,但引用没有设置NOT NULL,那么就允许删除和修改

 

至此,关于 SQLMySQL 中的简单使用就介绍完了。想要了解更多知识或交个朋友,欢迎访问 👉 本人博客 😁😁😁


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张宏业.

您的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值