查詢
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數據庫刪除表