MySql資料庫基礎筆記(一)

来源:http://www.cnblogs.com/LancyWu/archive/2017/08/31/7457381.html
-Advertisement-
Play Games

一、表與庫的概念 資料庫管理數據,它是以什麼樣的形式組成的? 生活中的表 >表 table多行多列,傳統的資料庫都是這樣的;聲明瞭表頭,一個表創建好了,剩下的就是往表中添加數據 多張表放在檔案中 >庫 database學生信息表,成績表,記過表 -> 都是這個班級的信息,將這幾張表放在一個文件夾中 ...


一、表與庫的概念

資料庫管理數據,它是以什麼樣的形式組成的?

生活中的表---->表 table
多行多列,傳統的資料庫都是這樣的;聲明瞭表頭,一個表創建好了,剩下的就是往表中添加數據

多張表放在檔案中--->庫 database
學生信息表,成績表,記過表 -> 都是這個班級的信息,將這幾張表放在一個文件夾中 -> 這個文件夾,文檔就是 庫
mysql伺服器可以幫我們管理多個庫

xampp\mysql\data
資料庫中的數據放在這個文件中, .MYD就是數據文件

檔案袋管理員---> 伺服器 server
資料庫就是將我們的數據存儲成文件,分文別類的管理起來

查看庫 show databases;
選庫 use test;
查看庫下的表 show tables;
查表 select * from cat;

二、認識SQL

sql語句大致可以分為三種:

DML is Data Manipulation Language statements. Some examples:數據操作語言,SQL 中處理數
據等操作統稱為數據操縱語言 增刪改查
對我們而言,DML是我們的重點


DDL is Data Definition Language statements. Some examples:數據定義語言,用於定義和管理
SQL 資料庫中的所有對象的語言 (建設者的角度,建表,建庫,建視圖 等等, 15%)
一般來說,一個資料庫在設計完畢之後很少會再改動了


DCL is Data Control Language statements. Some examples:數據控制語言,用來授予或回收訪
問資料庫的某種特權,並控制資料庫操縱事務發生的時間及效果,對資料庫實行監視等
(管理員角度,DBA[資料庫管理員],5%)
這個用戶是否有許可權建表,等

三、增刪改查操作

1. insert 操作

DML,增刪改查—>增

user表,uid name age 三列

(1).添加所有列 添加所有列

insert into user (uid,name,age) values (1,'lisi',23);

(2).一行中有多個列,我們可以插入全部列,也可以插入部分列
但是:列與值要嚴格對應

insert into user (uid,name) values (1,'lucy');

(3).主鍵自增插入 主鍵自增插入 desc user;

insert into user (name) values ('yumi');

(4).插入所有列的簡寫 插入所有列的簡寫

insert into user values ('kimi',25); //報錯:列計數不匹配值計數
insert into user values (3,'kimi',25);

數字可以加單引號,它也會轉成int來理解
但是字元串必須加單引號,不加會理解為一個列名或者變數,會報錯

insert into user values ('4','zhangsan','25');
insert into user values (5,zhangsan,25);

(5).一次添加多行數據 一次添加多行數據

insert into user values (5,'test1',44),(6,'test2',23),(7,'test3',18);

註意:
列與值, 嚴格對應 (id 自增列也必須對應)
數字和字元串的註意點
數字不必加單引號,字元串必須加單引號.
1 次添加多行數據,用逗號隔開

2. update 操作

增刪改查 -> 改
改哪張表?
你需要改哪幾列的值?
分別改為什麼值?
在哪些行生效?

(1).update 更改列

update user set age=99 where name='yumi';
update 表名 set
列1 = 新值1,
列2 = 新值2
where expr
update user set age=23,name='nobody' where uid=2;

(2).update 所有行
註意,不加 where 帶來的後果

update user
set
name='mingming',
age=55;

數據是很寶貴的
如果我們update不加where條件,後果是很可怕的
mysql可以設置新手模式,在新手模式下,刪除和更改不加where條件,它是拒絕執行的.

3. delete 操作

增刪改查 -> 刪
可不可以刪除某一行中的某一列?delete...
其實這是個update操作

對於傳統型資料庫而言,一行就是它的原子型的單位
添加是一行,刪除也要是一行
你要刪除哪張表的數據?
你要刪掉哪些行?

delete from 表名
where expr

sql: *

delete from user where uid=7;

註意不加where條件

delete from user;

4. select 操作

增刪改查 -> 查
查哪張表的數據?
你要選擇哪些列來查詢?
要選擇哪些行?

select 列1,列2,...列n
from 表名
where expr

(1).查詢表的所有行所有列

select * from user;

開發中很少這樣寫,因為表中會有成千上萬的數據,這樣查詢會增加資料庫負擔;
我們需要哪幾條數據,就查詢哪幾條數據即可
(2).查詢一行

select * from user where uid=2;

(3).查詢多行

select * from user where uid>=2;

(4).查詢某幾行的某幾列,* 代表所有列

select uid,name from user where uid>=2;
select name from user where uid=2;

dml占sql的80%,查占dml的80%;
我們所學的是最最基礎的查詢語句;
想要寫出高難度的複雜的查詢,我們還需專門討論查詢的模型的問題;
看我們是否能正真理解select,寫出強大的查詢語句,
要靠select的查詢模型,非常之重要

(5).goods表,查詢本店的商品比市場價便宜多少

select goods_id,goods_name,shop_price,market_price,market_price-shop_price from goods;

(6).投影的概念

select name,age from user;

user表有三列,我們只取出2列(部分列),叫做投影運算
就像手電筒筒,只照到兩列,投出影子顯示出來
goods表查詢出來 market_price-shop_price
兩個列做運算,叫做廣義投影

四、練習
1.取整

select num/10 from mian;

2.mysql 手冊函數
floor 向下取整

select floor(num/10)*10 from mian;

3.更改mian表

update mian set num=floor(num/10)*10 where num between 20 and 39;
select * from mian;

提示:大膽的把列看成變數,參與運算,甚至調用函數來處理 .
substring(),concat()
4.substring 截取字元串

select goods_id,substring(goods_name,4) from goods where goods_name like '諾基亞%';

5.concat 拼接字元串

select goods_id,concat('HTC',substring(goods_name,4)) from goods where goods_name like '諾基亞%';

6.更改表
為了不破壞表的數據,此處不予修改

update goods set goods_name=concat('HTC',substring(goods_name,4)) where goods_name like '諾基亞%';

大膽的把列看成變數,參與運算

註明:該筆記是學習“MySQL加強_布爾教育”時所記錄的


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

-Advertisement-
Play Games
更多相關文章
  • 在ORACLE資料庫中,序列(SEQUENCE)是使用非常頻繁的一個資料庫對象,但是有時候會遇到序列(SEQUECNE)跳號(skip sequence numbers)的情形,那麼在哪些情形下會遇到跳號呢? 事務回滾引起的跳號 不管序列有沒有CACHE、事務回滾這種情況下,都會引起序列的跳號。如下... ...
  • 前言:在使用 阿裡雲 上的一些產品時,遇到不少坑。 安裝IIS 時,遇到 因買的配置過低,虛擬記憶體不足,而導致 IIS 總是安裝失敗; 現在 在上面安裝了個 Sql Sever 2012,遠程老是 不能連接,百度找半天,終於能夠連接上了。 實現步驟如下: 1. 找到 安全組配置,打開 安全組配置,點 ...
  • 1. 捲積神經網路 1.1 多層前饋神經網路 多層前饋神經網路是指在多層的神經網路中,每層神經元與下一層神經元完全互連,神經元之間不存在同層連接,也不存在跨層連接的情況,如圖 11所示。 圖 11 對於上圖中隱藏層的第j個神經元的輸出可以表示為: 其中,f是激活函數,bj為每個神經元的偏置。 1.2 ...
  • 1.安裝必要的軟體包 2.關閉記憶體透明大頁 echo "transparent_hugepage=never">> sudo /etc/grub2.cfg 3.創建用戶組 及 用戶 4. chown -R oracle:oinstall /oracle /oradatachmod 755 /orac ...
  • 1、MySQL使用命令行啟動時報錯“發生系統錯誤 5”,如下: 原因:未用管理員身份運行cmd程式 解決方案:在開始菜單里找到命令提示符,右擊選擇以管理員身份運行 2、登錄時報錯“提示mysql不是內部或外部命令,也不是可運行的程式或批處理文件” 解決方案:配置環境變數(右擊我的電腦->高級系統設置 ...
  • 看到一篇不知道是好好玩還是好玩玩童鞋的博客,發現一道好玩的mapreduce題目,地址http://www.cnblogs.com/songhaowan/p/7239578.html 如圖 由於自己太笨,看到一大堆java代碼就頭暈、心慌,所以用python把這個題目研究了一下。 題目:尋找共同好友 ...
  • Oracle: --concat(str1,str2)字元串拼接函數 select concat(t.uuid,t.name) from group t; select t.uuid || t.name from group t;--initcap(str)將每個單詞首字母大寫,其他字母小寫sele ...
  • 因為這兩天業務需求不是很多,昨天抽空研究了下MySQL的主從同步。 期間也遇到了許多問題,怕之後會忘記,也順便記錄下自己的成長經歷。所以寫這篇博文。 因為我是在VM虛擬機上進行的測試。 所以首先要把虛擬機的鏈接模式改為橋接模式。 在設置->硬體->網路適配器->網路連接里更改為橋接模式。 如果不是使 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...