標籤:
資料庫簡介
所謂安裝資料庫伺服器,只是在機器上裝了一個資料庫管理程式,這個管理程式可以管理多個資料庫,一般開發人員會針對每一個應用建立一個資料庫。
為儲存應用中實體的資料,一般會在資料庫建立多個表,以儲存程式中實體的資料。
資料庫伺服器、資料庫和表的關係:
資料在資料庫中的儲存方式:
SQL文法
建立資料庫語句:CREATE DATABASE [IF NOT EXISTS] database_name [create_specification [, create_specification] ...];
create_specification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
CHARACTER SET:指定資料庫採用的字元集
COLLATE:指定資料庫字元集的校對規則
顯示資料庫語句: SHOW DATABASES;
顯示資料庫建立語句:SHOW CREATE DATABASE db_name;
資料庫刪除語句:DROP DATABASE [IF EXISTS] db_name ;
修改資料庫字元集及校對規則語句:ALTER DATABASE [IF NOT EXISTS] db_name [alter_specification [, alter_specification] ...]
alter_specification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
備份資料語句(準備好資料庫及表格後在Windows命令視窗下執行):mysqldump -u 使用者名稱 -p 資料庫名 > 檔案名稱.sql
恢複資料庫語句(備份完後資料庫並刪除資料庫後): 方式1:(1)建立庫:create database 資料庫名; (2)選擇建立的資料庫use database; (3)Source 檔案名稱.sql
方式2:mysql -uroot -p mydb1<c:\test.sql (window命令)
建立表語句(注意:建立表前,要先使用use db語句使用庫):
CREATE TABLE table_name
( field1 datatype,
field2 datatype,
field3 datatype,
)character set 字元集 collate 校對規則
field:指定列名 datatype:指定列類型
建立表時,要根據需儲存的資料建立相應的列,並根據資料的類型定義相應的列類型,MySQL常用資料類型如下:
修改表語句(ALTER TABLE ):
追加一列:ALTER TABLE table-name ADD (column datatype [DEFAULT expr] [, column datatype]...);
修改一列:ALTER TABLE table-name MODIFY (column datatype [DEFAULT expr][, column datatype]...);
刪除一列:ALTER TABLE table-name DROP (column);
修改表的名稱:Rename table 表名 to 新表名
修改表的字元集:alter table student character set utf8;
資料庫CRUD語句
Insert語句: INSERT INTO table [(column [, column...])] VALUES (value [, value...]);
(1)插入的資料應與欄位的資料類型相同。
(2)資料的大小應在列的規定範圍內,例如:不能將一個長度為80的字串加入到長度為40的列中。
(3)在values中列出的資料位元置必須與被加入的列的排列位置相對應。
(4)字元和日期型資料應包含在單引號中。
(5)插入空值,不指定或insert into table value(null)
Update語句: update tbl_name SET col_name1=expr1 [, col_name2=expr2 ...] [WHERE where_definition]
(1)UPDATE文法可以用新值更新原有表行中的各列。
(2)SET子句指示要修改哪些列和要給予哪些值。
(3)WHERE子句指定應更新哪些行。如沒有WHERE子句,則更新所有的行。
Delete語句: delete from tbl_name [WHERE where_definition]
(1)如果不使用where子句,將刪除表中所有資料。
(2)Delete語句不能刪除某一列的值(可使用update)
(3)使用delete語句僅刪除記錄,不刪除表本身。如要刪除表,使用drop table語句。
(4)同insert和update一樣,從一個表中刪除記錄將引起其它表的參照完整性問題,在修改資料庫資料時,頭腦中應該始終不要忘記這個潛在的問題。
(5)刪除表中資料也可使用TRUNCATE TABLE 語句,它和delete有所不同,參看mysql文檔。
Select語句:SELECT [DISTINCT] *|{column1, column2. column3..} FROM table;
(1)Select 指定查詢哪些列的資料。
(2)column指定列名。
(3)*號代表查詢所有列。
(4)From指定查詢哪張表。
(5)DISTINCT可選,指顯示結果時,是否剔除重複資料
(6)在select語句中可使用運算式對查詢的列進行運算:SELECT *|{column1|expression, column2|expression,..} FROM table;
(7)在select語句中可使用as語句:SELECT column as 別名 from 表名;
使用where子句,進行過濾查詢,在where子句中經常使用的運算子:
使用order by 子句排序查詢結果:SELECT column1, column2. column3..FROMtable order by column asc|desc
(1)Order by 指定排序的列,排序的列即可是表中的列名,也可以是select 語句後指定的列名。
(2)Asc 升序、Desc 降序
(3)ORDER BY 子句應位於SELECT語句的結尾。
Count(列名)返回某一列,行的總數:Select count(*)|count(列名) from tablename [WHERE where_definition]
Sum函數返回滿足where條件的行的和: Select sum(列名){,sum(列名)…} from tablename [WHERE where_definition]
AVG函數返回滿足where條件的一列的平均值: Select avg(列名){,avg(列名)…} from tablename [WHERE where_definition]
Max/min函數返回滿足where條件的一列的最大/最小值: Select max(列名) from tablename [WHERE where_definition]
使用group by 子句對列進行分組: SELECT column1, column2. column3.. FROM table group by column
表的約束
定義主鍵約束 : primary key (不允許為空白,不允許重複)
刪除主鍵:alter table tablename drop primary key ;
定義主鍵自動成長: auto_increment
定義唯一約束:unique
定義非空約束:not null
定義外鍵約束:constraint ordersid_FK foreign key(ordersid) references orders(id),
MySQL字元集
mysql有六處使用了字元集,分別為:client 、connection、database、results、server 、system。
client是用戶端使用的字元集。
connection是串連資料庫的字元集設定類型,如果程式沒有指明串連資料庫使用的字元集類型就按照伺服器端預設的字元集設定。
database是資料庫伺服器中某個庫使用的字元集設定,如果建庫時沒有指明,將使用伺服器安裝時指定的字元集設定。
results是資料庫給用戶端返回時使用的字元集設定,如果沒有指明,使用伺服器預設的字元集。
server是伺服器安裝時指定的預設字元集設定。
system是資料庫系統使用的字元集設定。
SQL入門