1. 程式人生 > >資料庫入門學習總結

資料庫入門學習總結

本來早就寫的,拖了好幾天,人都懶散了。

關係資料庫:儲存的是實體與實體之間的關係。

mysql伺服器與資料、表之間的關係

*機器安裝tomcat稱為web伺服器。

*機器安裝了mysql稱為資料庫伺服器。

總結:一個數據庫的伺服器中有多個數據庫,一個數據庫中有多個表,每個表中有多個欄位。每個欄位和java中類的屬性是相對應的。每一條記錄對應一個java例項物件。

在安裝好了mysql以後,首先得輸入mysql -uroot -p    然後登入密碼就可以使用了mysql了。

一.資料語言的分類

DDL(資料定義語言):

*建立資料庫、建立表的;

DML(資料操縱語言):

*插入資料(insert)、修改資料(update)、刪除資料(delete);

DCL(資料控制語言):

*設定使用者許可權和控制語句;如if......else;

DQL(資料查詢語言):

*查詢資料select;

二.資料庫(CRUD--增刪查改):

*建立資料庫:

語法:create database 資料庫名稱;

create database 資料庫名稱 character set 編碼 collate 校對規則;

注意:校對規則跟編碼是成對出現的。

*檢視資料庫:show databases;

*檢視資料庫的定義:show create database 資料庫名稱;

*刪除資料庫:drop database 資料庫名稱;

*修改資料庫:語法:alter database 資料庫名稱 character set 編碼 collate 校對規則;

*切換資料庫:use 資料庫名稱;

*檢視當前使用的資料庫: select database();

三.表(table)(CRUD--增刪查改):

*語法:create table 表名(

欄位名 型別(長度) 約束,

欄位名 型別(長度) 約束,

欄位名 型別(長度) 約束

);

注意:表名小括號後面有分號;每一行後面有逗號,但最後一行沒有逗號;資料的型別後面有長度,如果是字串型別,長度必須加,如果是其他型別,可以不加。

*約束(單表):

*主鍵約束:

標識該條記錄。通過pramary key宣告主鍵。(預設 唯一、非空);

auto_increment資料庫維護主鍵。自動增長。

*唯一約束:

值是惟一的。使用unique宣告

*非空約束:

值不能為空 not null

例如:

create table employee2(
    id int primary key auto_increment,      //主鍵id,自動增長
    name varchar(20) unique not null,      //name的值是唯一的,非空
     gender varchar(10),
       birthday date,
       entry_date date,
     job varchar(100),
      salary double,
    resume text
    );

*刪除表:

drop table 表名;跟資料庫類似    例子:drop table employee2;

*修改表:

alter table 表名 add 欄位 型別(長度)  約束;---新增欄位

alter table 表名 drop 欄位;--刪除欄位

alter table 表名 modify 欄位 型別(長度) 約束 ;--修改欄位或約束

alter table 表名 change 舊欄位 新欄位 型別(長度) 約束;--修改欄位的名稱

rename table 表名 to 新表名;修改表名

alter table 表名 charater set utf8;--修改字集

*使用desc 表名;查看錶的資訊

show tables;檢視當前庫內所有表名

show create table 表名;檢視建表語句和字符集;

四.資料(CRUD--增刪查改):

*資料的型別:

字串型別:varchar、char

varchar和char的區別:

varchar(經常使用)長度是可變的。stuname varchar(8) 存入資料,但是如果存入helleoworld會報錯。

char    長度是不可變的。stuname char(8)   存入資料如果是helloworld,資料型別的長度不夠用就會用空格補全;

char的效率高;

*大資料型別(一般不用):

BLOB\TEXT:

BLOB:二進位制檔案

TEXT:字元

數值型:

tinyint、samllint、int、bigint、float、double.

邏輯型: 對應boolean

bit

日期型:

date、time、datetime、timestamp

date只包含日期

time只包含時分秒

datetime和timestamp包含日期和時分秒區別:

datetime需要手動錄入時間。

timestamp不傳入資料,預設選擇當前系統時間。

*資料的插入:

insert into 表名(欄位1,欄位2,欄位3......) values(值1,值2,值3....);有幾列插入幾列

insert into 表名 values(值1,值2,....);插入所有列

注意:

資料與欄位的型別相同。

欄位長度需要控制。

字串或日期型別需要使用單引號''。

*修改語句:

語法:delete  ...... from  表名  ;刪除資料

truncate刪除資料,先刪除整個表,再新建一個新的表。

delete刪除資料,是一條一條的刪除的。

事物中使用到的(insert、update、delete)

*修改語句:

語法:update 表名 set 欄位1=值,欄位2=值,......   [where]

如果沒有where條件,預設更新所有的條件。

有where提交,選擇某一條記錄。

*查詢語句:

select * from 表名;//查詢所有的欄位

select 欄位1,欄位2,.... from 表名;//顯示查詢所有欄位

select DISTINCT 欄位名 from 表名;//過濾表中重複的資料

例題(過濾表中重複的資料): select distinct english from stu;

查詢的列可以運算,可以使用別名: 使用as別名, 並且as可以省略。

常用的符號:

> <     <=    >=   =  !=

語法:  in(範圍內的內容)

like    --模糊查詢     寫法: like'張_'或者'張%'都可以查詢姓張的,名字是兩個字的。

_和%的區別:佔位符。_只佔一位,而%可以佔多位。

*排序 使用order by升序預設的(asc)/降序(desc)

注意:排序語句出現在select語句的末尾

*聚集函式:

count    獲取數量

sum      求和

avg       平均數

max      最大值

min      最小值

group  by分組(一起使用)條件過濾需要用到having,不能使用where;

小結:select語句順序:S-F-W-G-H-O組合

select.....from.....where....group  by....having....order by.....;