建立web伺服器一般是由LAMP(linux:作業系統、Apache:http伺服器軟體、MySQL:資料庫軟體和PHP:(有時也是指Perl 或 Python) 的第一個字母)組合起來的。
元件分析:
Linux
Linux 是免費開源軟體,這意味着源代碼可用的作業系統。
Apache
Apache 是使用中最受歡迎的一個開放源碼的WEB伺服器軟體。
MySQL
MySQL 是多線程、多使用者的SQL資料庫管理系統。
PHP,(Perl 或 Python )
PHP 是一種程式設計語言最初設計生産動态網站。
PHP 是主要用于伺服器端的應用程式軟體。Perl 和 Python 類似。
聯系:
建立一台WEB伺服器,需要有Apache軟體,而php是挂在apache底下執行的一個子產品,而我們要用網頁的php程式程控MySQL時,php就得要支援MySQL的子產品。
是以我們配置一台web伺服器需要的軟體主要有:
httpd(提供Apache主程式)
mysql(MySQL用戶端程式)
mysql-server(MySQL伺服器端程式)
php(php主程式含給apache使用的子產品)
php-mysql(提供給php程式讀取MySQL資料庫的子產品)
這裡我們主要介紹下web伺服器中mysql的用法。
MySQL:
資料庫其實是一種特殊格式的檔案,這種檔案必需要通過一個特殊的接口(資料庫軟體)來進行讀寫。
開源的資料庫中,MySQL在性能、穩定性和功能上是首選,可以達到百萬級别的資料存儲,網站初期可以将MySQL和Web伺服器放在一起,
但是當通路 量達到一定規模後,應該将MySQL資料庫從Web Server上獨立出來,在單獨的伺服器上運作,同時保持Web Server和MySQL伺服器的穩定連接配接。
資料庫模型分類:
層次模型
網狀模型
關系模型(實體-關系模型)
對象-關系模型
非關系模型
關系模型是目前最常用的
MySQL的資料類型:
數值型:精确數值型,整型,近似數值型(浮點型)
其中整型包括(tinyint smallint mediumint int(integer) )
近似數值型也包括(單精度浮點型 fioat 雙精度浮點型 double)
字元型:
字元( char(length):不區分大小寫 varchar(length) 可以變化 character set :字元集 collate:排序規則 區分字母大小寫:binary(length) varbinary(length))
多字元:(text:不區分大小寫 tinytext text midiumtext longtext blob等)
隻要是字元,都有字元集和排序規則
内部類型(enum :枚舉 定義了什麼,隻能存什麼 set:定義了的字元,可以組合用)
日期時間型:(日期:date 時間:time 日期時間:datetime 年:year)
類型通常還有修飾符:unsigned (無符号的)
注:這裡隻列出一部分,想要知道更多的類型,可以網上搜尋下哦
MySQL中對資料庫操作的一些指令:
1、資料庫對象操作:
建立 create
修改 alter
删除 drop
我們稱其為DDL:database defining language 資料庫定義語言
2、對表的操作:
添加 insert into
删除 delete
修改 update
查詢 select
這些語言我們稱其為DML: database manipulate language 資料庫操作語言
3、對使用者,角色的控制:
授予權限 grant
取消權限 revoke
這些操作我們稱其為DCL:database conctrolling language 資料庫控制語言
注:(以上這寫指令是不區分大小寫的)
下面以一個執行個體來解析下資料庫這些指令的用法:
要想使用MySQL中這些指令,首先在我們系統上要有和MySQL相關的一些rpmbao
這裡我們使用yum安裝mysql.i386 、mysql-server.i386(基于Red Hat Enterprise Linux Server release 5.8 )這裡yum安裝就不多做介紹了
使用service mysqld start 啟動資料庫服務,
使用mysql指令進入資料庫系統,便可進行進一步的操作了:
mysql>drop database if exists mydata; #如果存在mydata則删除
mysql> create database mydata; #建立庫mydata
mysql> use mydata; #打開庫mydata
Database changed
- mysql> use mydata;
- Database changed
- mysql> create table data (ID int unsigned,Name char(20),Age int unsigned,Gender enum ('Female','Male'),Course char(30)); //建表結束
- Query OK, 0 rows affected (0.01 sec)
- 注:在建表中(1)data将ID設為長度為整型的數字字段:并且是無符号的
- (2)将NAME設為長度為20的字元字段
- (3)将Age設為整型的數字字段而且是無符号的
- (4)将Gender設為和Male或Female比對的字元
- (5)課程設定長度為30的字元字段。
mysql> desc data; #檢視定義的表
- +--------+-----------------------+------+-----+---------+-------+
- | Field | Type | Null | Key | Default | Extra |
- +--------+-----------------------+------+-----+---------+-------+
- | ID | int(10) unsigned | YES | | NULL | |
- | Name | char(20) | YES | | NULL | |
- | Age | int(10) unsigned | YES | | NULL | |
- | Gender | enum('Female','Male') | YES | | NULL | |
- | Course | char(30) | YES | | NULL | |
- +--------+-----------------------+------+-----+---------+-------+
- 5 rows in set (0.00 sec)
#以下為在表中插入字段
mysql> insert into data values (1, 'aa', 24, 'Male', 'math');
Query OK, 1 row affected (0.00 sec)
mysql> insert into data values (2, 'bb', 20, 'Female', 'language');
按照以上方式插入5條資料資訊
mysql> select * from data; #完成後,檢視表裡的内容:
- mysql> select * from data;
- +------+------+------+--------+----------+
- | ID | Name | Age | Gender | Course |
- +------+------+------+--------+----------+
- | 1 | aa | 24 | Male | math |
- | 2 | bb | 20 | Female | language |
- | 3 | cc | 21 | Male | English |
- | 4 | dd | 22 | Male | history |
- | 5 | ee | 25 | Female | Chinese |
- +------+------+------+--------+----------+
- 5 rows in set (0.00 sec)
- 以上就是自己定義的資料的資訊了哦。。
對表中資料的操作(定義表):
update tb_name set colum_name=value where condition; #更改某一字段的屬性(限制條件)
一般來講,where 中的condition指的是對表中某字段或某些字段做判定(等值比較,或正規表達式比對,通配符比對)
- eg:
- mysql>update data set Course='math' where ID=2;#将ID号為2的人選的課程更改為math
- Query OK, 1 row affected (0.00 sec)
- Rows matched: 1 Changed: 1 Warnings: 0
- mysql> select * from data;
- +------+------+------+--------+---------+
- | ID | Name | Age | Gender | Course |
- +------+------+------+--------+---------+
- | 1 | aa | 24 | Male | math |
- | 2 | bb | 20 | Female | math |
- | 3 | cc | 21 | Male | English |
- | 4 | dd | 22 | Male | history |
- | 5 | ee | 25 | Female | Chinese |
- +------+------+------+--------+---------+
- 5 rows in set (0.00 sec)
delete from tb_name where condition; #從表中删除符合某種條件的資料
- eg:
- mysql> delete from data where Age < 22; #将年齡小于22的所有人删除
- Query OK, 2 rows affected (0.00 sec)
- mysql> select * from data;
- +------+------+------+--------+---------+
- | ID | Name | Age | Gender | Course |
- +------+------+------+--------+---------+
- | 1 | aa | 24 | Male | math |
- | 4 | dd | 22 | Male | history |
- | 5 | ee | 25 | Female | Chinese |
- +------+------+------+--------+---------+
- 3 rows in set (0.00 sec)
查詢:
select 字段 from 表 [where condition]
- mysql> select Name ,Age ,ID from data where Gender='Male';
- #查找性别為男的姓名、年齡和ID号。
- +------+------+------+
- | Name | Age | ID |
- +------+------+------+
- | aa | 24 | 1 |
- | dd | 22 | 4 |
- +------+------+------+
- 2 rows in set (0.00 sec)
對字段進行操作:
alter table tb_name drop 字段名稱; #删除字段
- mysql> alter table data drop Age; #删除年齡這個字段
- Query OK, 3 rows affected (0.02 sec)
- Records: 3 Duplicates: 0 Warnings: 0
- mysql> select * from data;
- +------+------+--------+---------+
- | ID | Name | Gender | Course |
- +------+------+--------+---------+
- | 1 | aa | Male | math |
- | 4 | dd | Male | history |
- | 5 | ee | Female | Chinese |
- +------+------+--------+---------+
- 3 rows in set (0.01 sec)
alter table tb_name add 字段名 類型 [{first|after column_name}]; #添加字段
- mysql> alter table data add class int unsigned after ID;
- #在ID 号之後添加一個CLASS 字段
- Query OK, 3 rows affected (0.05 sec)
- Records: 3 Duplicates: 0 Warnings: 0
- mysql> select * from data;
- +------+-------+------+--------+---------+
- | ID | class | Name | Gender | Course |
- +------+-------+------+--------+---------+
- | 1 | NULL | aa | Male | math |
- | 4 | NULL | dd | Male | history |
- | 5 | NULL | ee | Female | Chinese |
- +------+-------+------+--------+---------+
- 3 rows in set (0.00 sec)
alter table tb_name change old_name new_name datatype; #更改字段名
alter table tb_name modify column_name datatype; #更改一個字段的屬性
(可以按照上面的例子自己嘗試一下哦)
資料控制語言DCL:
grant privileges on db_name to 'username'@host'identified by 'passwd'; #賦予某使用者什麼權限
- mysql> grant all on mydata.data to 'abc'@'172.16.%.%' identified by 'redhat';
- Query OK, 0 rows affected (0.00 sec)
- mysql> flush privileges;
- #将mydata庫中表data的所有權限授予172.16/24這個網段内的abc使用者,
- 并給使用者指定密碼為redhat
- #讓建立使用者和授權立即生效:flush privileges;
revoke privileges on db_name.tb_name to 'username'@'host'; #從使用者收回在資料庫對象上的權限
- mysql> revoke delete on mydata.data from 'abc'@'172.16.%.%';
- #從abc使用者上收回對資料庫delete的權限
- Query OK, 0 rows affected (0.00 sec)
- mysql> flush privileges;
驗證效果,再打開一台主機(172.16.10.1),連接配接該資料庫,進行操作。
遠端連接配接有些指令選項:
-h:指定伺服器位址
-u:指定使用者名
-p:讓使用者輸入密碼
- [root@www ~]# mysql -h 172.16.9.1 -u abc -p; #以使用者abc的身份連接配接伺服器上的資料庫
- Enter password:
- Welcome to the MySQL monitor. Commands end with ; or \g.
- Your MySQL connection id is 12
- Server version: 5.0.77 Source distribution
- Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
- mysql> mysql> select * from data; #可以查詢的哦!!
- +------+-------+------+--------+---------+
- | ID | class | Name | Gender | Course |
- +------+-------+------+--------+---------+
- | 1 | NULL | aa | Male | math |
- | 4 | NULL | dd | Male | history |
- | 5 | NULL | ee | Female | Chinese |
- +------+-------+------+--------+---------+
- 3 rows in set (0.00 sec)
- mysql> delete from data where ID=1;
- ERROR 1142 (42000): DELETE command denied to user 'abc'@'172.16.10.1' for table 'data'
- #在這裡就會顯示不允許delete操作的提示了!!