MySQL數據庫學習

1、什麼是數據庫

數據庫是保存有組織的數據的容器,通常是一個文件或一組文件(一個有組織的數據文件庫)

2、數據庫管理軟件

數據庫是放在文件中,而管理該數據庫的軟件稱爲數據庫管理軟件(DBMS),對數據庫的管理是通過數據庫管理軟件完成的。數據庫管理軟件主要有,MySQL,SQLSERVER。

3、mysql中的表(主鍵以及外鍵)

  • mysql數據庫的表是一個二維表,由一個或者多個數據構成,一個表由列和行組成,列是一個表的字段,比如一個顧客表中,一個列存儲着顧客的編號,另一個列存儲着顧客的姓名,表中的一行便是一個數據,唯一標識表的列被成爲主鍵(注意唯一性),這個主鍵列中的行值被成爲主鍵值。
  • 列A存於表1和表2中,如果列A在表1中是主鍵,那麼列A稱爲表2的外鍵,外鍵表示了兩個表之間的相連關係。

4、mysql的數據類型
數據類型指的是列的數據類型,有三種,數值類,字符串類,日期時間類。
4.1 數值類的列類型包括整形和浮點型。

整形:
TINYINT:1字節,非常小的整數,帶符號:-128~127,不帶符號:0~255
SMALLINT:2字節小整數,帶符號:-32768~32767,不帶符號:0~65535
MEDIUMINT:3字節中等大小整數,帶符號:-8388608~8388607,不帶符號:0~4294967295
IN:4字節,標準整數。
BIGINT:8字節,大整數。


浮點型:
FLOAT:4字節,單精度浮點數。
DOUBLE:8字節,雙精度浮點數。
DECIMAL:M+2字節以字符串形式表示的浮點數。

4.2 字符串的列類型包括整形和浮點型。
字符串可以用來表示任何一種值,是最基本的類型之一。

CHAR[(M)] :M字節,M字節
VARCHAR[(M)]:M字節,L+1ZHIJIE1
TINYBLOD,TINYTEXT:2^8-1字節 L+1字節
BLOB,TXET:2^16-1字節 L+2字節
MEDIUMBLOB,MEDIUMTEXT:2^24-1字節 L+3字節
LONGBLOB,LONGTEXT:2^32-1字節 L+4字節
ENUM(‘value1’,‘value2’,….):65535成員 1或2字節
SET(‘value1’,‘value’,…):64成員 1,2,3,4或者8字節

CHAR和VARCHAR是最常用的兩種字符串類型,CHAR是固定長度的,每個值佔用相同的字節,不夠的位數MySQL會在它的右邊用空格字符補足。VARCHAR是可變長度字符串,每個值佔用其剛好的字節數再加上一個用來記錄其長度的字節即L+1字節。

5、基本操作
這裏用的是navicat 8進行操作。cmd登陸的語句爲:mysql -u root -p

 >show database; //查看數據庫
 >create database mydb; //創建一個測試數據庫
 >show create database mydb; //查看創建的數據庫
 >use mydb; //切換mydb
 >show table; //查看mydb中的表 (顯然這裏是空的)
 >desc 表名; //查看錶的內容(desc=describe)
 >show status; //查看服務器的狀態
 >show grants; //查看數據庫用戶的權限
 >show errors; //查看mysql服務器的錯誤日誌
 >show warnings; //查看警告日誌
 >use mydb; //切換mydb

 //mydb中,創建一個表,noll指的是允許插入時不給值,not noll指的是帶值插入,auto_increment指的是本列每增加一行自動增加1。
 >create table student(
 >   id int not null auto_increment,
 >   name char(10) not null,
 >   primary key(id))
 >   engine = innodb;
 > drop table student;//刪掉這個表
 > rename table student to xuesheng; //表改名

 >show create table student; //查看創建的表
 >insert into student(id,name) values(0,'wanger'); //插入一條數據
 >select * from student;   //查看錶中的數據
 >alter table student add score int; //給表增加一個列
 >alter table student drop column score; //刪掉表中的一個列
 >alter table student change score sex char(10);//列改名
 >update student set name='zhangsan',score = 100 where id=0;//行改值
 >delete from student where id=0; //刪掉id=0這一行
 >drop database mydb //刪掉這個庫

6、數據庫查詢(查詢列之前需要注意切換到當前數據庫)
查找用select,注意查找只能查找列,*表示全部查找,列明表示全部查找。

 >select id from student;  //查詢單個列
 >select id,name from student;  //查詢多個列
 >select * from student;  //查詢所有的列
 >select distinct id from student;  //去掉這個列下面重複的行
 >select id from student limit n,m;  //查詢限定在第n行到第m行(從零開始的)

7、查詢結果排序(order by)

> select name from student oeder by id;   //選擇name下面所有的行,以id來排序(排序是以字母A到Z來排序)
> select name from student order by id desc; //默認查詢結果是升序,使用關鍵字desc可以實現降序
> //找到倒數第一個
> select name from student order by id desc limit 1;  //查找最後一個

8、查詢結果過濾(where)
數據庫中有大量的數據,具體查到某一行,或者某一列中選取特定的行就需要過濾。注意同時使用排序 order by 和 where 時,order by 要放到最後

>select name from student where id=0;//查詢name這一列過濾的條件是id=0

where 子句操作符

操作符 說明
= 等於
< 不等於
!= 不等於
< 小於
<= 小於等於
> 大於
>= 大於等於
between n and m 在n和m之間
null 無值,與零,空字符是不同的

組合操作字符,and / or,多條件以及組合條件,and的優先級大於or,組合時要用括號括起來,以免混亂。

 > select name from student where id>1 and scor>=80;//id大於1且分數大於等於80分
 > select name from student where id>1 or scor>=80; //id大於1或者分數大於等於80分的返回。
 > select name from student where (id>1 or id < 100 ) and scor>=80; //先括號再括號外面。

in 的條件操作
in表示括號內的每個條件都進行匹配,用逗號隔開。

select name from student where id in (0,1);//id取0和1.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章