1. 程式人生 > >java自學之路-day18

java自學之路-day18

收費 基本查詢 sqlite 他還 select 找到 之前 合計 表名

數據庫

數據庫

概念

l 對於一串數據修改其中的一條數據

l 如果用io流就需要全盤讀寫 然後找到其中的一行 進行修改

l 或者使用數組進行修改

l 這樣太復雜 效率慢 所以需要引用數據庫

l 數據庫本質是一個文件系統 可以看做是一個具有很好的處理數據能力的容器 和集合 數組 都一樣

l 裏面有嚴格的數據存儲格式

l 數據庫管理系統是用一個軟件管理數據庫

l 常見的數據庫管理系統

  1. MYSQL 開源免費 瑞典的公司開發 sun公司收購 Oracle收購了sun MYSQL6.x之後收費 中小企業使用
  2. Oracle 收費的數據庫 Oracle的公司的產品 大型公司使用
  3. DB2 IBM 收費 常用在銀行系統中
  4. SQLServer Microsoft公司 收費 c# .net語言使用
  5. Sybase 已經淡出歷史舞臺 提供了一個專業數據建模工具PowerDesigner
  6. SQLite 嵌入式數據庫 用在手機端
  7. Java常用 MYSQL 和Oracle,其他也可以用

數據庫和管理系統

l MYSQL中可以有多個數據庫 數據庫是真正存儲數據的地方

l 兩者的關系

  1. 客戶端面對數據庫管理系統
  2. 數據庫管理系統 操作數據庫
  3. 數據庫操作表

l MySQL數據庫是一個服務器 存儲數據庫的倉庫

l MySQL數據庫中有很多數據庫 MySql數據庫是一個總稱

l 要使用數據庫就需要創建自己的數據庫

l 而存儲數據需要在數據庫中建立各種數據表 數據是存儲在表中的

數據庫表

l 數據庫中以表為單位存儲數據

l 表似於java類

l 表中字段類似於類中屬性

l 表中每一條數據類似於對象

l 圖

表數據

l 用戶表

l 每一個表表示每一個事物也就是一個類

l 每一列表示類中每一個屬性

l 每一行也就是一條數據表示類中每一個對象

MySql數據庫

安裝MySql

  1. MYSQL6.x之後收費
  2. 雙擊5.5安裝包 next
  3. 選擇自定義安裝
  4. 手動選擇安裝位置
  5. 兩個安裝路徑

a) MySql Server

b) Server data files

  1. 點擊next就可以安裝了
  2. 安裝完後 再次點擊next
  3. 然後打上勾 Lanch。。。 運行配置向導
  4. 點擊finish就可以了
  5. 開始配置向導
  6. 選擇第一個 精細配置
  7. 選擇第一個 開發者電腦
  8. 選擇第一個 多功能功能數據庫
  9. MySql引擎存儲位置不要更改
  10. 選擇第三個 自定義連接數上限
  11. 啟用 tcp/ip網絡協議 默認端口號
  12. 選擇第三個默認字符集 更改為utf-8
  13. 安裝windows服務叫MySql

導入環境變量

  1. 設置密碼
  2. 點擊Execute
  3. 安裝完成
  4. 在windows服務中有 MySql服務 可以停止或開啟服務 以及自動開啟或手動開啟
  5. 360網絡連接中或出現MySql服務程序
  6. 命令行開啟服務

MySql在系統服務中

MySql登錄

l 命令行 敲入mysql –uroot –p123

l 賬號和密碼

l 也可以分開寫賬戶和密碼

l 登錄成功

l 密碼錯誤

l 賬戶錯誤

SQLYog

l 圖形化開發工具

l 免安裝

Sql語言

概述

l 數據庫不能用java語言

l 與數據庫交互 需要使用數據庫的SQL語句

l 是數據庫中的代碼

l 是一種數據庫查詢和程序設計語言

l 用於存取數據查詢,更新和管理關系數據庫系統

l 創建數據庫 創建數據表 向數據庫添加數據信息都需要使用SQL語句

l 適用於所有數據庫

SQL語句

l 數據定義語言 DDL

定義數據庫對象 數據庫 表,列

關鍵字 creat alter drop 創建 修改 刪除

l 數據操作語言 DML

對數據庫數據更新操作

關鍵字 insert delete update

l 數據控制語言DCL

用於分配訪問權限和安全級別 還能創建用戶

l 數據查詢語言DQL

用來查詢數據庫中標的記錄

關鍵字 select from where

SQL通用語法

l SQL語句可以單行或多行書寫 以分號結尾

l 可使用空格或縮進來增強語句的可讀性

l 不區分大小寫

l 可以使用/**/來註釋

l 數據類型

  1. int
  2. double
  3. varchar 可變字符
  4. date 日期類型 只有年月日沒有時分秒
  5. 其他還有很多

數據庫操作

l 創建數據庫

create dataabase 數據庫名;

create database 數據庫名 character set字符集;

由於安裝時以改為默認字符集 所以不用指定字符集了

l 顯示數據庫

show databases;

l 刪除數據庫

drop database 數據庫名;

l 操作沒有確認項

創建表操作

l 格式

l 約束

限制列名寫什麽數據

  1. 主鍵約束
  2. 非空約束
  3. 唯一約束
  4. 外鍵約束

SQL代碼的保存

l 可以正常保存 Ctrl+s

l 文件後綴 .sql

l 文本文件

l 導入

Ctrl+o

創建表示例

l 圖

主鍵約束

l 唯一 非空

l 不具備任何含義 只用來標識 生活中沒有的 只有系統中有

l private key 列的後面加入這個關鍵字

l 在表的最後指定主鍵 primary key(id)

l AUTO_INCREMENT可以讓主鍵自動增長 來確保唯一性和非空性

l 查看表

Show table 表名 查看所有表

Desc 表名 查看表結構

l 刪除表

Drop表名

修改表結構

l 添加列

  1. Alter table 表名 add 列名 數據類型 約束

l 修改列

  1. 類型修改要註意
  2. Alter table 表名 modify 列名 數據類型 約束

l 修改列名

  1. Alter table 表名 change 舊列名 新列名 數據類型 約束

l 刪除列

  1. Alter table 表名 drop 列名

l 修改表名

  1. Rename table 表名 to 新名

l 修改表字符集

Alter table 表名 character set 字符集

數據表添加數據

l Insert into 表名(列名1,列名2,列名3) values(值1,值2,值3)

  1. 註意列名表名問題 不要寫錯
  2. 對應問題 列和值個數要對應
  3. 沒有字符串概念 字符都用單引號‘’
  4. 數字可以不加單引號

l Insert into 表名 (列名)values(值)

  1. 沒有主鍵
  2. 列名不寫主鍵 值也不用寫主鍵

l Insert into 表名 values(值)

  1. 所有值都給出
  2. 不用寫列名
  3. 但是值必須寫夠

l 批量寫入

l Insert into 表名(列名1,列名2,列名3) values(值1,值2,值3),(值1,值2,值3),(值1,值2,值3),

  1. 批量寫入數據
  2. 值寫多個

l 如果在軟件中把自動遞增的id刪除一個,再添加一個,id還是在刪除的那個id基礎上自動遞增

更新數據

l Update 表名 set 列1=值1,列2=值2 where 條件

  1. 條件 id
  2. 條件的寫法

等於= 小於 < 大於 > 小於等於<=

與或非 and or not

Id In(1,3,4,5) 包含

Id not in(1) 不包含

刪除數據

l Delete from 表名 where 條件

  1. 不清空一條一條的刪除 不清空AUTO_INCREMENT記錄數 下一次增加還會在原來基礎上繼續遞增

l Truncate table 表名 摧毀表

  1. 直接將表刪除
  2. 重新建表
  3. AUTO_INCREMENT將置為0 從新開始

l 查詢表中內容

l MySql編碼方式是UTF-8 windows是GBk 所以會出現中文亂碼

l 改變指定列的編碼方式

l 其他

數據查詢

數據表和測試數據準備

基本查詢

l 查詢定列的數據

Select 列名1,列名2 from 表名

l 查詢所有列

Select * from表名

l 去掉重復記錄

Select Disctinct 列名 from 表名

l 查詢並臨時重新命名列的名字

Select 列名 as ‘要修改的名字’ from 表名

後面加 as 修改後的名字

或者直接加修改後的名字

l 查詢中直接運算

  1. Select 列名 運算符 數字 as‘’ from表名
  2. 加as 是因為運算後列名就改變了

條件查詢

l 滿足條件查詢 不滿足不操作

l 比較運算符

l 邏輯運算符

l 查詢某一個名字的數據

l 大於

l And

l Between and

l Or

l In

l Like 模糊查詢

  1. 開頭有小米

  1. 開頭結尾都有小米

  1. 查詢幾個字符 幾個下劃線就表示幾個字符

l 查詢不為空

排序查詢

l 升序

Select * from 表名Order by 列名 asc

Asc可以不寫

l 降序

Select * from 表名Order by 列名 desc

l 查詢指定列 在進行降序排列

不能對中文進行排序 結果不可預知

聚合函數查詢(縱向查詢)

概念

l 之前都是橫向查詢

l 有時需要計算 需要縱向查詢

l 這時需要使用聚合函數 將每一列進行計算然後返回一個單一的值

示例

l Count

l Sum

l Avg

l Max min

l 混合計算

l 分組查詢

  1. 把重復內容進行分組 單獨進行聚合計算

  1. 過濾pname

  1. 過濾pname

  1. 過濾sum

Having用於分組後過濾

分組後不能用Where

命令行亂碼問題

java自學之路-day18