1. 程式人生 > >MySQL筆記(一)

MySQL筆記(一)

MySQL是目前最流行的關係型資料庫管理系統之一,它是由MySQL AB公司開發、釋出並支援。MySQL是一個跨平臺的開源關係型資料庫管理系統,被廣泛地應用在internet上的中小型網站開發中。相比於其他大型資料庫管理系統(如Oracle、DB2、SQL Server等),MySQL規模小、功能有限,但它體積小、速度快、成本低。且它提供的功能對稍微複雜的應用來說已經夠用了。

MySQL內部有多個數據庫,每個資料庫裡可以有多個表格,每個表格由行和列組成。所以進入資料庫進行相應操作流程如下:1、登入mysql使用者    2、進入指定資料庫   3、對指定表格操作

資料庫命令不分大小寫,一般都是用大寫,本人為了更好理解命令列的意思,均採用小寫。進入MySQL後的每次命令都要在後面加上分號。

使用者

  • 進入mysql
mysql -u賬號 -p密碼
  • 退出:\q
  • 建立使用者
create user '賬號'@'%' identified by '密碼';
  • 給新建立的使用者賦予許可權
grant all on *.* to '賬號'@'%';
  • 使許可權更改後立即生效
flush privileges;

資料庫

  • 檢視當前資料庫
select database();
  • 展示所有資料庫
show databases;
  • 建立資料庫
create database [if not exists] database_name;
  • 刪除資料庫
drop database [if exists] database_name;
  • 進入資料庫
use database_name;

表格

  • 檢視所有表格
show tables;
  • 建立表格
create table [if not exists] table_name(欄位名 型別[,欄位名 型別]);
  • 刪除表格
drop table table_name;
  • 查看錶結構
desc table_name;或者show create table table_name;
  • 增   沒寫欄位名時,預設給所有欄位都增添值。
insert into table_name([欄位名,欄位名]) value(欄位值);#一次性插入一行
insert into table_name([欄位名,欄位名]) valyes(欄位值),[,(欄位值),(欄位值)];#一次性插入多行

insert into table_name set 欄位名 = 欄位值,欄位名 = 欄位值;
  • 刪   where語句後接一個條件
delete from table_name [where 欄位名 = 欄位值];
uodate table_name set 欄位名=  欄位值 [where 條件];
select * from table_name;#檢視一個表的所有資料
select 欄位名  from table_name;#檢視一個表的指定欄位名的所有值

表約束

  • 非空約束(not null):保證在增添資料時,指定的欄位名的值非空,否則會報錯。下面建立了一個含有兩個非空約束欄位的表格。
create table table_name(id int not null,name varchar(20) not null);
  • 唯一約束(unique key):保證指定欄位名下的值都是唯一的,不能有重複。
create table table_name(id int unique key,name varchar(20) not null);
  • 主鍵約束(primary key):保證指定欄位名下的值是非空且唯一,它的作用是可以唯一標識一條資料,每張表裡只能有一個主鍵,當表裡沒有指定主鍵時,第一個出現非空且唯一的列被當成主鍵。
create table table_name(id int primary key,name varchar(20) not null);
  • 自增長約束(auto_increment):自動編碼,一般與主鍵組合使用,預設情況下起始值為1,每次增量為1,也可自己設定起始值。
create table table_name(id int unique key auto_increment [=起始值],name varchar(20) not null);
  • 預設約束(default):給指定欄位設定一個預設值,插入資料時,若沒有給這個欄位賦值,則自動使用預設值。
create table table_name(age int not null default 18);
  • 外來鍵約束(foreign key):保持資料的一致性,完整性,實現表格間的三種關係,三種關係在下面會有介紹。
foreign key(本表的欄位名) references 其他表的表名(其他表的欄位名);

有時一個欄位名不能充當主鍵,但兩個欄位名聯合就可以,這時可以設定一個聯合主鍵。

primary key(欄位名,欄位名)

表關係

  1. 一對一:這時用外來鍵方式將兩個表的主鍵關聯。
  2. 一對多:建立一個欄位名,用外來鍵方式將之與另一表的主鍵相關聯。
  3. 多對多:建立一箇中間表,用兩次外來鍵的方式分別與兩張表的主鍵相關聯。

修改表結構

  • 增加欄位名 : 其中位置有first(表示放在第一列)和after,after後跟欄位名,表示放在指定欄位名的後一列。
alter table table_name [欄位名][型別][位置];
  • 刪除欄位名 
alter table table_name drop 欄位名;
  • 改:改有三種,分別是改資料型別、欄位名、表名。
alter table table_name modify 欄位名 型別;#改資料型別
alter table table_name change 欄位名 新欄位名 型別;#改欄位名
alter table 原表名 rename 新表名;