數(shù)據(jù)庫(kù)基本介紹
RDBMS(Relational Database Managerment System) :關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)
**關(guān)系型數(shù)據(jù)庫(kù)的主要產(chǎn)品如下
**
- mysql:web時(shí)代使用最廣泛的關(guān)系型數(shù)據(jù)庫(kù)
- oracel:大型項(xiàng)目使用較多,如銀行、電信等
- ms sql server:普遍用于微軟的項(xiàng)目
- db2:IBM 的產(chǎn)品,主要用于大型項(xiàng)目
- sqlite:輕量級(jí)數(shù)據(jù)庫(kù),主要應(yīng)用于移動(dòng)平臺(tái)
SQL(Structured Query Language)
SQL是結(jié)構(gòu)化查詢(xún)語(yǔ)言,是一種用來(lái)操作 RDBMS的數(shù)據(jù)庫(kù)語(yǔ)言,當(dāng)前的關(guān)系型數(shù)據(jù)庫(kù)都支持使用SQL語(yǔ)言進(jìn)行操作
- SQL語(yǔ)句主要分為
-
DQL:數(shù)據(jù)庫(kù)查詢(xún)語(yǔ)言,用于對(duì)數(shù)據(jù)進(jìn)行查詢(xún)
-
DML:數(shù)據(jù)庫(kù)操作語(yǔ)言,用于對(duì)數(shù)據(jù)進(jìn)行增加、修改、刪除等操作
-
TPL:事務(wù)處理語(yǔ)言,對(duì)事務(wù)進(jìn)行處理
-
DCL:數(shù)據(jù)庫(kù)控制語(yǔ)言,進(jìn)行授權(quán)與權(quán)限回收
-
DDL:數(shù)據(jù)庫(kù)定義語(yǔ)言,進(jìn)行數(shù)據(jù)庫(kù)、表的管理
-
CCL:指針控制語(yǔ)言,通過(guò)控制指針完成對(duì)表的操作
注:對(duì)于程序員來(lái)講,最重要的就是對(duì)數(shù)據(jù)的curd(增、刪、改、查),即DQL和DML
-
**MySQL 簡(jiǎn)介
**
- 直接查看MySQL官方網(wǎng)站(https://www.mysql.com/)
- MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由瑞典MySQL AB公司開(kāi)發(fā),后來(lái)被Sun公司收購(gòu),之后又被Oracle收購(gòu),目前 屬于Oracle旗下產(chǎn)品
MySQL的特點(diǎn)
- 使用c和c++編寫(xiě),并使用了多種編譯器進(jìn)行測(cè)試,保證源代碼的可移植性
- 支持多種操作系統(tǒng),如Linux、Windows、MacOS... 等
- 為多種編程語(yǔ)言提供了API,如C、C++、JAVA、Python ... 等
- 支持多線(xiàn)程,充分利用 CPU資源
- 多編碼支持 GB2312、UTF-8 等
- 支持多種存儲(chǔ)引擎
- MySQL 采用雙授權(quán)政策,分為社區(qū)版和商業(yè)版,并且源碼開(kāi)源
- 復(fù)制全局事務(wù)標(biāo)識(shí)
- 復(fù)制無(wú)崩潰從機(jī)
- 復(fù)制多線(xiàn)程從機(jī)
- ...
最主要的是 ** 開(kāi)源,免費(fèi)、不要錢(qián),并且使用范圍廣,跨平臺(tái)支持性好,是學(xué)習(xí)數(shù)據(jù)庫(kù)開(kāi)發(fā)的首選**
MySQL服務(wù)器與客戶(hù)端的安裝步驟較多,請(qǐng)自行百度(注,不同的操作系統(tǒng),對(duì)應(yīng)的mysql版本不一樣)
Navicat
- Navicat 是數(shù)據(jù)庫(kù)管理工具 ,專(zhuān)為簡(jiǎn)化數(shù)據(jù)庫(kù)的管理及降低系統(tǒng)管理成本而設(shè)。Navicat 是以直覺(jué)化的圖形用戶(hù)界面而建的,讓你可以以安全并且簡(jiǎn)單的方式創(chuàng)建、組織、訪問(wèn)并共用信息
- Navicat提供多達(dá) 7 種語(yǔ)言供客戶(hù)選擇,被公認(rèn)為全球最受歡迎的數(shù)據(jù)庫(kù)前端用戶(hù)界面工具。
- 它可以用來(lái)對(duì)本機(jī)或遠(yuǎn)程的 MySQL、SQL Server、SQLite、Oracle 及 PostgreSQL 數(shù)據(jù)庫(kù)進(jìn)行管理及開(kāi)發(fā)
**Navicat 的安裝及基本使用,請(qǐng)自行百度
**
**安裝完成之后,可以自己創(chuàng)建數(shù)據(jù)庫(kù)
**

數(shù)據(jù)庫(kù)中表的數(shù)據(jù)類(lèi)型與約束
- 常用的數(shù)據(jù)類(lèi)型
- 整數(shù):tinyint、int、bigint
- 小數(shù):decimal
- 字符串:varchar、char
- 日期時(shí)間:date、time、datetime
- 枚舉類(lèi)型:enum
- 類(lèi)型說(shuō)明
- decimal表示浮點(diǎn)數(shù),如decimal(5,2)表示共存5位數(shù),小數(shù)占2位
- char表示固定長(zhǎng)度的字符串,如char(3),如果填充 'ab' 時(shí)會(huì)補(bǔ)一個(gè)空格為 'ab '
- varchar表示可變長(zhǎng)度的字符串,如varchar(3),填充'ab'時(shí),就只會(huì)存儲(chǔ)'ab'
- 字符串text表示存儲(chǔ)大文本,當(dāng)字符串大于4000時(shí)推薦使用
- 約束
- 主鍵索引primary key:物理上存儲(chǔ)的順序(默認(rèn)是唯一索引)
- 非空not null:此字段不允許填寫(xiě)空值
- 唯一索引 unique:此字段的值不允許重復(fù)
- 默認(rèn)default:當(dāng)不填寫(xiě)此值時(shí)會(huì)使用默認(rèn)值,如果填寫(xiě),則以填寫(xiě)為準(zhǔn)
- 外鍵foreign key:對(duì)關(guān)系字段進(jìn)行約束,當(dāng)為關(guān)系字符填寫(xiě)值時(shí),會(huì)到關(guān)聯(lián)的表中查詢(xún)此值是否存在
- 說(shuō)明:雖然外鍵約束可以保證數(shù)據(jù)的有效性,但是在進(jìn)行數(shù)據(jù)的crud時(shí)(增、刪、改、查)時(shí),都會(huì)降低數(shù)據(jù)庫(kù)的性能,所以一般不推薦使用。在實(shí)際開(kāi)發(fā)中,一般是通過(guò)業(yè)務(wù)邏輯控制數(shù)據(jù)的有效性
常用數(shù)據(jù)類(lèi)型
| 類(lèi)型 | 字節(jié)大小 | 有符號(hào)范圍 | 無(wú)符號(hào)范圍 |
|---|---|---|---|
| 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 |
字符串
| 類(lèi)型 | 字節(jié)大小 | 示例 |
|---|---|---|
| CHAR | 0~255 | char(3) ,輸入'ab',存儲(chǔ)為'ab',輸入'abcd',存儲(chǔ)為'abc' |
| VARCHAR | 0~255 | varchar(3),輸'ab',存儲(chǔ)為'ab',輸入'abcd',存儲(chǔ)為'abc |
| TEXT | 0~65535 | 大文本 |
日期
| 類(lèi)型 | 字節(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ù)庫(kù)操作
通過(guò)命令行操作數(shù)據(jù)庫(kù)
連接數(shù)據(jù)庫(kù)
- mysql -u用戶(hù)名 -p密碼

退出數(shù)據(jù)庫(kù)連接
- exit/quit/ctrl+c
查看所有數(shù)據(jù)庫(kù)
- show databases;

顯示時(shí)間
- select now();
查看數(shù)據(jù)庫(kù)版本
- select version();
創(chuàng)建數(shù)據(jù)庫(kù)并指定編碼為utf8
- create database python01 charset=utf8;

刪除數(shù)據(jù)庫(kù)
- drop database python01;
使用數(shù)據(jù)庫(kù)
- use python01;
查看當(dāng)前使用的數(shù)據(jù)庫(kù)
- select database();

數(shù)據(jù)表的操作
創(chuàng)建表
- create table 表名字(字段 類(lèi)型 約束)
- 例:create table person(id int,name varchar(50));

查看所有的表
- show tables;
查看表結(jié)構(gòu)
- desc person;

修改表-添加字段
- alter table 表名 add 列名 類(lèi)型;
- 例:alter table person add age int;
修改表-修改字段
- alter table 表名 change 原名 新名 類(lèi)型及約束;
- 例: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');
- 查詢(xún)?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ù)表的查詢(xún)
- ****使用********as ****給字段起別名
- select name as 姓名,age from person;


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


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


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




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


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


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




- **查詢(xún)年齡為null的人 ** (is null)
- select *from person where age is null;


- 查詢(xún)年齡不為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;



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


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


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


-
SQL
+關(guān)注
關(guān)注
1文章
789瀏覽量
46157 -
結(jié)構(gòu)化
+關(guān)注
關(guān)注
0文章
27瀏覽量
10441 -
RDBMS
+關(guān)注
關(guān)注
0文章
9瀏覽量
6010
發(fā)布評(píng)論請(qǐng)先 登錄
python實(shí)戰(zhàn)數(shù)據(jù)庫(kù)MySQL---4操作MySQL
MySQL數(shù)據(jù)庫(kù)的python模塊安裝
Python操作Mysql實(shí)現(xiàn)數(shù)據(jù)庫(kù)腳本的方法概述
Python連接MySQL數(shù)據(jù)庫(kù)及模塊封裝
python如何連接MySql數(shù)據(jù)庫(kù)
如何使用Python操作MySQL數(shù)據(jù)庫(kù)
python程序里如何鏈接MySQL數(shù)據(jù)庫(kù)
華為云數(shù)據(jù)庫(kù)-RDS for MySQL數(shù)據(jù)庫(kù)
python讀取數(shù)據(jù)庫(kù)數(shù)據(jù) python查詢(xún)數(shù)據(jù)庫(kù) python數(shù)據(jù)庫(kù)連接
MySQL數(shù)據(jù)庫(kù)管理與應(yīng)用
MySQL數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)
mysql數(shù)據(jù)庫(kù)基礎(chǔ)命令
數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—Mysql數(shù)據(jù)庫(kù)表記錄丟失的數(shù)據(jù)恢復(fù)流程
MySQL數(shù)據(jù)庫(kù)的安裝
適用于MySQL和MariaDB的Python連接器:可靠的MySQL數(shù)據(jù)連接器和數(shù)據(jù)庫(kù)

Python-mysql數(shù)據(jù)庫(kù)基礎(chǔ)
評(píng)論