作者:nirmalya mondal
介紹
mysql 是用于 web 應(yīng)用程序和其他數(shù)據(jù)驅(qū)動(dòng)應(yīng)用程序的最流行的關(guān)系數(shù)據(jù)庫管理系統(tǒng) (rdbms) 之一。無論您是初學(xué)者還是想要提高 mysql 技能的人,了解基本查詢都是至關(guān)重要的。本博客將引導(dǎo)您完成一些基本的 mysql 查詢,可用于數(shù)據(jù)庫操作、表操作和數(shù)據(jù)管理。
1. 數(shù)據(jù)庫操作
創(chuàng)建數(shù)據(jù)庫
首先,您需要一個(gè)數(shù)據(jù)庫來存儲(chǔ)表和數(shù)據(jù)。創(chuàng)建數(shù)據(jù)庫很簡單:
create database my_database;
登錄后復(fù)制
選擇數(shù)據(jù)庫
創(chuàng)建數(shù)據(jù)庫后,使用以下查詢來選擇它:
use my_database;
登錄后復(fù)制
刪除數(shù)據(jù)庫
如果需要?jiǎng)h除數(shù)據(jù)庫,請(qǐng)使用以下命令:
drop database my_database;
登錄后復(fù)制
2. 表操作
創(chuàng)建表
表是存儲(chǔ)數(shù)據(jù)的地方。您可以創(chuàng)建包含特定列的表,如下所示:
create table users ( id int auto_increment primary key, name varchar(100), email varchar(100), age int );
登錄后復(fù)制
顯示表格
要查看所選數(shù)據(jù)庫中的所有表:
show tables;
登錄后復(fù)制
描述表結(jié)構(gòu)
如果你想了解表的結(jié)構(gòu),可以描述一下:
describe users;
登錄后復(fù)制
更改表
如果您需要通過添加或更改列來修改表格:
添加專欄
alter table users add phone varchar(15);
登錄后復(fù)制
修改列
alter table users modify age tinyint;
登錄后復(fù)制
掉落桌子
刪除表:
drop table users;
登錄后復(fù)制
3. 數(shù)據(jù)操作
插入數(shù)據(jù)
將數(shù)據(jù)添加到表中:
insert into users (name, email, age) values ('john doe', 'john@example.com', 25);
登錄后復(fù)制
選擇數(shù)據(jù)
從表中檢索數(shù)據(jù):
select name, email from users where age > 20;
登錄后復(fù)制
選擇所有數(shù)據(jù)
要檢索表中的所有數(shù)據(jù):
select * from users;
登錄后復(fù)制
更新數(shù)據(jù)
更新表中的數(shù)據(jù):
update users set age = 26 where name = 'john doe';
登錄后復(fù)制
刪除數(shù)據(jù)
要從表中刪除數(shù)據(jù):
delete from users where name = 'john doe';
登錄后復(fù)制
4. 條件查詢
where 子句
使用where子句根據(jù)特定條件過濾記錄:
select * from users where age > 20;
登錄后復(fù)制
和/或條件
使用 and 或 or 組合多個(gè)條件:
select * from users where age > 20 and name = 'john doe';
登錄后復(fù)制
in 子句
根據(jù)值列表選擇數(shù)據(jù):
select * from users where age in (20, 25, 30);
登錄后復(fù)制
between 子句
過濾一定范圍內(nèi)的數(shù)據(jù):
select * from users where age between 20 and 30;
登錄后復(fù)制
like條款
使用 like 子句搜索模式:
select * from users where name like 'j%';
登錄后復(fù)制
is null / is not null
過濾具有 null 或 not null 值的記錄:
select * from users where email is null;
登錄后復(fù)制
5.聚合函數(shù)
count
計(jì)算行數(shù):
select count(*) from users;
登錄后復(fù)制
總和
計(jì)算列的總和:
select sum(age) from users;
登錄后復(fù)制
avg
求一列的平均值:
select avg(age) from users;
登錄后復(fù)制
最大和最小
查找一列的最大值或最小值:
select max(age) from users;
登錄后復(fù)制
select min(age) from users;
登錄后復(fù)制
6. 分組和排序
分組依據(jù)
根據(jù)一列或多列對(duì)數(shù)據(jù)進(jìn)行分組:
select age, count(*) from users group by age;
登錄后復(fù)制
擁有
過濾分組數(shù)據(jù):
select age, count(*) from users group by age having count(*) > 1;
登錄后復(fù)制
訂購依據(jù)
按升序或降序?qū)?shù)據(jù)進(jìn)行排序:
select * from users order by age desc;
登錄后復(fù)制
7. 加入操作
內(nèi)連接
從多個(gè)表中獲取同時(shí)滿足條件的數(shù)據(jù):
select users.name, orders.order_date from users inner join orders on users.id = orders.user_id;
登錄后復(fù)制
左加入
從左表中獲取數(shù)據(jù)并從右表中獲取匹配的行:
select users.name, orders.order_date from users left join orders on users.id = orders.user_id;
登錄后復(fù)制
右加入
從右表中獲取數(shù)據(jù)并從左表中獲取匹配的行:
select users.name, orders.order_date from users right join orders on users.id = orders.user_id;
登錄后復(fù)制
8. 子查詢
where 中的子查詢
使用子查詢來過濾結(jié)果:
select name from users where id = (select user_id from orders where order_id = 1);
登錄后復(fù)制
select 中的子查詢
使用子查詢來計(jì)算值:
select name, (select count(*) from orders where users.id = orders.user_id) as order_count from users;
登錄后復(fù)制
9. 意見
創(chuàng)建視圖
根據(jù)查詢創(chuàng)建虛擬表:
create view user_orders as select users.name, orders.order_date from users inner join orders on users.id = orders.user_id;
登錄后復(fù)制
下拉視圖
刪除視圖:
drop view user_orders;
登錄后復(fù)制
10. 索引
創(chuàng)建索引
通過創(chuàng)建索引提高查詢性能:
create index idx_name on users (name);
登錄后復(fù)制
掉落指數(shù)
刪除索引:
DROP INDEX idx_name ON users;
登錄后復(fù)制
結(jié)論
理解這些基本的 mysql 查詢對(duì)于任何使用關(guān)系數(shù)據(jù)庫的人來說都是至關(guān)重要的。無論您是管理數(shù)據(jù)、優(yōu)化查詢還是確保數(shù)據(jù)完整性,這些命令都構(gòu)成了您的 mysql 技能的基礎(chǔ)。通過掌握它們,您將能夠輕松處理大多數(shù)與數(shù)據(jù)庫相關(guān)的任務(wù)。