MySQL資料庫入門詳細筆記

来源:https://www.cnblogs.com/prodigal-son/archive/2020/05/01/12814835.html
-Advertisement-
Play Games

ps: 中括弧[]里的內容都是可以省略的,按需要添加 資料庫操作 創建資料庫 if not exists 判斷是否重覆 charset=gbk 簡體中文 gb2312 簡體中文 utf8 通用字元編碼 顯示當前時間、用戶名、資料庫版本 查看資料庫信息 mysql mysql show create ...


ps:

中括弧[]里的內容都是可以省略的,按需要添加

資料庫操作

創建資料庫

語法:create database [if not exists] 數據名 charset=gbk;
create database if not exists tow charset=gbk;
Query OK, 1 row affected
  • if not exists -> 判斷是否重覆

  • charset=gbk -> 簡體中文

  • gb2312 -> 簡體中文

  • utf8 -> 通用字元編碼

顯示當前時間、用戶名、資料庫版本

select now(), user(), version();
+---------------------+----------------+-----------+
| now()               | user()         | version() |
+---------------------+----------------+-----------+
| 2020-04-23 16:58:06 | root@localhost | 5.5.30    |
+---------------------+----------------+-----------+
1 row in set

查看資料庫信息

語法:show create database 資料庫名;
mysql> show create database tow;
+----------+-------------------------------------------------------------+
| Database | Create Database                                             |
+----------+-------------------------------------------------------------+
| tow      | CREATE DATABASE `tow` /*!40100 DEFAULT CHARACTER SET gbk */ |
+----------+-------------------------------------------------------------+
1 row in set

修改資料庫編碼

語法1:alter database 資料庫名 default character set gb2312;
語法2:alter database 資料庫名 character set gbk;

兩種方法都可以更改各類編碼

例一:

alter database tow default character set gb2312;
Query OK, 1 row affected

例二:

alter database tow character set gbk;
Query OK, 1 row affected

查詢有哪些資料庫

show databases;#
+--------------------+
| Database           |
+--------------------+
| information_schema |
| frist              |
| mysql              |
| performance_schema |
| tow                |
+--------------------+
5 rows in set

刪除資料庫

語法:drop database 資料庫名;
drop database tow;
Query OK, 0 rows affected

選擇資料庫

語法:use 資料庫名;
 use frist;
Database changed

表的操作

創建表

create table 表名(
    欄位名 欄位類型 [not null] [primary key] [null] [auto_increment] [comment],
    欄位名 欄位類型 [default] 	#末尾不需要加分號
)[engine=innodb];

  • [engine=innodb] -> 選擇存儲引擎;menory引擎將數據存放在記憶體中,重啟服務後數據會丟失,但是讀取速度快。

  • [not null] -> 不允許為空

  • [null] -> 允許為空

  • [auto_increment] -> 自動遞增 例如編號,預設從1開始如果有輸入就會從你輸入的數開始。

  • [primary key] ->主鍵

  • [comment] -> 備註

  • [default] -> 預設值

  • set nams gbk;

修改表

添加欄位

語法:alter table 表名 add 欄位名 欄位類型;
 alter table teacher add addr varchar(50) default'地址不詳'  comment'地址';
Query OK, 0 rows affected

在第一個位置上添加欄位

語法:alter table 表名 add 欄位名 欄位類型 first;
 alter table teacher add number int comment'編號' first;
Query OK, 0 rows affected

在指定的欄位後添加欄位

語法:alter table 表名add 欄位名 欄位類型 after 指定的欄位名;
alter table teacher add phone varchar(11) not null after name;
Query OK, 0 rows affected

刪除欄位

語法:alter table 表名drop 欄位名;
alter table teacher drop number;
Query OK, 0 rows affected

修改欄位名和類型

語法:alter table 表名 change 原欄位名 新欄位名 數據類型;
alter table teacher change addr dizhi char(100);
Query OK, 0 rows affected
alter table test change id id int auto_increment;
Query OK, 3 rows affected

修改欄位類型不改欄位名

語法:alter table 表名 modify 欄位名 欄位類型;
alter table teacher modify dizhi varchar(50);
Query OK, 0 rows affected

修改表名

alter table 表名 rename to 新表名;
alter table teacher rename to techer;
Query OK, 0 rows affected

查詢有哪些表

show tables;
+-----------------+
| Tables_in_frist |
+-----------------+
| stu             |
| sudent          |
| teacher         |
+-----------------+
3 rows in set

刪除表

語法:drop table [if exists]表名;
drop table if exists stu;
Query OK, 0 rows affected

沒有stu表不加 if exists 的情況

drop table stu;
1051 - Unknown table 'stu'

沒有stu表但是加了 if exists 後

drop table if exists stu;
Query OK, 0 rows affected

複製表

複製表結構和數據;不能複製表的主鍵,但能夠複製表的數據

語法一:create table 新表名 select * from 需要複製的表名;
		create table 複製後存放的表名 as(select * from 需要複製的表名);	#效果和上面的完全相同
mysql> create table stu1 select * from stu;
Query OK, 3 rows affected
Records: 3  Duplicates: 0  Warnings: 0

mysql> select * from stu1;
+----+--------+------+-------+
| id | name   | addr | score |
+----+--------+------+-------+
|  1 | 馬雲   | 杭州 |    77 |
|  2 | 馬化騰 | 深圳 |    66 |
|  3 | 馬斯特 | 美國 |    60 |
+----+--------+------+-------+
3 rows in set

mysql> desc stu1;	#主鍵不能被覆制
+-------+-------------+------+-----+----------+-------+
| Field | Type        | Null | Key | Default  | Extra |
+-------+-------------+------+-----+----------+-------+
| id    | int(11)     | NO   |     | 0        |       |
| name  | varchar(20) | NO   |     | NULL     |       |
| addr  | varchar(50) | YES  |     | 地址不詳 |       |
| score | int(11)     | YES  |     | NULL     |       |
+-------+-------------+------+-----+----------+-------+
4 rows in set

複製表的結構;只能複製表結構,不能複製表數據

語法二:create table 新表名 like 需要複製的表名;
mysql> create table stu2 like stu;
Query OK, 0 rows affected

mysql> select * from stu2;
Empty set

mysql> desc stu2;	#主鍵被覆制了
+-------+-------------+------+-----+----------+----------------+
| Field | Type        | Null | Key | Default  | Extra          |
+-------+-------------+------+-----+----------+----------------+
| id    | int(11)     | NO   | PRI | NULL     | auto_increment |
| name  | varchar(20) | NO   |     | NULL     |                |
| addr  | varchar(50) | YES  |     | 地址不詳 |                |
| score | int(11)     | YES  |     | NULL     |                |
+-------+-------------+------+-----+----------+----------------+
4 rows in set

顯示創建表的語句

語法:show create table 表名;
 show create table test;
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                            |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| test  | CREATE TABLE `test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set

查看表結構

語法:desc 表名;	#縮寫
	describe 表名;
describe test;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| name  | varchar(20) | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
2 rows in set

修改表編碼

(解決中文編碼問題)

alter table 表名character set gbk;
alter table 表名 convert to character set utf8;
set names gbk;	#最簡單的方法,修改整個資料庫

最後面的都是編碼名稱,按需要填寫,一般常用的也就 gbk/utf8/gb2312

數據操作

創建測試表

create table stu(
    -> id int auto_increment primary key comment'主鍵',
    -> name varchar(20) not null,
    -> addr varchar(50) default'地址不詳',
    -> score int comment'成績'
    -> );
Query OK, 0 rows affected

插入一條數據

語法:insert into 表名(欄位名,欄位名,…)values(欄位值,…,欄位值);

例一:

insert into stu (id,name,addr,score) values(19022100,'tom','北京',88);
Query OK, 1 row affected

例二:插入的欄位可以和表的欄位順序不一致只要一一對應即可

insert into stu(name,score,addr,id) values('berry',77,'北京',2);
Query OK, 1 row affected

例三:可以只插入部分欄位,但是非空欄位必須插入

insert into stu(id,name,addr) values(19,'ketty','上海');
Query OK, 1 row affected

例四:自動增長列的值可以不用也可以直接插入null,資料庫會自動插入增長的數

insert into stu(name,addr) values('rose','北京');
Query OK, 1 row affected

例五:插入值的順序和個數與表欄位的順序和個數一致,插入的欄位可以省略

insert into stu values(null,'大海','廣西',100);
Query OK, 1 row affected

例七:通過default關鍵字插入預設值

 insert into stu values(null,'toni',default,50);
Query OK, 1 row affected

查詢表裡的所有數據

語法:select * from 表名;
select * from stu;
+----------+------+------+-------+
| id       | name | addr | score |
+----------+------+------+-------+
| 19022100 | tom  | 北京 |    88 |
+----------+------+------+-------+
1 row in set

插入多條數據

語法:insert into 表名 values(欄位值1,...,欄位值n),....,(欄位值1,...欄位值n);
insert into stu values(null,'馬雲','杭州',66),(null,'馬化騰','深圳',55);
Query OK, 2 rows affected

更新數據

語法:update 表名 set 欄位值=值 [where 條件];

例一:把2號學生的地址改為湖北

update stu set addr = '湖北' where id = 2;
Query OK, 1 row affected

例二:把馬雲的成績改為99

update stu set score = 99 where name = '馬雲';
Query OK, 1 row affected

例三:將馬化騰的地址改為廣東,成績改為80

update stu set addr = '廣東',score = 80 where name = '馬化騰';
Query OK, 1 row affected

例四:將北京的學生成績全部改為77

update stu set score = 60 where addr = '北京';
Query OK, 2 rows affected

例五:將學號為1,2的兩位學生成績改為65

update stu set score = 65 where id = 1 or id = 2;
Query OK, 2 rows affected

條件可以省略,但是如果省略就是更改所有數據

刪除數據

語法:delete from 表名 [where 條件];

例一:刪除學號是2的學生

delete from stu shere id = 2;

例二:刪除小於等於65分的學生

 delete from stu where score <= 65;
Query OK, 4 rows affected

例三:刪除表中所有記錄

delete from stu;
Query OK, 3 rows affected

清空表

語法:truncate table 表名;
truncate table stu;
Query OK, 0 rows affected
delete from 和 truncate table 的區別:
- delete from :遍歷表記錄,一條一條的刪除。
- truncate table:將原表銷毀再創建一個結構相同的新表。這方法更高效

查詢表

語法:select 列名 from 表名;

例一:

mysql> select id,name from stu;
+----+--------+
| id | name   |
+----+--------+
|  1 | 馬雲   |
|  2 | 馬化騰 |
|  3 | 馬斯特 |
+----+--------+
3 rows in set

mysql> select * from stu; # *號表示所有欄位
+----+--------+------+-------+
| id | name   | addr | score |
+----+--------+------+-------+
|  1 | 馬雲   | 杭州 |    77 |
|  2 | 馬化騰 | 深圳 |    66 |
|  3 | 馬斯特 | 美國 |    60 |
+----+--------+------+-------+
3 rows in set

字元集

字元集:字元在保存和傳輸是對應的二進位編碼集合。

創建測試數據表

create table test(
    -> id int primary key,
    -> name varchar(20)
    -> );
Query OK, 0 rows affected
set names gbk;	#設置服務端 和返回值的編碼格式為gbk

字元編碼錯誤錯誤

1366 - Incorrect string value: '\xAC\xE5\x8C\x96\xE8\x85...' for column 'name' at row 1

解決方法:將編碼改為與資料庫匹配的編碼

set names 編碼名稱;

後續持續更新關註我第一時間獲得更新情況


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

-Advertisement-
Play Games
更多相關文章
  • 四、實時同步 (一)課程概念介紹 1. 為什麼要用實時同步服務 因為定時任務有缺陷,一分鐘以內的數據無法進行同步,容易造成數據丟失 2. 實時同步工作原理 a .創建要存儲數據的目錄 b .利用實時同步的軟體監控我們進行備份的數據目錄 c .利用rsync服務進行數據推送傳輸備份 (二)實時同步服務 ...
  • 三、存儲服務(NFS) (一)NFS共用存儲服務開篇介紹 1、共用存儲服務定義: NFS是Network File System的縮寫,中文意思是網路文件系統,它的主要功能是通過網路(一般是區域網)讓不同的主機系統之間可以共用文件或目錄。 2、NFS共用存儲服務的應用: ①將數據存儲到一臺伺服器上, ...
  • 二、備份服務(rsync) (一)rsync服務介紹 Rsync是一款開源的、快速的、多功能的、可實現全量及增量的本地或遠程數據同步備份的優秀工具。並且可以不進行改變原有數據的屬性信息,實現數據的備份遷移特性。Rsync軟體適用於unix/linux/windows等多種操作系統平臺。 Rsync是 ...
  • 一、架構介紹及環境部署 (一)瞭解集群架構伺服器組成 基本架構組成:(用於讓用戶進行訪問) 1、前端服務部分: 1)顧客 用戶 是一個訪問者,請求訪問網站頁面 2)保全 防火牆設備 對訪問架構用戶進行策略控制,正常訪問網站用戶,可以放行進入;非法人員(黑客)訪問網站,禁止進入 3)對講機 交換機(外 ...
  • 在上一篇文章中,介紹了cpufreq的core層,core提供了cpufreq系統的初始化,公共數據結構的建立以及對cpufreq中其它子部件提供註冊功能。core的最核心功能是對policy的管理,一個policy通過cpufreq_policy結構中的governor欄位,和某個governor ...
  • 前言 以前接觸到的u boot啟動方式只有Flash和Nand Flash這兩種方式,最近接觸是SD卡啟動方式,SoC是S5P4418,啟動方式也第一次接觸到,根據S5P4418用戶手冊可以找到系統使用SD卡啟動時,片內iROM內固化的代碼會自動映射到0x00地址,也被稱為第一階段引導程式,該程式會 ...
  • 回到目錄 將多個放大電路前後連接起來,即可得到一個放大倍數更大的級聯放大電路,理論上來講,級聯電路的總放大倍數相當於所有單個放大電路放大倍數的乘積。但是實際上,由於負載效應等原因,實際的電路總放大倍數比理論值要小一些,本小節我們將詳細講述級聯繫統(cascaded system)的分析方法。 1. ...
  • 上一篇:Oracle入門學習一 學習視頻:https://www.bilibili.com/video/BV1tJ411r7EC?p=15 算術運算符:+ - * / 邏輯運算符:and or not 比較運算符:“=”、“<”、“>”、“<=”、“>=”、“<>”、“!=”。註意“=”是等於的意思 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...