數據庫是一個“管理系統”,我們使用數據庫必須先“登錄”數據庫系統。
登錄數據庫系統的方法為:
1,打開cmd命令行窗口
2,輸入登錄命令如下:wamp安裝目錄\bin\mysql\mysql5.5.8\bin\mysql.exe -hlocalhost -uroot –p
a) –h後是“數據庫服務器名字”,這裡是localhost
b) –u後是登錄的“用戶名”,這裡是默認的“root”
c) –p後面本應該是密碼,但建議不寫,不寫,則系統會在下一步詢問。
3,進入數據庫系統之後,先執行命令:set names gbk; 這樣才可能不出現亂碼問題。
4,進入數據庫之後,所有命令都需要使用分號結束,表示一條命令;而且命令都是一條一條執行的。
5,數據庫中的語句不區分大小寫,仍然建議大家按固定的大小寫模式來使用。
創建數據庫:
create database 數據庫名 charset utf8;
刪除數據庫:
drop database 數據庫名;
顯示所有數據庫:
show databases;
進入(使用)某個數據庫
use 數據庫名;
——凡是要對某個數據庫中的表或其中的數據進行操作,都必須先“進入”該數據庫。
整數類型:tinyint, smallint, mediumint, int, bigint
浮點數類型:float, double
字符類型:
char: 固定長度的字符類型,使用的時候需要指定一個長度,其長度最多255。自己指定的長度表示該數據必須存儲這麼長(不多也不少)。通常只用於長度固定的數據,比如郵政編碼,手機號。
varchar: 可變長度的字符類型,使用的時候需要指定一個長度,其長度最多6萬多。自己指定的長度表示該數據最多能存這麼多,但可以更少(不可以多出此指定值)
——在數據庫中,字符類型使用單引號來進行表示,比如:’abc’, ‘102033’, ‘13910581085’
時間類型:
date:表示一個日期
time:表示一個時間
datetime:表示一個日期時間
——在應用中,如果一個時間是“直接時間”(就是用文字字符表達的時間),則需要加上單引號來表示,比如: ‘2013-10-7’ ’11:57:58’ ‘2013-10-7 11:57:58’
創建數據表:
形式:create table 表的名字 (字段名1 類型1 [附加屬性1],字段名2 類型2 [附加屬性2],…… );
含義:其實所謂創建表,也就是相當於設定一個表中的若干個字段。
類型就是前面介紹的數據類型的單詞
附加屬性有如下:
auto_increment: 表示該字段的值會“自動增長”,用於整數類型的字段。
primary key: 表示該字段的數據不會重復(不應重復),就是所謂的“主鍵”,作用是用來唯一標識一行數據以跟別的行相互區分——通常跟auto_increment聯合使用。
not null: 表示該字段的值不能為空值(null)
default 某值: 表示用於設定一個字段的默認值。則如果寫入數據的時候沒有對該字段寫入,則會使用此處設定固定值來代替——有點類似php中的默認參數的作用。
——以上4個屬性可以並列出存在於一個字段上,相互之間直接空格隔開就可以了。
舉例:創建一個用戶表,其中包括順序號,姓名,郵編,繳費,年齡,入學日期
create table userInfo(id int auto_increment primary key, userName varchar(10), postcode char(6), fee float, age int, regDate date );
刪除數據表:
drop table 表名;
顯示當前數據庫中的所有表:
show tables;
顯示一個表的結構(定義,外形):
desc 表名;
語法形式:
insert into 表名 (字段名1,字段名2, ….. ) values (值1,值2,….. ) ;
含義:
網指定的表中的指定字段(單元格)中放入指定的那些對應的值作為一行數據——我們插入數據總是以“行”為單位的,即每次必定是完成一行數據的插入工作,即使有些字段沒有給值。
注意事項:
1,我們可以只指定該表的部分字段插入數據,則其余沒有指定值的字段要麼有默認值,要麼有自增長值,要麼可以不要值(即可為空)
2,我們指定的字段不必完全按照數據表中的實際字段順序寫出,而是可以任意。
3,在上述形式中,字段和值的個數相等且必須一一對應!
4,通常自增長類型的字段不應該人為插入數據。
5,注意,如果值是字符類型或時間類型的直接值,則需要使用單引號。
舉例:
insert into userInfo3(userName, postcode, age, fee, regDate)values(‘韓’,’102030’,22,100.0,’2014-9-5’);
insert into userInfo3(userName, age, fee, regDate)values('韓',22,100.0,'2014-9-5');
形式:
delete from 表名 【 where 條件 】;
含義:
刪除指定表中的某些行——根據給出的條件刪除。
注意事項:
1, 刪除都是以“行”為單位的,即一刪就刪一行或多行。
2, 通常刪除工作都必須加上where條件,否則會將所有數據刪除(極少有此需求)
3, where條件可以使用若干項組合條件,每個條件又都可以任意使用字段中的數據進行判斷
4, 多個條件是通過邏輯運算符進行組合的,類似這樣:條件1 and 條件2 or 條件3
a) 邏輯運算符and: 表示“並且”,跟&&一樣。
b) 邏輯運算符or: 表示“或者”,跟||一樣
c) 邏輯運算符not: 表示“非”,跟!一樣
5, 單個條件的常見用法(舉例)
a) id=3; //id這個字段的值為3的那條(那些)數據行
b) age=22; // age這個字段的值為22的那條(那些)數據行
c) id > 6; //id這個字段的值大於6的所有數據行
d) id >=6; //………
e) userName=’韓學禹’ //
f) postcode = ‘000000’
g) regDate = ‘2013-9-5’
6, 一些組合條件:
a) where id > 6 and id < 10; //對應id大於6並且小於的那些數據行
b) where id >=3 and age = 25;
c) where id <=5 and postcode=’000000’ and age = 22; //3個條件,必須同時滿足
d) where postcode=’000000’ or age = 22; //2個條件,滿足其中之一就可以
舉例:
delete from userInfo3 where id <=5 and postcode='000000' and age = 22;
語法形式:
update 表名 set 字段名1=值1, 字段名2=值2, …… 【 where 條件 】;
含義:
修改指定表中的指定的某些字段的值——根據where條件。
注意事項:
1, 我們也要理解為:修改也是以“行”為單位的,一次修改一行或多行(根據條件滿足的行的數量)
2, 雖然是以“行”為單位,但我們在語句可以指定只修改其中的某些字段。
3, 修改的字段順序沒有規定,可以自己設定,個數也沒有規定,自己設定。
4, 值的書寫形式同插入語句(insert語句)
5, where條件的含義和用法同delete語句的where。
舉例:
update userInfo3 set userName='小寒', postcode='123456' where id=3;
update userInfo3 set postcode='123123' where userName='禹禹';
語法形式:
select 字段名1,字段名2,…. from 表名 【 where 條件 】【 order by 排序設定 】【limit 數量限定 】
含義:
select語句是指從數據庫中“取出”(查出/找出)若干行數據,但注意,此取出並不會影響數據庫本身,也就是說,數據庫中的數據並會因為select語句而減少數據——這也反襯出,前面insert,update,delete語句是會影響數據的數據本身的,即會改變數據庫!
注意事項:
1, select之後列車的字段名表示要從表中取出的那些字段,可以隨意取任何項。但使用一個“*”表示取出該表中的所有字段。
2, where條件的使用和含義跟前面仍然一樣。
3, order by語句用於將前面條件下取出的數據以指定的方式進行排序,排序語法如下:
a) order by 字段名 排序方式;
b) 排序方式只有兩種:正序(ASC)和倒序(DESC),其中asc其實可以省略。
4, limit數量限定語句是將前面條件下並設定的排序方式下來限制只取出其中的某些行!,語法如下:
a) limit 起始行號,需要的數量
b) 行號類似於js中的數組的下標,一定是從0開始的連續的數字。
5, 上述where子句,order by子句 limit子句均可以任意使用或省略,但必須按上述順序出現。
舉例:
select * from userInfo3;
select * from userInfo3 where id>3;
select id, userName, fee from userInfo3 where id>3;
select id, fee, postCode, regDate from userInfo3 where age > 20
select id, fee, postCode, regDate from userInfo3 where age > 20 order by id desc;
select * from userInfo3 order by age;
select * from userInfo3 order by regDate;
select * from userInfo3 where id > 3 order by regDate desc;
select * from userInfo3 where id > 3 order by regDate desc limit 0,2;
select * from userInfo3 where id > 3 order by regDate desc limit 2,2;