博客 / 詳情

返回

工作中實戰sql命令集合

查詢

SHOW DATABASES; 列出所有數據庫

select * from table_awhere tbName like 'cn%'; # 查詢名字cn開頭的表名,百分號為通配符

select * from table_awhere tbName not like 'cn%'; # 查詢名字不以cn開頭的表名,百分號為通配符

show create table table_a; # 查詢table_a的建表語句
DESC table_a; # 查看數據庫的表結構

select * from tb_datamanager_tableset; 查詢gbase表存儲時間的 gbase庫
SELECT id, name, gender, score FROM students ORDER BY score DESC, name; 按照分數倒序查詢,同分數的按照name查詢

SELECT id, name, gender, score FROM students ORDER BY score DESC LIMIT 3 OFFSET 3;按照分數查詢每頁三行數據,從第四個索引開始(索引是從0開始的)

SELECT COUNT(*) boys FROM students WHERE gender = 'M'; 查詢所有男孩數量

SELECT class_id, COUNT(*) num FROM students GROUP BY class_id; 按照班級分組,看出各個班級的學生人數

SELECT s.id, s.name, s.class_id, c.name class_name, s.gender, s.score FROM students s INNER JOIN classes c ON s.class_id = c.id; 把c表的內容根據class_id查入到s表,而且是查詢兩者都有的數據

INNER JOIN是選出兩張表都存在的記錄

LEFT OUTER JOIN是選出左表存在的記錄:

RIGHT OUTER JOIN是選出右表存在的記錄:

FULL OUTER JOIN則是選出左右表都存在的記錄:

SHOW CREATE VIEW table_a; # 查看錶視圖

查看排序
倒序
SELECT * FROM users ORDER BY created_at DESC;

正序
SELECT * FROM users ORDER BY created_at ASC;

創建

CREATE DATABASE test; # 創建一個數據庫

create table table_a like table_b; # 以table_b為模版創建一個空表table_a,字段數據格式創建語句和表table_b一致

CREATE TABLE statistics (

id BIGINT NOT NULL AUTO_INCREMENT,

class_id BIGINT NOT NULL,

average DOUBLE NOT NULL,

PRIMARY KEY (id)

); # 創建一個新表

插入

insert into table_a_bak select * from table_a; # 將一個表的數據插入另一個表,通常用於備份另一個表

INSERT INTO statistics (class_id, average) SELECT class_id, AVG(score) FROM students GROUP BY class_id; 寫入各班平均成績

INSERT INTO students (class_id, name, gender,score) VALUES (2, '小花', 'F',87),(2, '小黃', 'M',82);
INSERT IGNORE INTO students (id, class_id, name, gender, score) VALUES (1, 1, '小明', 'F', 99);
若id=1的記錄不存在,INSERT語句將插入新記錄,否則,不執行任何操作

REPLACE INTO students (id, class_id, name, gender, score) VALUES (1, 1, '小明', 'F', 99);
若id=1的記錄不存在,REPLACE語句將插入新記錄,否則,當前id=1的記錄將被刪除,然後再插入新記錄。 ID有變化

INSERT INTO students (id, class_id, name, gender, score) VALUES (1, 1, '小明', 'F', 99) ON DUPLICATE KEY UPDATE name='小明', gender='F', score=99;

若id=1的記錄不存在,INSERT語句將插入新記錄,否則,當前id=1的記錄將被更新,更新的字段由UPDATE指定。ID無變化

修改

在執行UPDATE語句時要非常小心,最好先用SELECT語句來測試WHERE條件是否篩選出了期望的記錄集,然後再用UPDATE更新
UPDATE students SET name='小牛', score=77 WHERE id>=5 AND id<=7;
UPDATE students SET score=score+10 WHERE score<80;

ALTER TABLE students ADD COLUMN birth VARCHAR(10) NOT NULL; # 給students表新增一列birth

加載

LOAD DATA INFILE 'sftp://root:root@127.0.0.1/opt/backup/20240701/test.csv.gz' INTO TABLE table_a fields terminated by ',' null_value '\N' lines terminated by '
' MAX_BAD_RECORDS 20000 timestamp format '%Y-%m-%d %H:%i:%s.%f' datetime format '%Y-%m-%d %H:%i:%s.%f' trace 1 nosplit;

刪除

DROP TABLE students; # 刪除一個表

DROP DATABASE test; # 刪除一個數據庫:
ALTER TABLE students DROP COLUMN birthday; # 要刪除列

truncate table table_a; # postgres數據庫刪除表

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.