程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 三非常鐘MySQL疾速入門(圖解)

三非常鐘MySQL疾速入門(圖解)

編輯:MySQL綜合教程

三非常鐘MySQL疾速入門(圖解)。本站提示廣大學習愛好者:(三非常鐘MySQL疾速入門(圖解))文章只能為提供參考,不一定能成為您想要的結果。以下是三非常鐘MySQL疾速入門(圖解)正文


一、MySQL裝置

MySQL的下載

http://dev.mysql.com/downloads/mysql/

MySQL版本選擇

MySQL功用自定義選擇裝置

功用自定義選擇

途徑自定義選擇

設置root用戶密碼

裝置完成,點擊MySQL Workbench 6.3 CE進入MySQL客戶端

二、SQL根底

SQL語句分類

1.DDL(Data Definition Languages)語句:數據定義言語,這些語句定義了不同的數據段、數據庫、表、列、索引等數據庫對象。常用的語句關鍵字次要包括create/drop/alter

2.DML(Data Manipulation Language)語句:數據操縱語句,用於添加、刪除、更新和查詢數據庫記載,並反省數據完好性。常用的語句關鍵字次要包括 insert/delete/update/select等

3.DCL(Data Control Language)語句:數據控制語句,用於控制不同數據段直接的答應和訪問級別的語句。這些語句定義了數據庫、表、字段、用戶的訪問權限和平安級別。次要的語句關鍵字包括grant/revoke等

DDL語句(觸及表的定義、構造的修正)

一、create語句

Query Ok代表語句執行成功

1 row affected代表數據庫一行收到影響

0.01 sec代表操作執行的時間

create table student(
SID int not null auto_increment,
sNo int ,
sName varchar(50) not null,
primary key(SID)
);

1.檢查零碎中都存在哪些數據庫(show databases;)

2.在檢查零碎中已有的數據庫後,可以用(use dbname)選擇對應的數據庫

3.在選擇對應的數據庫後,查詢該數據庫上面的一切的表(show tables)

二、刪除數據庫

刪除數據庫的語法:drop databse dbname;

三、創立表

語法:create table tablename(column_name_1 column_type_1 constraints,column_name_2 column_type2 constrationts)

mysql的表名是以目錄方式存儲在磁盤上,表名的字符可以是任何目錄名允許的字符。

column_name是列名

column_type是列的數據類型

constrationts是列的約束條件

1.檢查表定義:desc tablename

2.檢查創立表的SQL語句:show create table tablename

四、刪除表

刪除表的語法:drop table tablename;

五、修正表

aleter 語法 | 闡明

---|---
alter table tablename modify columnname newColumnType | 修正表字段的類型(==modify 不能更改字段稱號==)
alter table tablename add newColumnname newColumnType| 添加表字段
alter table tablename drop oldCloumnname|刪除表字段
alter table tablename change oldColumname newColumnname newColumntype|修正字段的稱號及類型
alter table tablename rename (to) newtablename|修正表稱號

修正字段的陳列順序

在alter的語法前面都有[first\after columnname]可選項

alter table user add address varchar(20) first ;
alter table user add age int after name ; 

DML(對數據庫表記載停止操作,增(insert)刪(delete)改(update)查(select))

1.insert語句

語法:

拔出一條:insert into tablename(columnname1,columnname2...)values(val1,val2...);

拔出多條:insert into tablename(columnname1,columnname2...)values(val1,val2...),(val1,val2...);

2.update語句

語法:update tablename set columnname=value [where condition]

假如運用MySQL Workbench,update語句不加where條件的會執行錯誤,需求如下圖設置取消設置:

-3.delete語句

語法:delete from tablename where condition

-4.select語句

語法:select * from tablename [where condition]

5.表銜接

1.內銜接(僅選出兩張表中相互婚配的數據)

select cno,cname,sname from student inner join course on cno=sno;
select cno,cname,sname from student,course where cno=sno;

2.外銜接

外銜接又區分:

1.左銜接(left join):包括右邊表的一切記載,左邊沒有的為Null

2.右銜接(right join):包括左邊表的一切記載,右邊沒有的為null

6.子查詢

-7.記載結合

語法:

select * from t1 union all select * from t2;
select * from t1 union select * from t2;

union all與union的區別:

union all是把後果集直接兼並在一同,而union是將union all後的後果停止一次distinct,去除反復後的後果

DCL語句(DCL語句次要是dba用來管理零碎中的對象權限)

grant與revoke

三、MySQL支持的數據類型

數值類型

MySQL支持類型前面的小括號指定顯示寬度,例如:int(5)表示當數值寬度小於5的時分在數字後面填滿寬度,假如不顯示指定寬度則默許為int(11)。假如拔出的數據大於這個數值寬度,對實踐的拔出值是沒有影響的,是依照int類型的實踐大小停止的。

create table valuetype(
age int,
age1 int
)
insert into valuetype(age,age1)values(1,2);//這時分數據庫就顯示1
alter table valuetype modify age int zerofill;//這時分數據庫就顯示'0000000001'

數據拔出bit類型字段時,首先轉換為二進制,假如位數允許,將拔出成功,假如位數小於實踐的地位,則拔出失敗。

日期時間類型

mysql外面獲取以後時間為now().mssql獲取以後時間為getdate()

timestamp,支持的范圍十分小,從1970-2038年,timestamp受時區的影響

create table timestamptest(
tp timestamp)

零碎會自動給tp賦予默許值current_timestamp(零碎日期),但是mysql只給第一個timestamp設置默許值,假如有第二個timestamp類型,則默許值設置為0

字符串類型

1.char與varchar類型的區別:

char列最後的空格曾經刪除,而varchar保存空格

四、MySQL中運算符

算術運算符

比擬運算符,滿足前往1,否則前往0

邏輯運算符(布爾運算符)

位運算符

運算符優先級,大多狀況下運用()停止操作

五、常用函數

字符串函數

數值函數

日期和時間函數

流程函數

其他函數

六、選擇適宜的數據類型

char與varchar

在Innodb存儲引擎中,建議運用varchar類型。關於Innodb數據表,外部的行存儲格式沒有區分固定長度和可變長度列,因而固定長度列的功能不一定比不可變長度的功能好。

Text與blob

普通在保管大批字符串的時分,我們會選擇char或許varchar,而在保管較大文本的時分,通常會選擇運用text或許blob。兩者的區別:text只能保管字符數據,比方日志。blob能保管二進制數據,比方照片。

浮點數與定點數

在MySQL中,decimal或許(numberic)用來表示定點數

日期類型的選擇

date/time/datetime/timestamp

七、索引的設計和運用

索引概述

索引是數據庫中用來進步功能的最常用工具。在MySQL中,MyISAM與Innodb存儲引擎的表默許創立的都是Btree索引。

1.索引的創立

create table indexTest(
id int not null auto_increment,
memberid int not null,
createtime datetime not null default current_timestamp,
primary key (id)
)
alter table indextest add orderserial varchar(50) not null;
create unique index IX_orderserial on indexTest(orderserial);

insert into indextest (memberid,createtime,orderserial)values(112123,'2016-08-14','sz121213')
闡明:下面創立一個表,其中定義orderserial為獨一索引。

語法:create [unique\fulltext\spatial] index index_name on tablename(columname)

2.設計索引的准繩

1.最適宜的索引列是呈現在where子句中列,或銜接子句中指定的列,而不是呈現在select關鍵字前面的選擇列表的列

2.運用獨一索引,需求思索列中某個值得散布,假如索引列種的基數越大,則索引的效果越好。舉個例子:訂單號就可以設置獨一索引,由於訂單號的不一樣。而關於rowstatus就無須了,由於rowstatus要麼是無效要麼是有效。這樣的挑選出的范圍還是很多,沒有意義

3.不要過度索引。由於一切也要占用額定的磁盤空間,假如一個索引很少運用,那麼會不用要的減緩表的修正速度
顯示MySQL的執行方案:explain 前面加mysql語句

八、視圖

視圖(View)

定義:視圖是一種虛擬存在的表,關於運用視圖的用戶來說根本上是通明的,視圖並不是在數據庫中實踐存在。

優勢:

1.復雜,用戶完全不需求關懷前面對應的表的構造/關聯條件和挑選條件。對用戶來說曾經是過濾好的契合條件的後果集

2.平安,運用視圖的用戶只能訪問他們被允許查詢的後果集

3.數據獨立,一旦視圖的構造確定了,可以屏蔽表構造變化對用戶的影響,源表添加列對視圖沒有影響。

語法:

create or replace view index_view as
select * from indextest

1.創立create [or replace] view viewName as select ...

2.查詢 select * from 視圖稱號

3.展現視圖 show tables;

4.刪除視圖 drop view viewname

九、存儲進程和函數

一、存儲進程(store procedure)和函數

存儲進程和函數是事前經過編譯並存在數據庫中的一段SQL語句的集合,調用存儲進程和函數可以簡化使用開發人員的很多任務,增加數據在數據庫和使用服務器之間的傳輸,關於進步數據處置的效率是有益處的

語法:

create database finance;//創立finance數據庫
use finance;
create table orders(
orderId bigint not null auto_increment,
memberId int not null default 0,
serialNumber varchar(50) not null default '',
amount decimal(18,2) not null default 0,
createTime datetime not null default current_timestamp,
primary key (orderid)
)//創立orders訂單表
insert into orders (memberId,serialNumber,amount) values(6561121,'sz12234222',5),(233444,'ys1652233',10)//拔出測試數據
delimiter &
create procedure orders_serial(in serial varchar(50))
reads sql data
begin
select * from orders
where serialNumber=serial;
end &

正文:delimiter $$命令就是將語句的完畢符從分號;修正成其他符號,這裡指的是$$為開頭。這樣在number前面的分號就不會以為完畢。

1.調用存儲進程

call orders_serial('sz12234222')

2.存儲進程的益處

邏輯封裝在數據庫端,調用者不需求理解兩頭的處置邏輯,一旦調用邏輯發作變化,只需求修正存儲進程即可,而對調用者的順序完全沒有影響。

3.刪除存儲進程

drop procedure if exists orders_serial
//if exists可選

4.檢查存儲進程差形態

show procedure status like 'orders_serial'

5.查詢存儲進程的定義

show create procedure orders_serial

二、存儲進程變量的運用

存儲進程可以運用變量,並且在MySQL5.1版本後,不區分大小寫

1.變量的定義

變量的作用域只能在begin...end塊中,可以嵌套在塊中

declare currentTime date;

2.變量的賦值

set currentTime=now();//直接賦值
select XX into currentTime from XX;//也可以經過sql語句停止賦值

3.定義條件和處置

declare handler_type handler for contidtion_value;

handler_type:

1.continue;
2.exit;
3.undo;

condition_value:

1.sqlstate
2.sqlwarning
3.not found
4.sqlexception

eg: declare continue handler for sqlstate '2' set @x=1;

三、光標的運用

在存儲進程和函數中,可以運用光標對後果集停止循環處置,光標的運用包括光標的聲明: open、fetch、close

定義:

declare cur_id cursor for select * from orders;
open cur_id;
fetch cur_id;
close cur_id;

四、事情調度器

事情調度器是MySQL5.1前面新增的功用,可以將數據庫依照自定義時間周期觸發某種操作。數據庫默許操作是封閉的。需求翻開

create event x
on schedule
every 5 second
do
insert into orders (memberId,serialNumber,amount) values(6561121,'222',5)
set global event_scheduler =1//翻開調度器
alter event x disable;//禁用事情調度器
drop event x;//刪除事情調度器

十、 觸發器

觸發器

觸發器是在5.02版本後支持的,觸發器是與表有關的數據庫對象,在滿足條件時觸發,並執行觸發器中定義的語句集合。可以協助使用在數據庫端確保數據的完好性

drop trigger orderlog
delimiter $
create trigger orderlog 
after insert on orders for each row
begin
insert into orderslog (content) values(new.serialNumber);
end 
insert into orders (memberId,serialNumber,amount) values(6561121,'sz12234222',5)

解釋:下面描繪的是創立一個觸發器,當往訂單表中拔出數據之後,在訂單日志表拔出一條記載。運用old和new來援用觸發器發作變化的記載內容,目前只收入行級觸發,不支持語句級觸發

觸發器執行的順序

before insert\before update\after update

十一、 事務控制和鎖定語句

MySQL存儲引擎的事務闡明

1.Lock Table與Unlock Table

語法:

use finance;
lock table orders read;
unlock table;

假如某個進程(session1)lock定了表,那麼其他的進程(session2)可以查詢,但是不能停止更新操作,直到第一個進程釋放了鎖

2.事務控制

十二、總結

很快樂您能閱讀到這裡,能夠在三非常鐘很難吸收這麼多的知識,這篇文章也是我之前學習MySQL筆記整合的。這篇文章也是實際偏多,關於其中比擬比擬難了解知識點寫些Demo,權當團體了解,如有缺乏的中央,請您指出。假如對您有所協助,請點個贊!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved