总结一下 Mysql crud - create retrieve update delete

  • 对于初学者而言,记住一些必要的语句是必须的,个人建议还是花些精力记忆,死记硬背肯定是吃力不讨好的。其实研究了一下,语句还是有点规律的。对于==crud(增、查、改、删)==你必须牢记了。
  • 其实,mysql的DDL、DML、DQL、DCL之中随处可见crud,crud可谓mysql的根基。简而言之,mysql就是对库、表、记录进行crud
  • 库、表的crud就是DDL。表记录的cud就是DML,表记录的r就是DQL。mysql的权限操作就是DCL了。
  • 开始记吧!
    1. xxx database/table 库/表名 …:库和表的操作,该种样式,xxx关键词有create,alter,drop。这些关键词对库表的操作,后面都带有database或者table,然后再加你的库、表名称。
    2. alter table 表名 xxx 列名 数据类型:表的修改,xxx关键词有:add、change、modify、drop。
    3. xxx 表名 …:表记录的操作,insert into (values),delete from,update (set),作为三个关键词记忆。
    4. 记住上面的三个要点,个人觉得基本的语句会记得差不多了。关键还是得多练,练多了你会有更深的理解。

1、库的crud - DDL

create database if not exists 库名 character set utf8mb4;
-- 如果**库名**不存在,则创建该数据库,字符集为utf8mb4
show databases; -- 显示所有的数据库
show create database 库名;-- 显示创建该数据库的语句详情

use 库名; -- 使用该数据库
select database(); -- 查询正在使用的数据库
alter database 库名 character set gbk; -- 修改库的字符集为gbk
drop database if exists 库名; -- 库存在,则删除

2、表的crud - DDL

create table 表名(
	列名1 数据类型1,
	列名2 数据类型2,
	...,
	列名n 数据类型n
);
-- 这里要强调一下**数据类型n**后面没有逗号,没有逗号,没有逗号。
-- 简单的说下数据类型吧,double(5,2)  5位数,其中2位小数,最大值999.99
-- varchar(2)最大两个字符串 -  zh  2个字符;张三  也是两个字符
-- 简简单单例子
create table student(
	id int primary key auto_increment,
	name varchar(32),
	age int,
	score double(3,1),
	birthday date,
	insert_time timestamp
);
-- timestamp 类型 不设置,则默认自动设置当前时间 ,这里我当初的没有成功设默认值

create table xxx like 被复制的表名; -- 复制一张表,名为 xxx  
show tables;
show create table 表名; -- 看建表语句
desc 表名; -- 看表结构
-- 修改表
alter table 表名 rename to 新表名; -- 重命名表
alter table 表名 character set utf8mb4;
alter table 表名 add 列名 数据类型;

alter table 表名 change 列名 新列名 新数据类型;
alter table 表名 modify 列名 新数据类型;

alter table 表名 drop 列名;
drop table if exists 表名;

3.1、表记录cud - DML

-- c
insert into 表名 (列名1,列名2,...,列名n) values (1,2,...,值n); -- 列 值 要一一对应
insert into 表名 values(所有列对应的值); -- 简写形式 值:除了数字类型,其他类型(日期类型)全用引号(单双皆可)
-- u
update 表名 set1=1,2=2,...,列n=值n [where 条件] -- 注意,无条件会修改表中所有记录,有多少条就执行多少次
-- d
delete from 表名 [where 条件] ; -- 注意,不加条件会清空表中记录,有多少条记录,执行多少次
truncate table 表名; -- 删除表,然后再创建一模一样的表,只执行2次sql,效率高

3.2表记录r - DQL

-- 字段=列 desc asc(默认升序)
select * from 表名
where 条件
group by 字段(按此字段分组)
having 分组之后的条件
order by 字段(排序)
limit n,m (n:起始位置;m:所需查询的数量)
a = null 该条件用法错误,要用 a is null,另外 is not null 顺序不能乱
不等于有两种:<>  !=
单个字符:_  '_马%'
多个字符:%
[a,b]between a and b
结果集完全相同才可去重,某一列相同不去重:distinct 字段

4、修改表的约束(不常用)

alter table 表名 drop index 列名; -- 删除索引
alter table 表名 drop primary key; -- 删除主键 唯一故不需要指定列名
alter table 表名 modify 列名 数据类型 约束;-- 前面创建的学生表
alter table student modify id int; -- 主键删除不了,但是会执行删除自动增长(auto_increment)

约束:保证有效、正确、完整性。

primary key -- 主键约束 非空且唯一,只有一个字段
not null -- 非空
unique -- 唯一,这个会创建索引
foreign key -- 外键

5、其他

  • 聚合函数会排除所有null值,也就是说null值参与计算时,会被排除。
  • 连接查询:[xxx]表示xxx可省
select * from a [inner] join b on 条件; -- 显示内连接
select * form a,b where a.xxx=b.xxx ; -- 隐式内连接

select * from1 left [outer] join2 on 条件; -- 左外连接 左表全显示,右边拼接表2  结果:表1中的字段,表2中的字段

-- left 改为right 就是右外连接
  • 事务:
    mysql数据库中事务默认自动提交,一条DML语句会自动提交一次事务。
-- 开启事务,手动提交
start transaction; -- 手动开启事务
sql 语句; -- 执行的sql语句
rollback; -- 回滚
commit; -- 提交
  • 事务特性:
    • 原子性:事务要么全部成功,要么全部失败;不可能出现一个成功,一个失败。
    • 持久性:事务成功后,数据能够持久化
    • 隔离性:事务之间具有隔离,互不影响
    • 一致性:事务执行之前,和事务执行之后,数据具有一致性。如金额转账,转账之前,和之后,两账户的总额不变。
select @tx_isolation; -- 查看事务隔离级别
set global transaction isolation level repeatable read; -- 设置之后重启SQLyog才会生效
  • 事务隔离级别:√ 表示存在该问题,×表示不存在该问题
隔离级别脏读不可重复读幻读
read uncommitted(读未提交)
read committed(读已提交)×
repeatable read(可重复读)××
serializable(串行化)×××
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值