數據庫基本介紹
RDBMS(Relational Database Managerment System) :關系型數據庫管理系統
**關系型數據庫的主要產品如下
**
- mysql:web時代使用最廣泛的關系型數據庫
- oracel:大型項目使用較多,如銀行、電信等
- ms sql server:普遍用于微軟的項目
- db2:IBM 的產品,主要用于大型項目
- sqlite:輕量級數據庫,主要應用于移動平臺
SQL(Structured Query Language)
SQL是結構化查詢語言,是一種用來操作 RDBMS的數據庫語言,當前的關系型數據庫都支持使用SQL語言進行操作
- SQL語句主要分為
**MySQL 簡介
**
- 直接查看MySQL官方網站(https://www.mysql.com/)
- MySQL是一個關系型數據庫管理系統,由瑞典MySQL AB公司開發,后來被Sun公司收購,之后又被Oracle收購,目前 屬于Oracle旗下產品
MySQL的特點
- 使用c和c++編寫,并使用了多種編譯器進行測試,保證源代碼的可移植性
- 支持多種操作系統,如Linux、Windows、MacOS... 等
- 為多種編程語言提供了API,如C、C++、JAVA、Python ... 等
- 支持多線程,充分利用 CPU資源
- 多編碼支持 GB2312、UTF-8 等
- 支持多種存儲引擎
- MySQL 采用雙授權政策,分為社區版和商業版,并且源碼開源
- 復制全局事務標識
- 復制無崩潰從機
- 復制多線程從機
- ...
最主要的是 ** 開源,免費、不要錢,并且使用范圍廣,跨平臺支持性好,是學習數據庫開發的首選**
MySQL服務器與客戶端的安裝步驟較多,請自行百度(注,不同的操作系統,對應的mysql版本不一樣)
Navicat
- Navicat 是數據庫管理工具 ,專為簡化數據庫的管理及降低系統管理成本而設。Navicat 是以直覺化的圖形用戶界面而建的,讓你可以以安全并且簡單的方式創建、組織、訪問并共用信息
- Navicat提供多達 7 種語言供客戶選擇,被公認為全球最受歡迎的數據庫前端用戶界面工具。
- 它可以用來對本機或遠程的 MySQL、SQL Server、SQLite、Oracle 及 PostgreSQL 數據庫進行管理及開發
**Navicat 的安裝及基本使用,請自行百度
**
**安裝完成之后,可以自己創建數據庫
**

數據庫中表的數據類型與約束
- 常用的數據類型
- 約束
- 主鍵索引primary key:物理上存儲的順序(默認是唯一索引)
- 非空not null:此字段不允許填寫空值
- 唯一索引 unique:此字段的值不允許重復
- 默認default:當不填寫此值時會使用默認值,如果填寫,則以填寫為準
- 外鍵foreign key:對關系字段進行約束,當為關系字符填寫值時,會到關聯的表中查詢此值是否存在
- 說明:雖然外鍵約束可以保證數據的有效性,但是在進行數據的crud時(增、刪、改、查)時,都會降低數據庫的性能,所以一般不推薦使用。在實際開發中,一般是通過業務邏輯控制數據的有效性
常用數據類型
| 類型 | 字節大小 | 有符號范圍 | 無符號范圍 |
|---|---|---|---|
| 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 |
字符串
| 類型 | 字節大小 | 示例 |
|---|---|---|
| CHAR | 0~255 | char(3) ,輸入'ab',存儲為'ab',輸入'abcd',存儲為'abc' |
| VARCHAR | 0~255 | varchar(3),輸'ab',存儲為'ab',輸入'abcd',存儲為'abc |
| TEXT | 0~65535 | 大文本 |
日期
| 類型 | 字節大小 | 示例 |
|---|---|---|
| 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 |
數據庫操作
通過命令行操作數據庫
連接數據庫
- mysql -u用戶名 -p密碼

退出數據庫連接
- exit/quit/ctrl+c
查看所有數據庫
- show databases;

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

刪除數據庫
- drop database python01;
使用數據庫
- use python01;
查看當前使用的數據庫
- select database();

數據表的操作
創建表
- create table 表名字(字段 類型 約束)
- 例:create table person(id int,name varchar(50));

查看所有的表
- show tables;
查看表結構
- 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;
數據********表的基本增刪改查(curd)
- 添加數據兩種方式
- 方式一:insert into person(id,name) values(1,'zs');
- 方式二:insert into person values(2,'ls');
- 查詢全部表數據
- select * from person;

- 修改表數據
- update person set name='ww' where id=2;

- 刪除表數據
- delete from person where id=2;

數據表的查詢
- ****使用********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%' ) ;查詢后面是八 結尾的 ( 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 總人數 from person;
- **查詢最大的年齡 ** ( max ) **;查詢最小的年齡 ** ( min )
- select max(age) as 最大年齡 from person;
- select** min(age) **as 最小年齡 from person;
- **按年齡分組統計人數 ** (group by)
- select age,count(*) from person GROUP BY age;


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


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
SQL
+關注
關注
1文章
789瀏覽量
46694 -
結構化
+關注
關注
0文章
27瀏覽量
10464 -
RDBMS
+關注
關注
0文章
9瀏覽量
6047
發布評論請先 登錄
相關推薦
熱點推薦
python實戰數據庫MySQL---4操作MySQL
變量沒有默認值,所以,每個空都要填寫。實現數據庫之前,需要實現數據MySQL的安裝配置,這些網上到處是例程,大家自行參考。還有要先創建數據庫“test”,可以用
發表于 01-09 21:21
如何使用Python操作MySQL數據庫
使用Python進行MySQL的庫主要有三個,Python-MySQL(更熟悉的名字可能是MySQLdb),PyMySQL和SQLAlchemy。
python程序里如何鏈接MySQL數據庫
在python程序里,如何鏈接MySQL數據庫? 連接MYSQL需要3步 1、安裝 必須先安裝MySQL驅動。和PHP不一樣,
華為云數據庫-RDS for MySQL數據庫
華為云數據庫-RDS for MySQL數據庫 華為云數據庫作為華為云的一款數據庫產品,它主要是以MyS
python讀取數據庫數據 python查詢數據庫 python數據庫連接
使用第三方庫,包括MySQLDB、sqlite3、psycopg2等庫。其中MySQLDB是Python連接MySQL數據庫的一個重要
MySQL數據庫管理與應用
MySQL數據庫管理與應用 MySQL是一種廣泛使用的關系型數據庫管理系統,被認為是最流行和最常見的開源數據庫之一。它可以被用于多種不同的應
MySQL數據庫基礎知識
MySQL 是一種開源的關系型數據庫管理系統,它是目前最流行的數據庫之一。MySQL 提供了一種結構化的方法來管理大量的數據,并且具有高效、
mysql數據庫基礎命令
MySQL是一個流行的關系型數據庫管理系統,經常用于存儲、管理和操作數據。在本文中,我們將詳細介紹MySQL的基礎命令,并提供與每個命令相關的詳細解釋。 登錄
MySQL數據庫的安裝
MySQL數據庫的安裝 【一】各種數據庫的端口 MySQL :3306 Redis :6379 MongoDB :27017 Django :8000 flask :5000 【二】
適用于MySQL和MariaDB的Python連接器:可靠的MySQL數據連接器和數據庫
和 Linux 的 wheel 包分發。 直接連接 該解決方案使您能夠通過 TCP/IP 建立與 MySQL 或者 MariaDB 數據庫服務器的直接連接,而無需數據庫客戶端庫。另外
Python-mysql數據庫基礎
評論