資料庫之mysql

来源:https://www.cnblogs.com/cz-basic/archive/2018/05/17/9052134.html
-Advertisement-
Play Games

1、安裝mysql-server的命令:sudo apt-get install mysql-server 安裝mysql-client客戶端:sudo apt-get install mysql-client 查是否安裝成功並且啟用:sudo netstat -tap | grep mysql 關 ...


1、安裝mysql-server的命令:sudo apt-get install mysql-server

   安裝mysql-client客戶端:sudo apt-get install mysql-client

   查是否安裝成功並且啟用:sudo netstat -tap | grep mysql

   關閉mysql伺服器命令:service mysql stop

  開頭mysql伺服器命令:service mysql start

  重啟mysql伺服器命令:service mysql restart

2、創建一個用戶並且授權:grant all privileges on *.* to test@"%" identified by "123456" with grant option;

  登錄資料庫:mysql -utest -p123456

  顯示所有資料庫:show databases;

  選擇某一個資料庫:use students:

  查看當前資料庫的所有表單:show tables;

  查看某個表的結構:desc students;

  查看當前表(user)的所有數據:select * from user;

  查看當前表(user)的user,host兩列的數據:select user,host from user;

  刪除表中某個id=1的數據:delete from students where id=1;

  查看當前使用的資料庫:select database();

  創建資料庫:create database test charset=utf8;

  刪除資料庫:drop database test;

  修改用戶密碼:mysqladmin -test -p123456 password 110110

3、E-R模型:E-R模型是當前物理的資料庫都是按照E-R模型進行設計的,其中

       E表示entity,實體;相當於python中的對象包含的信息。

      R表示relationship,關係;如當百度王寶強時會有馬蓉的相關消息。它是一個實體轉換為資料庫的一個表。

      對欄位約束方式:

        主鍵primary key;不能重覆,唯一標識,物理存儲方式,速度快

        非空not null;當保存為null時就會報錯;

        唯一unique;這個值是唯一的,有重覆就會報錯。

        預設default ;如果不寫就會有個預設值,這種叫預設,只有類型。

        外鍵 foreign key

4、用sql語句創建表:  auto_increment 表示自增長;   primary key:主鍵    not null:不能為空

  create table students(

          id int(10)auto_increment primary key  not null,          

          name varchar(40),

          gender bite(1)  default 0

                                   )charset=utf8;

5、刪除表單:drop table 表單名;

6、查看表單中的所有數據:select * from students;

     取別名:select name as 姓名,gender as 性別 fromstudents

7、查找表中id為1的所有欄位:select * from students where id=1;

8、查找表中id為1的id和name:select id,name from students where id=1;

9、從表中查找所有數據中的id和name的欄位數據: select id,name from students

10、insert into students(id,name,gender) values(3,'zhangsan','男'),(4,'lishi','男');

11、刪除表單中id為1的或者name為mysql的數據:delete from students where id=1 or name=mysql;

12、修改表單中id為2的,把name改為mysql的數據:update students set name='mysql' where id=2;

13、將表單中的記錄清空:delete from students;

14、備份:mysqldump -uroot -p test2 > ~/0000mysql.sql

         還原:mysql -uroot -p test1 < 0000mysql.sql

15、消除重覆行,如查詢性別:  select distinct gender from students;

16、查詢id大於3的女同學:select id,name from students where id>3 and gender =0;

17、查詢姓郭的學生:select * from students where name like '郭%';   %表示一個或者多個

18、查詢姓黃並且名字是一個字的學生:selcet * from students where name like '黃_';   _表示一個

19、查詢姓黃或者叫靖的學生:select name from students where name like '黃%' or name like '%靖%';

20、查詢id是1或3或8的學生:select * from students where id in(1,3,8);

21、查詢學生id是3至8的學生:select * from students where id between 3 and 8;

22、查詢沒有寫性別的學生:select * from students where gender is null;

23、查詢寫了性別的學生:select * from students where gender is  not null;

24、查詢女生id的最大值:select max(id) from students where gender=0;  最小值用min ,和用sum,平均值用avg ,總個數用count

25、一個語句統計男生和女生總人數:select gender,count(id) from students group by gender;

26、查詢男生總人數:

  使用where語句 :select gender,count(id) from students where gender=1;

  使用分組後篩選:select gender,count(id) from students group by gender having gender =1;

27、查詢未刪除男生學生信息,按id降序:select id,name from students where gender=1 order by desc;    (order by asc 升序)

28、分面查找:(n-1)*m   從第一頁開始查找    n表示頁數,m表示每頁顯示數據的條數

  查詢學生表,每頁5條數據,頁數從1開始 :

  第一頁:select * from students limit 0,5;

       第二頁:select * from students limit 5,5;  ......

29、創建分數表(scores)直接創建約束: foreign key(stuid) 表示外鍵    references表示與...相連

    

        create table scores(

 

             id int primary key auto_increment ,

 

             score decimal(4,1),

 

             stuid int,

 

             subid int,

 

             foreign key(stuid) references students(id),

 

             foreign key(subid) references students(id)

 

         )charset=utf8;

30、插入數據:insert into scores values(1,92,3,3),當插入外鍵在主表單中不存在時,會報錯,這就是不合法數據.

31、查詢每個學生的每個科目的分數:

  第一種寫法:

            select students.name,subjects.title,scores.score from scores

    inner join students on scores.stuid=students.id

    inner join subjects on scores.subid=subjects.id;

  第二種寫法:

    select students.name,subjects.title,scores.score from students

    inner join scores on scores.stuid=students.id

    inner join subjects on scores.subid=subjects.id;

  第三種寫法:

    select students.name,subjects.title,scores.score from subjects

    inner join scores on scores.stuid=subjects.id

    inner join students on scores.stuid=students.id;

32、左連接(left join):表示表A和表B進行匹配,會完整顯示出表A的數據,表B只顯示與表A對應的數據

       右連接(right join )與此相反

    select students.name,subjects.title,scores.score from subjects

    left join scores on scores.stuid=subjects.id

    left join students on scores.stuid=students.id;

33、查詢男生的姓名、總分:

  select students.name ,sum(scores.score)from scores

  inner join students on scores.stuid=students.id where gender=1 group by students.name;

34、查詢未刪除科目的名稱、平均分:

  select subjects.title,avg(scores.score)from scores

  inner join subjects on scores.subid=subjects.id where isdelete=0 group by subjects.title;

35、使用python代碼實現把mysql資料庫封裝成MysqlTool模塊,該模塊中MySqlHelper類:

import pymysql

# 創建MysqlHelper類
class MysqlHelper(object):
    # 創建初始化參數
    def __init__(self,host,user,password,db):
        self.host=host
        self.prot=3306
        self.user=user
        self.password=password
        self.db=db
        self.charset='utf8'

    # 打開資料庫鏈接返回connect對象-conn
    def open(self):
        self.conn=pymysql.connect(
            host=self.host,
            port=self.prot,
            user=self.user,
            password='1122',
            db='python2',
            charset='utf8'
        )
        # 得到cursor對象
        self.cursor=self.conn.cursor()

    # 關閉鏈接
    def close(self):
        self.cursor.close()
        self.conn.close()

    # 修改提交數據
    def change(self, sql, parms=[]):
        try:
            self.open()
            self.cursor.execute(sql,parms)
            self.conn.commit()
            self.close()
        except Exception as result:
            print(result)
    def get_all(self,sql,prams=[]):
        try:
            self.open()
            self.cursor.execute(sql, prams)
            result = self.cursor.fetchall()
            self.close()
            for i in result:
                print(i)
        except Exception as result:
            print(result)

 

 

 

 

查詢未刪除科目的名稱、平均分、最高分:


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • "Linux內核同步機制之completion" 內核編程中常見的一種模式是,在當前線程之外初始化某個活動,然後等待該活動的結束。這個活動可能是,創建一個新的內核線程或者新的用戶空間進程、對一個已有進程的某個請求,或者某種類型的硬體動作,等等。在這種情況下,我們可以使用信號量來同步這兩個任務。然而, ...
  • 1 * 2 BEEPER1.C -- Timer Demo Program No.1 3 (c) Charles Petzold, 1998 4 */ 5 6 #include <Windows.h> 7 8 #define ID_TIMER 1 9 10 LRESULT CALLBACK WndP ...
  • 開始不設置主鍵 表的設計如下: 如果id的位置有好幾個0的話:設置主鍵並且自動排序時,0會從1開始遞增; Insert 進去 id = 0的數據,數據會從實際的行數開始增加,和從0變化不一樣; 現在主鍵是沒有0的,如果把某個id改成0的話,0不會變!直接會進行排序; 再insert一個id=0的看看 ...
  • 最近線上系統突然出現匯出資料超過 10 筆時,查詢逾時的狀況,在仔細查找之後。 發現了問題原因,透過應用端與數據端兩邊同時調整,將查詢的效率提昇了約數百倍以上 首先,原本應用端的商務邏輯為每一分頁筆數固定為10筆,所以使用者最多可以匯出 10 筆資料 而且原本的商務邏輯是寫成這樣的 這段語法在 SQ ...
  • 使用AWS DMS(Database Migration Service)將SQL Server資料庫同步到AWS的Data Lake上,需要在本地源資料庫上配置複製,在配置分發嚮導最後一步時,遇到下麵錯誤: TITLE: Microsoft.SqlServer.ConnectionInfo----... ...
  • 作者: "zyl910" 一、緣由 BLOB是指二進位大對象,也就是英文Binary Large Object的縮寫。 在很多時候,我們是通過其他編程語言(如Java)訪問BLOB的位元組數據,進行位元組級的操作的。 但是有些時候工作量很小,感覺專門為BLOB位元組級操作而專門開發個程式,是比較麻煩的。於 ...
  • 參考文檔:MongoDB官方文檔 版本:3.6.4 從版本3.6開始,MongoDB需要Windows Server 2008 R2,Windows 7或更高版本。 第一步,在下載中心下載最新版本的MongoDB的.msi安裝文件並安裝 下載中心:https://www.mongodb.com/do ...
  • 一、瞭解SQL 資料庫的應用場景 sql 簡介 二、 檢索數據 SELECT語句 檢索單個、多及所有列的方法分享 檢索不同的值 限制結果 sqlserver註釋編寫方法 三、排序檢索數據 排序數據 按多個列排序 按列位置排序 指定排序方向 四、過濾數據 使用WHERE子句 WHERE子句操作符 五、 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...