MySQL 常用操作

weixin_33806914發表於2018-12-05

MySQL 許可權等級 由高到底

使用者 --> 資料庫 --> 表 -->列
user --> db --> tables --> columns

使用者

  • 如同電腦的使用者,使用資料庫前需要登入使用者;
  • 不同的使用者擁有不同的許可權,許可權是可以設定的;
  • 超級管理員使用者(root),擁有全部許可權
  • 普通使用者,由root建立,普通使用者只擁有root所分配的許可權
#建立、刪除、顯示使用者
mycursor.execute("create user if not exists testuser @'localhost' identified by '12345678'")
#drop user 使用者名稱@'%';
mysql> drop user "test" @"localhost";
mysql> select user,host from mysql.user;

#登入退出
mysql -u 使用者 -p
mysql> exit;

#顯示許可權
mysql> show grants;
mysql> show grants for testuser@localhost;

#授權
#grant 許可權 on 資料庫.表 to 使用者名稱@登入主機 identified by "密碼"; 1042
grant all privileges on TESTDB.* to 'testuser' @'localhost';
grant select,update on TESTDB.* to 'testuser' @'localhost';
#*.* 所有資料庫; @"%"表示對所有非本地主機授權,不包括localhost。
grant select,delete,update,create,drop on *.* to testuser@"%" 
mysql> revoke  select on TESTDB.*  from testuser @'localhost';

#重新整理授權
flush privileges;  

資料庫

資料庫的主體,類似電腦的分割槽或資料夾

mysql> create database TESTDB;
mysql> drop database TESTDB;
mysql> show databases;

#Python建立新的資料庫
mydb.cmd_query("create database if not exists TESTDB")
mycursor.execute("create database if not exists TESTDB")

# 檢查資料庫是否存在
# mycursor.execute("SHOW DATABASES")
# for x in mycursor:
#     print(x)

mysql中把檔案稱為表,用於儲存資料

# 建立表格
mycursor.execute("create table if not exists EMPLOYEE (ID INT AUTO_INCREMENT PRIMARY KEY, FIRST_NAME varchar(255), LAST_NAME varchar(255), AGE int, SEX int, INCOME int)")

SHOW TABLES
//insert
INSERT INTO sites (name, url) VALUES ('name','url')
//select
SELECT * FROM sites
SELECT name, url FROM sites
//where
SELECT * FROM sites WHERE name ='RUNOOB'
//使用萬用字元 %:
SELECT * FROM sites WHERE url LIKE '%oo%'
//排序 預設為升序
SELECT * FROM sites ORDER BY name
//降序排序
SELECT * FROM sites ORDER BY name DESC
//Limit
SELECT * FROM sites LIMIT 3
//指定起始位置,使用的關鍵字是 OFFSET:
SELECT * FROM sites LIMIT 3 OFFSET 1
//刪除記錄
DELETE FROM sites WHERE name = 'stackoverflow'
//更新表資料
UPDATE sites SET name = 'ZH' WHERE name = 'Zhihu'
//刪除表
DROP TABLE IF EXISTS sites
# 主鍵 ADD COLUMN
mycursor.execute("ALTER TABLE sites ADD COLUMN id INT AUTO_INCREMENT PRIMARY KEY")

每一列儲存對應的資料,比如姓名列,只儲存使用者的姓名,同一使用者的資料應按照列儲存到同一行,類似表格。