1. 程式人生 > 其它 >MySQL基本型別、操作

MySQL基本型別、操作

MySQL

前言(一些廢話,可以不看

為什麼學習資料庫呢,大家都知道,為了學習刪庫跑路,因為資料庫在工作中起著至關重要的作用,只會寫程式碼的是碼農;學好資料庫,基本能混口飯吃;在此基礎上再學好作業系統和計算機網路,就能當一個不錯的程式設計師。 如果能再把離散數學、數位電路、體系結構、資料結構/演算法、編譯原理學通透,再加上豐富的實踐經驗與領域特定知識,就能算是一個優秀的工程師了。(這是百度的)

在沒有認識到資料庫之前,我們程式執行的資料需要我們每次的輸入,但是程式一旦結束,資料也就消失不見了,所以我們才要學習資料庫,這樣才能在網路中,混口飯吃真正的步入程式開發的一步

資料庫 ( DataBase

, 簡稱DB )

概念 : 資料庫是“按照資料結構來組織、儲存和管理資料的倉庫”。是一個長期儲存在計算機內的、有組織的、可共享的、統一管理的大量資料的集合。(廢話)

資料庫根據型別分為關係型資料庫非關係型資料庫

常用關係型資料庫(SQL)有:MySQL、Oracle、SQL Server等等,通過外來鍵關聯實現行與行、列與列、表與表的關係

常用的非關係型資料庫(NOSQL )有:Redis 、MongoDB等等,以物件的方式儲存

資料庫管理系統 ( DataBase Management System )

資料庫管理軟體 , 科學組織和儲存資料 , 高效地獲取和維護資料,MySQL其實就是一個數據庫管理系統。

MySQL 是最流行的關係型資料庫管理系統,在 WEB 應用方面 MySQL 是最好的 RDBMS(Relational Database Management System:關係資料庫管理系統)應用軟體之一。

對於資料庫的操作大概也分為了這四種,增刪查改,大體又分為,操作資料庫操作資料庫中的表操作表中的資料

操作資料庫

  • 建立資料庫

首先在Navicat上新建一個查詢

create database wostos;# 創造一個database(資料庫) 資料庫的名字叫wostos
#當我們資料庫中有這個名字的話,那麼我們就會建立失敗
#為了避免這種錯誤的發生,我們在建立資料庫的時候,可以按照下面這種方式建立
create database if not exists wostos;#加上if not exists,就會先判斷是否有這個名字存在,沒有才會建立
  • 刪除資料庫
drop database wostos;#刪除資料庫
#同理,如果沒有這個名字,也會報錯,所以我們通常也加上一個判斷
drop database if exists wostos;#如果存在,我們就刪除
  • 檢視資料庫
show databases;#檢視所有資料庫,會把你的資料庫一一列出來

show create database `資料庫名稱`;# 檢視資料庫定義
show create table `表名`;# 查看錶的定義

資料型別

#均可以加unsigned使其變成無符號,並範圍加倍
  • 粗體記一下就可以了,其他可以先不急
MySQL資料型別 含義(有符號)
tinyint 1個位元組 範圍(-128~127)
smallint 2個位元組 範圍(-32768~32767)
mediumint 3個位元組 範圍(-8388608~8388607)
int 4個位元組 範圍(-2147483648~2147483647)
bigint 8個位元組 範圍(+-9.22*10的18次方)
float 單精度浮點型 8位精度(4位元組) m總個數,d小數位
double 雙精度浮點型 16位精度(8位元組) m總個數,d小數位
char 固定長度,最多255個字元
varchar 可變長度,最多65535個字元
tinytext 可變長度,最多255個字元
text 可變長度,最多65535個字元
mediumtext 可變長度,最多2的24次方-1個字元
longtext 可變長度,最多2的32次方-1個字元
特殊型別 含義
date 日期 '2008-12-2' ,YYYY-MM-DD
time 時間 '12:25:36',HH-mm-ss(h小寫表示12小時制,H大寫表示24小時制)
datetime 日期時間 '2008-12-2 22:06:44'
timestamp 時間戳 1970.1.1到現在的毫秒數
year 年份表示
MySQL關鍵字 含義
NULL 資料列可包含NULL值
NOT NULL 資料列不允許包含NULL值
DEFAULT 預設值
PRIMARY KEY 設定主鍵
AUTO_INCREMENT 自動遞增,適用於整數型別,通常用於設定主鍵 , 且為整數型別
UNSIGNED 無符號
CHARACTER SET name 指定一個字符集

操作資料庫中的表

提示:在資料庫中也有很多關鍵字,不管是取什麼名稱,儘量不要取關鍵字的名稱,實在要取的話,需要在名字兩邊加上這個反引號`

表的建立與刪除

create table if not exists test (id int(4) primary key, `name` varchar(255), age int(4));
# create新建表,括號中是表的表的屬性比如這裡就是有三個屬性id、name、age,型別分別為int、varchar、int,同理if not exists是判斷當沒有這個表的時候才創立,防止出錯
drop table if exists test cascade;# drop刪除表,cascade表示一種刪除方式,不細講,差不多是強制刪的意思吧

表的修改

alter table test rename as test01;#修改表名稱,將test改為了test01
alter table test add email varchar(255);# alter修改表,add表示新增欄位
alter table test drop email;# 同理可以刪除
#還有一個change,有興趣可以搜尋一下

增刪改查

對這個表操作

select * from student;# select查詢表(所有),*代表查詢student表中所以資訊

select id as 學號, `name` as 姓名 from student;# 查詢列,起別名,這樣我們查詢出來結果,就是以我們起的別名顯示(as可以省略)

select distinct `name` 姓名 from student;# distinct表示去重,有時候我們查出的結果會有重複,這樣查詢出內容並不重複的顯示

select `name` 姓名 from student where sex = "男";# where待條件查詢 where後跟條件(大部分條件會在程式碼下方放出來)

select count from student;# 查詢表有多少行,還可以加一下修飾

select count(distinct `name`) from student;# 查詢表有多少行name不重複的

select `name` from student group by `name` having name="張三";# 瞭解即可,group by分組查詢會自動去掉重複的,條件需要用having,且只能但物件查詢,比如這裡只能看name

常用條件

AND、OR、NOT分別對應且、或、非

=,!=,<>分別對應等於、不等於、不等於

between and一起用,例如查詢時where age between 15 and 20;表示查詢年齡在15到20之間的

in, not in,分別表示包含、不包含

查詢時也可以接受正則表示式,例如_表示一個通用字元,%可以表示任意個字元,但是需要用到like

where name like '__a'; 表示誰的name是三個字元,並且第三個是a

where name like '%a'; 表示誰的name中含有a在最後一個

對於判斷是否為空需要使用 is NULL,值得一提的是沒有判斷NULL相等的

增刪改

insert into student (ID, `name`, age, sex) values (1005, '哈哈', 19, '未知');# insert into插入 列可以省略表示全部插入
insert into test values # 批量插入 這裡省略了指定列,所以表示全部插入,每一行的資料都要寫全
(001, 'zhangshan', 18, 123),# 用,號隔開,最後一個不要加,
(002, 'wangwu', 19, 234),
(003, 'lisi', 20, 345);

update test set `name` = '哈哈' where id = 3;# update修改單個欄位,可以配合where使用
update test set `name` = '哈哈', age = 666 where id = 3;# 修改多個欄位

delete from test where id = 3;#delete刪除,如果不指定where會全部刪除