1. 程式人生 > >mysql資料庫初級

mysql資料庫初級

一、資料庫

資料庫是是用來儲存資料的,資料庫就是一些具有特殊個格式和意義的資料檔案的集合。

相比於普通檔案資料庫的優點是:

  1. 讀寫速度極高
  2. 持久化儲存
  3. 對程式支援性很好,容易擴充套件
  4. 資料的有效性
1、資料庫管理系統(Database Mangement Systerm):

是為了管理資料庫而設計的軟體系統,主要包括三部分組成

  1. 資料庫檔案集合
  2. 資料庫客戶端
  3. 資料庫伺服器端
2、資料庫分類:

關係型資料庫(Relational Database Mangement Systerm):是建立在關係模型的基礎上的資料庫,藉助於集合代數等數學概念和方法來處理資料庫中的資料,本質上使用一張二維表來表示關係。

關係型資料庫中核心元素:

  • 資料庫(資料表的集合)
  • 資料表(資料行的集合)
  • 資料行(記錄)
  • 資料列(欄位)
3、SQL語句:

是作用是實現資料庫伺服器和客戶端之間的通訊,其表現形式就是有特定意義的字串.

注意: SQL語句不區分大小寫

SQL語句主要分為:

  • DQL:資料查詢語句,用於對資料進行查詢.如select
  • DML:資料操作語言,對資料進行增加,修改,刪除,如insert, update,drop
  • TPL:事務處理語言,對事務進行處理,包括:begin transcation,commit,rollback.
  • DCL:資料控制語言,進行授權和許可權回收,如grant,revoke
  • DDL:資料定義語言,進行資料庫,表的管理,如create
    ,drop

對於web程式設計師來講,重點是資料的crud(增刪改查),必須熟練編寫DQL、DML,能夠編寫DDL完成資料庫、表的操作,其它語言如TPL、DCL、CCL瞭解即可.

4、MYSQL資料庫的操作:
  • 安裝命令 sudo apt-get install mysql-server
  • 啟動命令 sudo service mysql start
  • 停止命令 sudo service mysql stop
  • 檢視命令 ps ajx|grep mysql

二MYSQL資料庫

   MYSQL主要有MyISAM與InnoDB兩個引擎,其主要區別如下: 1、InnoDB支援事務,而MyISAM不支援。這一點非常重要,事務是一種高階的處理方式。在一系列的資料操作(增、刪、改)中只要一處出錯就會回滾還原,而InnoDB可以。 2、MyISAM適用於查詢以及插入為主的應用,InnoDB適合查詢以及插入為主的應用。InnoDB適合頻繁的修改,以及涉及到安全性較高的應用。 3、InnoDB支援外來鍵,MyISAM不支援。 4、MyISAM是預設引擎,InnoDB需要指定。

三、資料型別和資料結構:

資料的完整性: 通過兩方面來實現,資料型別和資料結構.

1、資料型別: 影響著資料庫中儲存的資料所佔的型別約束,空間大小.

  • 只有型別符合要求的的資料才可以儲存,這樣保證了資料的完整性.
  • 使用資料庫型別的原則:夠用就行,淨量使取值範圍小的,而不是大的,這樣可以跟多的節省佔用的記憶體空間.

常用的資料型別:

  • 整數型: int bit

  • 小數: decimal(5,3) 表示有五位數字,其中小數位佔兩位

  • 字串: char(bit), varchar(bit), text

    bit是限制長度,char是不夠bit位用空格補全,而varchar是當bit沒用完時不補.

  • 日期時間: date, time, datetime,

  • 列舉 enum(選項1,選項2,…)只能寫入符合列舉括號中有的資料.

2、資料約束: 在資料型別的限定的基礎上新增額外的要求.

常見的資料約束的型別:

  • 主鍵: primary key 物理上的儲存順序
  • 非空: not null 此欄位不允許填空值
  • 唯一: unique 此欄位的值每一個記錄都不會有重複,是唯一的像身份證號.
  • 預設: default 如果不填寫此欄位的值,會填寫設定的預設值.
  • 外來鍵: foreign key

三、命令列客戶端SQL的使用

1、登入和退出資料庫

資料庫登入

mysql -uroot -p;
# 會提示輸入密碼, root是使用者名稱
mysql -uroot -pmysql;
# -p後面加上密碼,這樣不夠安全

退出資料庫

quit 或 exit 或 Ctrl + d;

2、資料庫的操作

檢視所有的資料庫

show databases;

使用資料庫

use 資料庫名;

檢視當前使用的資料庫

select database();

建立資料庫

create database 資料庫名字 charset=utf8;

刪除資料庫

drop database 資料庫名字;
# 刪庫要慎重

檢視當前使用資料庫的版本

select version();

3、表結構的操作

建立表結構

create table 表名(欄位名稱 資料型別 資料約束);
create table classes(
ID int(3) unsigned auto_increment primary key not null,
name varchar(12) not null
);

修改表結構

    alter table 表名 add 欄位名 資料型別;
    alter table classes add gender enum("男","女","保密");
    # 新增欄位
    
    alter table 表名 change 原名 新名 資料型別 資料約束;
    alter table classes change gender sex varchar(6) not null;
    # 修改欄位名 資料型別,資料結構
    
    alter table 表名 modify 欄位名 型別 約束;
    alter table classes modify name varchar(10) unique;
    # 修改表字段的資料型別,約束條件
    
    alter table 表名 drop 欄位名;
    alter table classes drop sex;
    # 刪除欄位

刪除表

drop table 表名;
drop table classes;

檢視當前資料庫中所有的表

show tables;

查看錶

desc 表名;
desc classes;
    

查看錶建立過程

show create table 表名;
show create table classes;
    

修改表名

alter table 原表名 rename 新表名
alter table classes rename student 

4、表資料操作

新增表資料

insert into 表名 values(...), (....);
insert into student values(1,"郭靖","男"),(2, "洪七公","男");
# 插入完整資料記錄,可以插入入一組,或者多組

insert into 表名(欄位名1,欄位名2,...) values(...),(...)...;
insert into student(name,gender) values("郭靖","男"),("洪七公","男");
# 只插入指定的欄位的資料

修改資料

update 表名 set 列1=值1,列2=值2... where 條件;
update student set name="tom",age=18 where id=1
# 修改值,通過行內特徵資料為條件,修改指定列的元素

查資料

select * from 表名;
select * from student;
# 查看錶中所有資料

select 列名1,列名2 from 表名;
select name,age from student;
# 檢視指定列的資料

# 檢視名字,和身高,如果身高為空就顯示“無”
select name IFNULL(height,'無') from students;

刪資料

delete from 表名 where 條件;
delete from student where i>5;
update students set isdelete=1 where id=1;
# 通過修改是否刪除中把0改為1進行刪除效果是同樣的