MySQL 的单表 CRUD(我以前会的MySQL)

1. MySQL的前置知识

  1. MySQL 采用的是不那么高效的 select+线程池。原因是磁盘IO费时间。磁盘IO也在后续的问题中频繁出现。
  2. MySQL最早遇到性能瓶颈的是磁盘IO,所以在用数据库时尽量只让数据库做CRUD,在这之上的逻辑如“外键”交给客户端去做。
  3. 范式设计。一般而言满足到第三范式就OK了。每一列保持原子性;对于联合主键,属性完全依赖于主键;属性不依赖于其它非主属性。总结一下,和“高内聚低耦合”理念很像。
  4. 三大操作。定义(create/drop/alter);操纵(select/insert/delete/update);控制(grant/revoke)

2. 单表常用操作

2.1. 库操作

查询数据库

show databases;

创建数据库

create database ChatDB;

删除数据库

drop database ChatDB;

选择数据库

use ChatDB;

2.2. 表操作

查看表

show tables;

创建表

create table user(id int unsigned primary key not null auto_increment,
name varchar(50) not null,
age tinyint not null,
sex enum('M','W') not null)engine=INNODB default charset=utf8;

查看表结构

desc user;

查看建表sql

show create table user\G

删除表

drop table user;

3. CRUD操作

insert增加

insert into user(nickname, name, age, sex) values('fixbug', 'zhang san', 22,
'M');

insert into user(nickname, name, age, sex) values('666', 'li si', 21, 'W'),
('888', 'gao yang', 20, 'M');

下面的性能比上面的好。原因是命令行是发到的服务端,有三握四挥。(引入线程池)

update修改

update user set age=23 where name='zhang san';
update user set age=age+1 where id=3;

delete删除

delete from user where age=23;
delete from user where age between 20 and 22;
delete from user;

select查询

select * from user;
select id,nickname,name,age,sex from user;
select id,name from user;
select id,nickname,name,age,sex from user where sex='M' and age>=20 and age<=25;
select id,nickname,name,age,sex from user where sex='M' and age between 20 and
25;
select id,nickname,name,age,sex from user where sex='W' or age>=22;

id这样的写实,以后可能修改,减少代码维修成本。

去重distinct

select distinct name from user;

空值查询
is [not] null

select * from user where name is null;

union合并查询
UNION [ALL | DISTINCT] # 注意:union默认去重,不用修饰distinct,all表示显示所有重复值

SELECT country FROM Websites UNION ALL SELECT country FROM apps ORDER BY
country;

or可以被解析成union。有一种说法是or不能用索引,这种说法不严谨,两个union可以用索引。

带in子查询
[NOT] IN(元素1,元素2,...,元素3)

select * from user where id in(10, 20, 30, 40, 50)
select * from user where id not in(10, 20, 30, 40, 50)
select * from user where id in(select stu_id from grade where average>=60.0)

截止到这里就是我了解或者用过的MySQL了:joy:
还有一堆课没看。淦,加油:muscle:

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
下一篇