數據完整性
一個數據庫就是一個完整的業務單元,可以包含多張表,數據被存儲在表中
在表中爲了更加準確的存儲數據,保證數據的正確有效,可以在創建表的時候,爲表添加一些強制性的驗證,包括數據字段的類型、約束
數據類型
可以通過查看幫助文檔查閱所有支持的數據類型
使用數據類型的原則是:夠用就行,儘量使用取值範圍小的,而不用大的,這樣可以更多的節省存儲空間
常用數據類型如下:
整數:int,bit
小數:decimal
字符串:varchar,char
日期時間: date, time, datetime
枚舉類型(enum)
特別說明的類型如下:
decimal表示浮點數,如decimal(5,2)表示共存5位數,小數佔2位
char表示固定長度的字符串,如char(3),如果填充'ab'時會補一個空格爲'ab '
varchar表示可變長度的字符串,如varchar(3),填充'ab'時就會存儲'ab'
字符串text表示存儲大文本,當字符大於4000時推薦使用
對於圖片、音頻、視頻等文件,不存儲在數據庫中,而是上傳到某個服務器上,然後在表中存儲這個文件的保存路徑
更全的數據類型可以參考http://blog.csdn.net/anxpp/article/details/51284106
約束
主鍵primary key:物理上存儲的順序
非空not null:此字段不允許填寫空值
惟一unique:此字段的值不允許重複
默認default:當不填寫此值時會使用默認值,如果填寫時以填寫爲準
外鍵foreign key:對關係字段進行約束,當爲關係字段填寫值時,會到關聯的表中查詢此值是否存在,如果存在則填寫成功,如果不存在則填寫失敗並拋出異常
說明:雖然外鍵約束可以保證數據的有效性,但是在進行數據的crud(增加、修改、刪除、查詢)時,都會降低數據庫的性能,所以不推薦使用,那麼數據的有效性怎麼保證呢?答:可以在邏輯層進行控制
#創建數據庫
#後面的charset是編碼的意思,一般使用utf8
create database 數據庫名 charset=utf8;
#使用數據庫
use 數據庫名;
#創建表
create table 表名(
在這裏寫每一個字段的創建及其要求
例如:
id int unsigned primary key auto_increment not null,
name varchar(20) default '',
age tinyint unsigned default 0,
height decimal(5,2),
gender enum('男','女','中性','保密') default '保密',
cls_id int unsigned default 0,
is_delete bit default 0
);
#插入數據
insert into 表名 value
(這裏根據你創建的表中的字段進行填寫,注意你在設置表的時候已經對字段的類型進行了要求(int型,double型等等),那麼在這裏插入數據的時候要注意)
每一行的數據用()包括起來,兩條數據之間使用 , 進行分割,結尾處使用;完結。
#查詢字段
select 列的名字 from 列所在的表的名字。
列的名字可以用*代替 意爲查詢該表下的所有字段
查詢中難免會出現重複的數據,如果你不想在查詢結果中看到這些重複數據的話,可以在查詢語句的末尾加上distinct 對結果進行篩選
如果你想對錶中的數據的某一個字段的值的範圍進行篩選那麼需要用到where關鍵字
例如你想查詢班上同學考試分數 數學分數超過75分的同學
select * from score where math>75
同時,sql支持多個選擇項進行查詢,
例如你想查詢班上同學考試分數 數學分數超過75分並且英文超過80的同學
select * from score where math>75 and English>80
當然查詢還有多表的聯查,這個我會在後續的博客中更新
以上的查詢方式針對於我已經知曉了我要查詢的條件是什麼
但如果要查詢的是某一個學生的名字,但是我目前記不清出他叫什麼,只是記得他的姓。針對於這種情況我們用的一般是模糊查詢
like
%表示任意多個任意字符
_表示一個任意字符
我們會用到like % _ 等來配合我們的查詢語句
例如我們要在學生表中查詢一個姓王的學生,他可能叫王大錘,也可能叫王錘,所以在這裏我們使用%來查詢
select * from students where name like '王%';
再例如我們要在學生表中查詢一個姓王的學生,他可能叫王大錘,也可能叫王小錘,所以在這裏我們使用_來查詢
select * from students where name like '王_錘';
數據庫的創建以及查詢1
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.