mysql的入門使用:
mysql筆記, 記錄一些常用的東西, 學習ing
基本使用:
-
開啓mysql服務 net start mysql
-
關閉mysql服務 net stop mysql
-
進入mysql服務 mysql -u root -p root是用戶名稱 這個時候輸入數據庫密碼:
然後進入mysq workbeach 中 進行操作 ,或者使用命令行實現,這裏使用第三方庫,pymysql。
重要的SQL命令語法
SQL命令 | 描述 |
---|---|
select | 從數據庫中提取數據 |
updata | 更新數據庫中的數據 |
delect | 從數據庫中刪除數據 |
insert into | 從數據庫中插入新數據 |
create database | 創建新數據庫 |
alter database | 修改數據庫 |
create table | 創建新表 |
alter table | 修改數據庫表 |
drop table | 刪除表 |
create index | 創建索引, (搜索鍵) |
drop index | 刪除索引 |
基礎函數作用:
# 創建數據庫連接
self.db = pymysql.connect(host=self.host, user=self.user,
password=self.password, database=self.databases, cursorclass=self.cursorclass)
# 創建遊標 便於執行sql語氣
self.cursor = self.db.cursor()
# 使用遊標來執行sql語氣
sql ='select * from students'
self.cursor.execute(sql)
# 得到數據表的行數
self.cursor.rowcount()
# 得到所有條數據,也就得到了版本號
self.cursor.fetchall()
# 得到第一條數據,也就得到了版本號
self.cursor.fetchone()
# 注意的是,如果是對數據庫做了修改、刪除、增加的操作,那麼一定要commit提交,查詢和創建表不需要提交
self.db.commit()
# 回滾數據
self.db.rollback()
# 關閉遊標
self.cursor.close()
# 關閉數據庫
self.db.close()
SQL基礎創建函數:
創建數據庫:
# 創建數據庫
sql = 'create database [數據庫名稱] default character set utf8'
cursor.execute(sql)
# 獲得當前mysql版本
sql = 'select version()'
cursor.execute(sql)
創建表:
# 創建表
sql = 'create tabel if not exists [表名稱][students] (
id varchar(255) not NUll, name varchar(255) not NUll
age INT not Null, primary key(id)) '
cursor.execute(sql)
# 展示表
sql = 'show tables'
cursor.execute(sql)
插入數據:
# 插入數據
name = '白嘉誠'
sql = f'insert into student_score(name, gender) values("{name}","男")' # 使用引號括起來
try:
cursor.execute(sql) # 執行語氣
db.commit() # 如果修改了就要提交一次表單
except:
db.rollback() # 如果發生異常 執行數據回滾,重新再來
# 動態插入數據 使用字典
data = {
'id': 1,
'name': '張三炮',
'gender': '男',
'age': 12,
'score': 99
}
def fun():
data_len = "'%s', " * len(data)
data_len = data_len[:-2] # 去引號
data_len = data_len % tuple(data.values()) # 格式化
return data_len
fun()
table = 'student_score'
keys = ', '.join(data.keys())
sql = f"insert into {table}({keys}) values( {fun()})"
更新數據:
# 更新數據
sql = "update students set age = '[new]' where name = '[old]'"
try:
cursor.execute(sql) # 執行
db.commit() # 提交表單
except:
db.rollback() # 回滾數據
db,close()
刪除數據:
# 刪除數據
table = 'student'
condition = 'name ="張二炮"'
sql = f'delete from {table} where {condition}'
try:
cursor.excute(sql) # 執行
db.commit() # 提交表單
except:
db,rollback()
db.close()
優質查詢數據:
# 查詢數據
# 優質單個數據查詢 佔用資源少 逐行取數據, 每循環一次, 遊標就會偏移一次
table = 'students'
condition = 'age >= 20'
sql = f"select * from {table} where {condition}"
try:
cursor.execute(sql) # 執行語氣
print('Count:', cursor.rowcount)
row = cursor.fetchone()
while row:
print('row', row)
row = cursor.fetchone()
except:
print('ERROR')
功能簡單封裝:
這個是借鑑了其他博客:當時沒記住作者博客ID ,搞得忘記了,知道的可以聯繫我, 我後續加上去
# -*- coding : utf-8 -*-
# @Time : 2020/6/8 22:09
# @author : 沙漏在下雨
# @Software : PyCharm
# @CSDN : https://me.csdn.net/qq_45906219
class MYSQL():
def __init__(self, host, user, password, database, cursorclass=None): # cursorclass將返回結果呈字典顯示 ,如果傳了就應用,不傳就爲None
self.host = host # ip地址,本機就傳localhost就可以
self.user = user # 賬戶名,如果你沒有更改過,那就是root
self.password = password # 數據庫密碼
self.databases = database # 你具體要連接的哪一個數據庫
self.cursorclass = cursorclass # 返回結果呈字典形式 {}
def connect(self): # 創建連接數據庫方法
import pymysql
# 創建數據庫連接
self.db = pymysql.connect(host=self.host, user=self.user,
password=self.password, database=self.databases, cursorclass=self.cursorclass)
# 創建遊標 便於執行sql語氣
self.cursor = self.db.cursor()
def get_one(self, sql): # 返回一條符合條件的查詢結果
result = 0
try:
self.connect()
self.cursor.execute(sql)
result = self.cursor.fetchone() # 得到第一條數據
self.close()
except Exception as e:
print('select error', e)
return result
def get_all(self, sql): # 返回全部符合條件的查詢結果
result = 0
try:
self.connect() # 聲明連接對象, 連接數據庫
self.cursor.execute(sql) # 使用遊標來執行sql語氣
result = self.cursor.fetchall() # 得到所有條數據,也就得到了版本號
self.close()
except Exception as e:
print("select error", e)
return result
def __edit(self, sql): # 創建主函數
result = 1 # 設置結果集,用於調用的時候做判斷
try: # 這裏是使用的try語句來嘗試進行操作
self.connect()
self.cursor.execute(sql)
self.db.commit() # 注意的是,如果是對數據庫做了修改、刪除、增加的操作,那麼一定要commit提交,查詢和創建表不需要提交
self.close()
except Exception as e: # 如果操作失敗,報出操作異常,且遊標進行回滾
print('error :', e)
result = 0
self.db.rollback()
return result
def insert(self, sql):
# 插入語句 ,以下三個都是一樣的,只是調用的時候,我們看起來更加清晰而已
return self.__edit(sql) # 通過主函數的處理,來去執行sql語句
def delete(self, sql): # 刪除語句
return self.__edit(sql)
def update(self, sql): # 修改語句
return self.__edit(sql)
def close(self): # 關閉方法
self.cursor.close() # 關閉遊標
self.db.close() # 關閉數據庫