RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Python-mysql數(shù)據(jù)庫基礎(chǔ)

汽車電子技術(shù) ? 來源:程序猿知秋 ? 作者:程序猿知秋 ? 2023-02-16 15:51 ? 次閱讀

數(shù)據(jù)庫基本介紹

RDBMS(Relational Database Managerment System) :關(guān)系型數(shù)據(jù)庫管理系統(tǒng)

**關(guān)系型數(shù)據(jù)庫的主要產(chǎn)品如下

**

  • mysql:web時代使用最廣泛的關(guān)系型數(shù)據(jù)庫
  • oracel:大型項目使用較多,如銀行、電信等
  • ms sql server:普遍用于微軟的項目
  • db2:IBM 的產(chǎn)品,主要用于大型項目
  • sqlite:輕量級數(shù)據(jù)庫,主要應(yīng)用于移動平臺

SQL(Structured Query Language)

SQL是結(jié)構(gòu)化查詢語言,是一種用來操作 RDBMS的數(shù)據(jù)庫語言,當前的關(guān)系型數(shù)據(jù)庫都支持使用SQL語言進行操作

  • SQL語句主要分為
    • DQL:數(shù)據(jù)庫查詢語言,用于對數(shù)據(jù)進行查詢

    • DML:數(shù)據(jù)庫操作語言,用于對數(shù)據(jù)進行增加、修改、刪除等操作

    • TPL:事務(wù)處理語言,對事務(wù)進行處理

    • DCL:數(shù)據(jù)庫控制語言,進行授權(quán)與權(quán)限回收

    • DDL:數(shù)據(jù)庫定義語言,進行數(shù)據(jù)庫、表的管理

    • CCL:指針控制語言,通過控制指針完成對表的操作

      注:對于程序員來講,最重要的就是對數(shù)據(jù)的curd(增、刪、改、查),即DQL和DML

**MySQL 簡介

**

  • 直接查看MySQL官方網(wǎng)站(https://www.mysql.com/)
  • MySQL是一個關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由瑞典MySQL AB公司開發(fā),后來被Sun公司收購,之后又被Oracle收購,目前 屬于Oracle旗下產(chǎn)品

MySQL的特點

  • 使用c和c++編寫,并使用了多種編譯器進行測試,保證源代碼的可移植性
  • 支持多種操作系統(tǒng),如Linux、Windows、MacOS... 等
  • 為多種編程語言提供了API,如C、C++、JAVA、Python ... 等
  • 支持多線程,充分利用 CPU資源
  • 多編碼支持 GB2312、UTF-8 等
  • 支持多種存儲引擎
  • MySQL 采用雙授權(quán)政策,分為社區(qū)版和商業(yè)版,并且源碼開源
  • 復制全局事務(wù)標識
  • 復制無崩潰從機
  • 復制多線程從機
  • ...

最主要的是 ** 開源,免費、不要錢,并且使用范圍廣,跨平臺支持性好,是學習數(shù)據(jù)庫開發(fā)的首選**

MySQL服務(wù)器與客戶端的安裝步驟較多,請自行百度(注,不同的操作系統(tǒng),對應(yīng)的mysql版本不一樣)

Navicat

  • Navicat 是數(shù)據(jù)庫管理工具 ,專為簡化數(shù)據(jù)庫的管理及降低系統(tǒng)管理成本而設(shè)。Navicat 是以直覺化的圖形用戶界面而建的,讓你可以以安全并且簡單的方式創(chuàng)建、組織、訪問并共用信息
  • Navicat提供多達 7 種語言供客戶選擇,被公認為全球最受歡迎的數(shù)據(jù)庫前端用戶界面工具。
  • 它可以用來對本機或遠程的 MySQL、SQL Server、SQLite、Oracle 及 PostgreSQL 數(shù)據(jù)庫進行管理及開發(fā)

**Navicat 的安裝及基本使用,請自行百度

**

**安裝完成之后,可以自己創(chuàng)建數(shù)據(jù)庫

**

圖片

數(shù)據(jù)庫中表的數(shù)據(jù)類型與約束

  • 常用的數(shù)據(jù)類型
    • 整數(shù):tinyint、int、bigint
    • 小數(shù):decimal
    • 字符串:varchar、char
    • 日期時間:date、time、datetime
    • 枚舉類型:enum
    • 類型說明
      • decimal表示浮點數(shù),如decimal(5,2)表示共存5位數(shù),小數(shù)占2位
      • char表示固定長度的字符串,如char(3),如果填充 'ab' 時會補一個空格為 'ab '
      • varchar表示可變長度的字符串,如varchar(3),填充'ab'時,就只會存儲'ab'
      • 字符串text表示存儲大文本,當字符串大于4000時推薦使用
  • 約束
    • 主鍵索引primary key:物理上存儲的順序(默認是唯一索引)
    • 非空not null:此字段不允許填寫空值
    • 唯一索引 unique:此字段的值不允許重復
    • 默認default:當不填寫此值時會使用默認值,如果填寫,則以填寫為準
    • 外鍵foreign key:對關(guān)系字段進行約束,當為關(guān)系字符填寫值時,會到關(guān)聯(lián)的表中查詢此值是否存在
    • 說明:雖然外鍵約束可以保證數(shù)據(jù)的有效性,但是在進行數(shù)據(jù)的crud時(增、刪、改、查)時,都會降低數(shù)據(jù)庫的性能,所以一般不推薦使用。在實際開發(fā)中,一般是通過業(yè)務(wù)邏輯控制數(shù)據(jù)的有效性

常用數(shù)據(jù)類型

類型 字節(jié)大小 有符號范圍 無符號范圍
TINYINT 1 -128~127 0~255
SMALLINT 2 -32768~32767 0~65535
MEDIUMINT 3 -8388608~8388607 0~16777215
INT/INTEGER 4 -2147483648~2147483647 0~4294967295
BIGINT 8 -9223372036854775808~9223372036854775807 0~18446744073709551615

字符串

類型 字節(jié)大小 示例
CHAR 0~255 char(3) ,輸入'ab',存儲為'ab',輸入'abcd',存儲為'abc'
VARCHAR 0~255 varchar(3),輸'ab',存儲為'ab',輸入'abcd',存儲為'abc
TEXT 0~65535 大文本

日期

類型 字節(jié)大小 示例
DATE 4 ’2021-01-01‘
TIME 3 '23:59:59'
DATETIME 8 '2021-01-0123:59:59'
YEAR 1 '2021'
TIMESTAMP 4 '1991-01-01 00:00:59' UTC - '2033-01-0100:00:59' UTC

數(shù)據(jù)庫操作

通過命令行操作數(shù)據(jù)庫

連接數(shù)據(jù)庫

  • mysql -u用戶名 -p密碼

圖片

退出數(shù)據(jù)庫連接

  • exit/quit/ctrl+c

查看所有數(shù)據(jù)庫

  • show databases;

圖片

顯示時間

  • select now();

查看數(shù)據(jù)庫版本

  • select version();

創(chuàng)建數(shù)據(jù)庫并指定編碼為utf8

  • create database python01 charset=utf8;

圖片

刪除數(shù)據(jù)庫

  • drop database python01;

使用數(shù)據(jù)庫

  • use python01;

查看當前使用的數(shù)據(jù)庫

  • select database();

圖片

數(shù)據(jù)表的操作

創(chuàng)建表

  • create table 表名字(字段 類型 約束)
  • 例:create table person(id int,name varchar(50));

圖片

查看所有的表

  • show tables;

查看表結(jié)構(gòu)

  • desc person;

圖片

修改表-添加字段

  • alter table 表名 add 列名 類型;
  • 例:alter table person add age int;

修改表-修改字段

  • alter table 表名 change 原名 新名 類型及約束;
  • 例:alter table person change age sex int not null;

修改表-刪除字段

  • alter table 表名 drop 列名;
  • 例:alter table person drop sex;

刪除表

  • drop table 表名;
  • 例:drop table person;

數(shù)據(jù)********表的基本增刪改查(curd)

  • 添加數(shù)據(jù)兩種方式
    • 方式一:insert into person(id,name) values(1,'zs');
    • 方式二:insert into person values(2,'ls');
  • 查詢?nèi)勘頂?shù)據(jù)
    • select * from person;

圖片

  • 修改表數(shù)據(jù)
    • update person set name='ww' where id=2;

圖片

  • 刪除表數(shù)據(jù)
    • delete from person where id=2;

圖片

數(shù)據(jù)表的查詢

  • ****使用********as ****給字段起別名
    • select name as 姓名,age from person;

圖片

圖片

  • ****使用********as ********給表起別名 ****
    • select p.name ,p.age from person as p;

圖片

圖片

  • ****去除重復的年齡 ****(DISTINCT )
    • SELECT DISTINCT age from person;

圖片

圖片

  • **查詢大于30歲的人; 小于30歲的人; 不等于32歲的人; ** (>,<,<>)
    • SELECT * from person where age > 30;
    • SELECT * from person where age<30;
    • SELECT * from person where age<>32;

圖片

圖片

圖片

圖片

  • 查詢年齡在 24到40之間的人 ** (> ,<)**
    • SELECT * from person where age > 24 and age < 40;

圖片

圖片

  • 查詢年齡是22或43的人 ** (or 或 in)**
    • 方式一: SELECT * from person where age=22** or** age=43**;**
    • 方式二: SELECT * from person where age** in** (22,43);

圖片

圖片

  • 查詢名字前面是李 開頭的 ** ( like 'xxx%' ) ;查詢后面是八 結(jié)尾的 ( like '% xxx ' ) ;查詢名字中間有八的**** ( like '%xxx%' ) **
    • select *from person where name like '李%';
    • select *from person where name like '%八';
    • select from person where name * like '%八%';**

圖片

圖片

圖片

圖片

  • **查詢年齡為null的人 ** (is null)
    • select *from person where age is null;

圖片

圖片

  • 詢年齡不為null的人 ( is not null )
    • select *from person where age is not null;

圖片

圖片

  • 按年齡從大到小排序 (order by xxx desc) **;按年齡從小到大排序 ** (order by xxx asc)
    • select from person where age is not null order by age * desc;**
    • select *from person where age is not null **order by age **asc;

圖片

圖片

圖片

  • **查詢所有人年齡的總和 ** ( sum )
    • select **sum(age) **as 年齡總和 from person;

圖片

圖片

  • **查詢總共有多少人 ** (count)
    • select count(*) as 總?cè)藬?shù) from person;
  • **查詢最大的年齡 ** ( max ) **;查詢最小的年齡 ** ( min )
    • select max(age) as 最大年齡 from person;
    • select** min(age) **as 最小年齡 from person;
  • **按年齡分組統(tǒng)計人數(shù) ** (group by)
    • select age,count(*) from person GROUP BY age;

圖片

圖片

  • 按年齡分組統(tǒng)計人數(shù) ,**并統(tǒng)計相同年齡人數(shù)有2個的 ( HAVING ** )
    • select age,count(*)total from person GROUP BY age **HAVING **total=2;

圖片

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • SQL
    SQL
    +關(guān)注

    關(guān)注

    1

    文章

    762

    瀏覽量

    44117
  • 結(jié)構(gòu)化
    +關(guān)注

    關(guān)注

    0

    文章

    27

    瀏覽量

    10308
  • RDBMS
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    5843
收藏 人收藏

    評論

    相關(guān)推薦

    python實戰(zhàn)數(shù)據(jù)庫MySQL---4操作MySQL

    變量沒有默認值,所以,每個空都要填寫。實現(xiàn)數(shù)據(jù)庫之前,需要實現(xiàn)數(shù)據(jù)MySQL的安裝配置,這些網(wǎng)上到處是例程,大家自行參考。還有要先創(chuàng)建數(shù)據(jù)庫“test”,可以用
    發(fā)表于 01-09 21:21

    MySQL數(shù)據(jù)庫python模塊安裝

    ORM:orm(Object Relation Mapping 對象關(guān)系映射) 定義:把對象模型映射到MySQL數(shù)據(jù)庫
    發(fā)表于 08-05 08:41

    Python操作Mysql實現(xiàn)數(shù)據(jù)庫腳本的方法概述

    Python操作Mysql數(shù)據(jù)庫腳本(cmd)
    發(fā)表于 10-08 10:44

    Python連接MySQL數(shù)據(jù)庫及模塊封裝

    python連接mysql與sql server數(shù)據(jù)庫及相應(yīng)的模塊封裝
    發(fā)表于 05-01 16:06

    python如何連接MySql數(shù)據(jù)庫

    Python入門(python連接MySql數(shù)據(jù)庫)還能怎么記,大開眼界!
    發(fā)表于 06-14 07:48

    如何使用Python操作MySQL數(shù)據(jù)庫

    使用Python進行MySQL主要有三個,Python-MySQL(更熟悉的名字可能是MySQLdb),PyMySQL和SQLAlchemy。
    的頭像 發(fā)表于 12-15 09:51 ?3784次閱讀

    MySQL數(shù)據(jù)庫如何安裝和使用說明

    MySQL數(shù)據(jù)庫開發(fā) 基礎(chǔ)概念 1.數(shù)據(jù):描述事物特征的符號,屬性 2.數(shù)據(jù)庫的概念:管理計算機中的數(shù)據(jù)的倉庫 2.
    的頭像 發(fā)表于 02-13 16:13 ?2792次閱讀

    python程序里如何鏈接MySQL數(shù)據(jù)庫

    python程序里,如何鏈接MySQL數(shù)據(jù)庫? 連接MYSQL需要3步 1、安裝 必須先安裝MySQL驅(qū)動。和PHP不一樣,
    的頭像 發(fā)表于 08-23 14:56 ?3703次閱讀

    華為云數(shù)據(jù)庫-RDS for MySQL數(shù)據(jù)庫

    華為云數(shù)據(jù)庫-RDS for MySQL數(shù)據(jù)庫 華為云數(shù)據(jù)庫作為華為云的一款數(shù)據(jù)庫產(chǎn)品,它主要是以MyS
    的頭像 發(fā)表于 10-27 11:06 ?1515次閱讀

    python讀取數(shù)據(jù)庫數(shù)據(jù) python查詢數(shù)據(jù)庫 python數(shù)據(jù)庫連接

    使用第三方,包括MySQLDB、sqlite3、psycopg2等。其中MySQLDB是Python連接MySQL數(shù)據(jù)庫的一個重要
    的頭像 發(fā)表于 08-28 17:09 ?1813次閱讀

    MySQL數(shù)據(jù)庫管理與應(yīng)用

    MySQL數(shù)據(jù)庫管理與應(yīng)用 MySQL是一種廣泛使用的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),被認為是最流行和最常見的開源數(shù)據(jù)庫之一。它可以被用于多種不同的應(yīng)
    的頭像 發(fā)表于 08-28 17:15 ?969次閱讀

    mysql是一個什么類型的數(shù)據(jù)庫

    MySQL是一種關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS),用于存儲和管理大量結(jié)構(gòu)化數(shù)據(jù)。它被廣泛用于各種應(yīng)用程序和網(wǎng)站的后端,包括電子商務(wù)平臺、社交媒體網(wǎng)站、金融系統(tǒng)等等。MySQL的特點是
    的頭像 發(fā)表于 11-16 14:43 ?1764次閱讀

    MySQL數(shù)據(jù)庫基礎(chǔ)知識

    MySQL 是一種開源的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它是目前最流行的數(shù)據(jù)庫之一。MySQL 提供了一種結(jié)構(gòu)化的方法來管理大量的數(shù)據(jù),并且具有高效、
    的頭像 發(fā)表于 11-21 11:09 ?970次閱讀

    mysql數(shù)據(jù)庫基礎(chǔ)命令

    MySQL是一個流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),經(jīng)常用于存儲、管理和操作數(shù)據(jù)。在本文中,我們將詳細介紹MySQL的基礎(chǔ)命令,并提供與每個命令相關(guān)的詳細解釋。 登錄
    的頭像 發(fā)表于 12-06 10:56 ?581次閱讀

    數(shù)據(jù)庫數(shù)據(jù)恢復—Mysql數(shù)據(jù)庫表記錄丟失的數(shù)據(jù)恢復流程

    Mysql數(shù)據(jù)庫故障: Mysql數(shù)據(jù)庫表記錄丟失。 Mysql數(shù)據(jù)庫故障表現(xiàn): 1、
    的頭像 發(fā)表于 12-16 11:05 ?106次閱讀
    <b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>數(shù)據(jù)</b>恢復—<b class='flag-5'>Mysql</b><b class='flag-5'>數(shù)據(jù)庫</b>表記錄丟失的<b class='flag-5'>數(shù)據(jù)</b>恢復流程
    RM新时代网站-首页