MySQL學習筆記(1)---基礎語句

Mysql學習筆記之常用基礎語句

  1. 查看幫助:
help create;
  1. 創建、刪除、查看數據庫
create database test_data;
show databases like "test%";
drop database test_data;
  1. 連接數據庫
use test;
select databases();#查看數據庫,相當於pwd
select user();#查看當前連接數據庫的用戶,相當於whoami
  1. 創建用戶、授權、收回權限
grant all on test_gbk.* to 'testuser'@'localhost' identified by '123456';#賦予testuser所有權限,密碼
flush privileges; #刷新權限
show grants for 'testuser'@'localhost';
revoke insert,update,select,delete on test_gbk.* from 'testuser'@'localhost';#收回權限
create user test identified by 'BaC321@#';#創建用戶
update mysql.user set authentication_string=password('A1b2c3#!@') where user='test'; #修改密碼
  1. 創建、刪除表
 create table test(id int(4)not null,name char(20)not null);
 show tables;#查看錶
 desc test; #查看錶結構
drop tables test;#刪除表
show create table test1\G 
  1. 增刪改查
insert into T1 values('zhang','man');
 select * from T1 where name like '%an%';
  select count(*) as toaolcount from T1;
  alter table T1 add age int(4) not null;
  alter table T1 drop age;
  update T1 set age=25 where name='zhang';
  delete from T1 where age='22';
  alter table T1 add primary key(name);
  1. 查詢
  • 基本查詢
  • 投影查詢
  • 排序
  • 分頁
SELECT id, name, gender, score FROM students ORDER BY score DESC LIMIT 5 OFFSET 0;
  • 聚合查詢
    求總數、合計值、平均值、最大值和最小值;
  • 多表查詢
    多個表的笛卡爾積
  • 連接查詢
  1. 實用sql語句
  • 插入或替換
    插入一條已存在的數據,用replace,若id已存在,則刪除記錄,這樣就無需再查詢
REPLACE INTO students (id, class_id, name, gender, score) VALUES (1, 1, '小明', 'F', 99);
  • 插入或更新
    如果我們希望插入一條新記錄(INSERT),但如果記錄已經存在,就更新該記錄,此時,可以使用INSERT INTO ... ON DUPLICATE KEY UPDATE ...語句:
 INSERT INTO students (id, class_id, name, gender, score) VALUES (1, 1, '小明', 'F', 99) ON DUPLICATE KEY UPDATE name='小明', gender='F', score=99;
  • 插入或忽略
    如果我們希望插入一條新記錄(INSERT),但如果記錄已經存在,就啥事也不幹直接忽略,此時,可以使用INSERT IGNORE INTO ...語句:
INSERT IGNORE INTO students (id, class_id, name, gender, score) VALUES (1, 1, '小明', 'F', 99);
  • 快照
    對class_id=1的記錄進行快照,並存儲爲新表students_of_class1:
CREATE TABLE students_of_class1 SELECT * FROM students WHERE class_id=1;
  • 寫入查詢結果集
    結合INSERTSELECT
    如果查詢結果集需要寫入到表中,可以結合INSERTSELECT,將SELECT語句的結果集直接插入到指定表中。
    例如:
INSERT INTO statistics (class_id, average) SELECT class_id, AVG(score) FROM students GROUP BY class_id;
  • 強制使用指定索引
    查詢時數據庫會分析查詢語句,選擇一個合適的索引,但有時數據庫的查詢優化器不一定能使用最優索引。如果我們知道如何選擇索引,可以使用FORCE INDEX強制查詢使用指定的索引。例如:
SELECT * FROM students FORCE INDEX (idx_class_id) WHERE class_id = 1 ORDER BY id DESC;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章