考前複習必備MySQL數據庫(關係型數據庫管理系統)

你們好,我是魔王哪吒,話很少說,今天帶來的是一篇《考前複習必備MySQL數據庫(關係型數據庫管理系統)》文章,歡迎你們喜歡。
複製代碼

前言

MySQL是一個關係型數據庫管理系統,在web應用方面,MySQL是最好的關係型數據庫管理系統應用軟件之一。php

MySQL是一種關係型數據庫管理系統,關係型數據庫將數據保存在不一樣的表中,而不是將全部數據放在一個大倉庫內,這樣增長了速度和提升了靈活性。mysql

MySQL所使用的sql語言是用於訪問數據庫的最經常使用標準化語言,因爲其體積小,速度快,整體擁有成本低,開放源碼,通常中小型網站的開發選擇MySQL做爲網站數據庫。web

應用環境

和其餘的大型數據庫例如OracleDB2SQL Server等相比,MySQL也有本身的不足,可是這也沒有減小它受歡迎的程度,對於通常的我的使用者和中小型企業來講,MySQL提供的功能是綽綽有餘。正則表達式

Linux做爲操做系統,ApacheNginx做爲Web服務器,MySQL做爲數據庫,PHP/Perl/Python做爲服務器端腳本解釋器。sql

應用架構

單點(Single),適合小規模應用 複製(Replication),適合中小規模應用 集羣(Cluster),適合大規模應用數據庫

索引功能

從理論上來講,徹底能夠爲數據表裏的每一個字段分別建一個索引,但MySQL把同一個數據表裏的索引總數限制爲16個。windows

  1. InnoDB 數據表的索引
  2. 限制

索引類別

  1. 普通索引,普通索引(由關鍵字 KEYINDEX 定義的索引)的任務是加快對數據的訪問速度。
  2. 索引,普通索引容許被索引的數據列包含重複的值。
  3. 主索引,必須爲主鍵字段建立一個索引,這個索引就是所謂的「主索引」。
  4. 外鍵索引,若是爲某個外鍵字段定義了一個外鍵約束條件,MySQL就會定義一個內部索引來幫助本身以最有效率的方式去管理和使用外鍵約束條件。
  5. 複合索引,索引能夠覆蓋多個數據列,如像 INDEX (columnA, columnB) 索引。這種索引的特色是 MySQL 能夠有選擇地使用一個這樣的索引。

初學基礎

鏈接MySQL,格式:api

mysql -h 主機地址 -u 用戶名 -p 用戶密碼
複製代碼

鏈接到本機上的MySQL,首先打開DOS窗口,進入目錄mysqlbin,輸入mysql -uroot -p,回車後提示你輸密碼。安全

鏈接遠程主機上的MySQL,遠程主機的IP,和用戶名root,密碼。服務器

命令:mysql -h遠程主機ip -uroot -p密碼

退出mysql命名:exit回車,可是注意,想要成功鏈接到遠程主機,須要在遠程主機打開mysql遠程訪問權限。

mysql和sqlite的區別

mysqlweb世界中使用最普遍的數據庫服務器。mysql是爲服務器端設計的數據庫,能承受高併發訪問,同時佔用的內存也遠遠大於SQLite

SQLite的特色是輕量級,可嵌入,但不能承受高併發訪問,適合桌面和移動應用。

把數據庫默認的編碼所有改成UTF-8

MySQL的配置文件默認存放在/etc/my.cnf或者/etc/mysql/my.cnf

代碼以下:

[client]
default-character-set = utf8

[mysqld]
default-storage-engine = INNODB
character-set-server = utf8
collation-server = utf8_general_ci
複製代碼

重啓mysql後,能夠經過mysql的客戶端命令行檢查編碼。

$ mysql -u root -p

複習必備

MySQL數據庫管理方法,掌握數據庫的初始化,建立,查看,和刪除方法。學習數據表管理方法,掌握數據表的建立,查看,修改和刪除方法。

用戶帳戶的管理,用戶的建立,與刪除,用戶權限的授予與回收,用戶密碼的設置與更改方法。

目錄複習

爲了方便查看學習,我作了思惟導圖,以下圖所示:

mysql數據庫管理

數據庫進行初始化

初始化數據庫,在安裝好mysql數據庫後,不要直接啓動,須要對數據庫進行初始化。

初始化的過程

  1. 建立元數據表
  2. 數據目錄
  3. 建立root用戶

mysql提供數據庫命令:

mysql --initialize進行初始化

  • windows+r組合鍵,能夠打開「運行」窗口,在該窗口輸入cmdenter鍵,打開命令行。
  • 使用cd命令進入mysql目錄。
  • 執行bin\mysqld --initialize命令,進行初始化。

初始化完成後,能夠啓動數據庫,啓動數據庫有兩種方式。

  1. 利用windows服務器管理界面啓動;
  2. 利用mysql命令啓動。

利用mysql命令方式啓動數據庫:

  1. windows+r組合鍵,打開窗口,進入命令行;
  2. 使用cd命令進入mysql目錄;
  3. 輸入bin\mysqld,啓動mysql服務。

啓動數據庫

使用bin\mysql -u root -p命令進入mysql操做環境中。

服務圖片,開啓數據庫:

建立數據庫

咱們來建立一個數據庫,create database語句。

語法格式以下:

create database [db_name];

建立一個名爲web的數據庫:

create database web;

在數據庫建立好後,mysqldata目錄下會自動生成一個名爲web的目錄,該數據庫的數據會存儲於該目錄下。

mysql中能夠支持運行多個數據庫,因此咱們能夠建立多個數據庫。

查看數據庫

數據庫建立好後,使用show語句查看當前mysql中有哪些數據庫。

show databases;

刪除數據庫

使用drop語句刪除數據庫,語法格式以下:

drop database db_name;

刪除建立的web數據庫,命令以下:

drop database web

刪除數據庫是一個不可逆的操做。

mysql數據表管理

建立數據表使用create table語句,語法格式以下。

user 數據庫名;
create table 表名 (字段名 類型(長度),字段名 類型(長度));
複製代碼

建立表語句:

  1. 明確數據表的結構;
  2. 名字段的名稱;
  3. 類型;
  4. 長度等。

查看數據表

查看錶分:

  1. 查看數據庫中包含哪些表
  2. 查看某個表的具體結構

使用的語句有show語句和describe語句。

  • 使用show語句能夠查看數據庫中有哪些表。

show tables

  • 使用describe語句能夠查看某個表的具體結構,查看組成表的各字段的信息。

describe 庫名.表名;

使用describe語句能夠查看錶的各個字段名稱,類型,長度,是否非空,是否有主鍵,默認值以及備註等信息。

修改數據表

能夠修改表名,字段名,字段類型等表結構,可以使用alter語句來實現修改操做。

修改表名

修改表名的語句:

alter table 舊錶名 rename 新表名;

修改數據表student改變爲student1

alter table student rename student1

修改字段名

修改字段名的語法格式以下:

alter table 表名 change 舊屬性名 新屬性名 新數據類型;

alter table student1 change name s_anme varchar(50);

修改字段類型

修改字段類型的語法格式:

alter table 表名 modify 屬性名 數據類型;

alter table student1 modify name varchar(32);

增長字段

增長字段的語法格式以下:

alter table 表名 add 屬性名 數據類型;

alter table student1 add sex char(1);

刪除字段

刪除字段語句:

alter table 表名 drop 屬性名;

示例:

alter table student1 drop sex;

刪除數據表

使用drop語句刪除數據庫中的表。

use 數據庫名;
drop 表名;
複製代碼

或者是

drop table 數據庫名.表名;
複製代碼

刪除某個數據中的某個表:

use test;
drop table student;
複製代碼

或者是

drop table test.student;
複製代碼

mysql用戶管理

mysql提供了一套完善的數據庫用戶以及權限管理系統。

建立和刪除用戶

  1. 建立用戶

使用create語句建立用戶:

create user 'username'@'host' idendified by 'password';

username表示爲建立的用戶名,host指定該用戶在哪一個主機上能夠登陸。

create user 'test1'@'localhost' idendified by '1234';

create user 'test3'@'122.xxx' idendified by '1234';

用戶刪除

使用drop語句能夠刪除用戶,語法格式:

drop user 'username'@'host';

示例以下:

drop user 'test1'@'localhost';

授予與回收用戶權限

授予用戶權限

grant語句能夠對用戶進行受權:

grant privileges on dbname.tablename TO 'username'@'host';

  1. privileges表示要授予用戶的操做權限。

grant select, insert on mysql.test TO 'test1'@'%';

表示受權用戶test1在全部登陸主機均對mysql庫的test表擁有selectinsert權限。

grant all on *.* TO 'test2'@'localhost';

表示受權用戶test2在本地主機數據庫的全部庫的全部表擁有全部權限。

回收用戶權限

使用revoke語句能夠對權限進行回收。

revoke privileges on databasename.tablename from 'username'@'host';

示例:

revoke select on *.* from 'test2'@'localhost';

設置與更改用戶密碼

使用mysql所提供的密碼設置與更改語句,語法格式:

set password for 'username'@'host' = password('newpassword');

  1. username表示要設置或更改密碼的用戶名;
  2. host指定該用戶的登陸主機;
  3. newpassword表示要設置或更改的密碼。

示例:

set password for 'test1'@'localhost' = password('12345');

什麼是數據庫

數據庫是按照數據結構來組織,存儲和管理數據的倉庫。每一個數據庫都有一個或多個不一樣的api用於建立,訪問,管理,搜索,複製所保存的數據。

將數據存儲在文件中,可是在文件中讀寫數據速度相對較慢。

術語

  1. 數據庫是一些關聯表的集合。
  2. 數據表是數據的矩陣。
  3. 列,一列包含了相同類型的數據。
  4. 行,一行是一組相關的數據。
  5. 冗餘,存儲兩倍數據,冗餘下降了性能,但提升了數據的安全性。
  6. 主鍵,是惟一的,一個數據表中只能包含一個主鍵。
  7. 外鍵,用於關聯兩個表。
  8. 複合鍵,將多個列做爲一個索引鍵,通常用於複合索引。
  9. 索引,使用索引能夠快速訪問數據庫中的特定信息。
  10. 參照完整性,參照的完整性要求關係中不容許引用不存在的實體。

一個關係型數據庫由一個或數個表格組成:表頭,行,列,鍵,值。

表頭爲每一列的名稱,列爲具備相同數據類型的數據的集合,行爲每一行用來描述某條記錄的具體信息,值爲行的具體信息,每一個值必須與該列的數據類型相同,鍵的值在當前列中具備惟一性。

MySQL 下載地址爲: MySQL 下載 https://dev.mysql.com/downloads/mysql/

安裝 MySQL https://dev.mysql.com/downloads/repo/yum/

Mysql安裝成功後,默認的root用戶密碼爲空,可使用如下命令來建立root用戶的密碼:

[root@host]# mysqladmin -u root password "new_password";

登陸Mysql

命令行:mysql -h 主機名 -u 用戶名 -p

運行mysql服務:

mysql -h localhost -u root -p

MySQL PHP 語法

PHP Mysqli函數格式以下:

mysqli_function(value,value,...);

mysqli_connect($connect);
mysqli_query($connect,"SQL 語句");
mysqli_fetch_array()
mysqli_close()
複製代碼

使用 PHP 腳本鏈接 MySQL

mysqli_connect() 函數來鏈接數據庫

語法:

mysqli_connect(host,username,password,dbname,port,socket);

參數說明:

  1. host爲主機或ip地址;
  2. usernamemysql用戶名;
  3. passwordmysql密碼;
  4. dbname爲默認使用的數據庫;
  5. port嘗試鏈接到mysql服務器的端口號;

語法:

bool mysqli_close ( mysqli $link )

鏈接mysql服務器:

<?php
$dbhost = 'localhost';  // mysql服務器主機地址
$dbuser = 'root';            // mysql用戶名
$dbpass = '123456';          // mysql用戶名密碼
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
    die('Could not connect: ' . mysqli_error());
}
echo '數據庫鏈接成功!';
mysqli_close($conn);
?>
複製代碼

mysql建立數據庫

使用create命令建立數據庫,語法:

create database 數據庫名;

使用php腳本建立數據庫

語法:mysqli_query(connection,query,resultmode);

  1. connection爲要使用的mysql鏈接;
  2. query爲查詢字符串;
  3. resultmode一個常量,值MYSQLI_USE_RESULTMYSQLI_STORE_RESULT

使用PHP來建立一個數據庫

代碼:

<?php
$dbhost = 'localhost';  // mysql服務器主機地址
$dbuser = 'root';            // mysql用戶名
$dbpass = '123456';          // mysql用戶名密碼
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
  die('鏈接錯誤: ' . mysqli_error($conn));
}
echo '鏈接成功<br />';
$sql = 'create database web';
$retval = mysqli_query($conn,$sql );
if(! $retval )
{
    die('建立數據庫失敗: ' . mysqli_error($conn));
}
echo "數據庫 web 建立成功\n";
mysqli_close($conn);
?>
複製代碼

drop命令刪除數據庫

drop命令格式:

drop database <數據庫名>;

使用php腳本刪除數據庫

語法

mysqli_query(connection,query,resultmode);

使用PHP mysqli_query函數來刪除數據庫:

刪除數據庫:

<?php
$dbhost = 'localhost:3306';  // mysql服務器主機地址
$dbuser = 'root';            // mysql用戶名
$dbpass = '123456';          // mysql用戶名密碼
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
    die('鏈接失敗: ' . mysqli_error($conn));
}
echo '鏈接成功<br />';
$sql = 'DROP DATABASE web';
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
    die('刪除數據庫失敗: ' . mysqli_error($conn));
}
echo "數據庫 web 刪除成功\n";
mysqli_close($conn);
?>
複製代碼

使用PHP腳本選擇MySQL數據庫

使用函數mysqli_select_db來獲取一個數據庫

語法:

mysqli_select_db(connection,dbname);

示例:

mysqli_select_db函數來選取一個數據庫:

選擇數據庫

<?php
$dbhost = 'localhost:3306';  // mysql服務器主機地址
$dbuser = 'root';            // mysql用戶名
$dbpass = '123456';          // mysql用戶名密碼
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
    die('鏈接失敗: ' . mysqli_error($conn));
}
echo '鏈接成功';
mysqli_select_db($conn, 'web' );
mysqli_close($conn);
?>
複製代碼

MySQL 數據類型

mysql支持多種類型,分三類:

  1. 數值;
  2. 日期/時間;
  3. 字符串類型。

MySQL 5.0 以上的版本

一、一個漢字佔多少長度與編碼有關:

UTF-8:一個漢字=3個字節

GBK:一個漢字=2個字節

二、varchar(n) 表示 n 個字符,不管漢字和英文,Mysql 都能存入 n 個字符,僅是實際字節長度有所區別

三、MySQL 檢查長度,可用 SQL 語言來查看

MySQL 建立數據表

  1. 表名
  2. 表字段名
  3. 定義每一個表字段

語法:

建立mysql數據表的sql語法。

CREATE TABLE table_name (column_name column_type);

在數據庫中建立數據表:

create table if not exists `table_tb` (
    `table_id` int unsigned auto_increment,
    `table_title` varchar(100) not null,
    `table_author` varchar(40) not null,
    `table_date` date,
    primary key (`table_id`)
)engine=InnoDB default charset = utf8;
複製代碼

注意:在auto_increment定義列爲自增的屬性,通常用於主鍵,數值會自動加1,。engine設置存儲引擎,charset設置編碼。

建立數據表

代碼:

<?php
$dbhost = 'localhost:3306';  // mysql服務器主機地址
$dbuser = 'root';            // mysql用戶名
$dbpass = '123456';          // mysql用戶名密碼
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
    die('鏈接失敗: ' . mysqli_error($conn));
}
echo '鏈接成功<br />';
$sql = "create table table_tbl( ".
        "table_id int not null auto_increment, ".
        "table_title varchar(100) not null, ".
        "table_author varchar(40) not null, ".
        "submission_date DATE, ".
        "primary key ( runoob_id ))ENGINE=InnoDB DEFAULT CHARSET=utf8; ";
mysqli_select_db( $conn, 'RUNOOB' );
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
    die('數據表建立失敗: ' . mysqli_error($conn));
}
echo "數據表建立成功\n";
mysqli_close($conn);
?>
複製代碼

MySQL 字段屬性應該儘可能設置爲 NOT NULL

首先,考慮空值「」和null的概念:

  1. 空值是不佔用空間的
  2. mysqlnull實際上是佔用空間的

MySQL刪除數據表

語法,刪除mysql數據表的語法:

drop table table_name;

使用PHP腳本刪除數據表

語法:

mysqli_query(connection,query,resultmode);

使用了PHP腳本刪除數據表:

<?php
$dbhost = 'localhost:3306';  // mysql服務器主機地址
$dbuser = 'root';            // mysql用戶名
$dbpass = '123456';          // mysql用戶名密碼
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
  die('鏈接失敗: ' . mysqli_error($conn));
}
echo '鏈接成功<br />';
$sql = "drop table table_tb1";
mysqli_select_db( $conn, 'web' );
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
  die('數據表刪除失敗: ' . mysqli_error($conn));
}
echo "數據表刪除成功\n";
mysqli_close($conn);
?>
複製代碼

MySQL 插入數據

mysql數據表插入數據通用insert into語法:

insert into table_name(field1,field2,...fieldN)
    values
    (value1,value2,...valueN);
複製代碼

添加數據

代碼:

<?php
$dbhost = 'localhost:3306';  // mysql服務器主機地址
$dbuser = 'root';            // mysql用戶名
$dbpass = '123456';          // mysql用戶名密碼
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
  die('鏈接失敗: ' . mysqli_error($conn));
}
echo '鏈接成功<br />';
// 設置編碼,防止中文亂碼
mysqli_query($conn , "set names utf8");
 
$table_title = '學習';
$table_author = 'web';
$submission_date = '2018-03-06';
 
$sql = "insert into table_tbl ".
        "(table_title,table_author, submission_date) ".
        "values ".
        "('$table_title','$table_author','$submission_date')";
 
mysqli_select_db( $conn, 'web' );
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
  die('沒法插入數據: ' . mysqli_error($conn));
}
echo "數據插入成功\n";
mysqli_close($conn);
?>
複製代碼

INSERT 插入多條數據

INSERT INTO table_name (field1, field2,...fieldN) VALUES (valueA1,valueA2,...valueAN),(valueB1,valueB2,...valueBN),(valueC1,valueC2,...valueCN)......;

SQL基本語法

學習sql語句和mysql基本數據類型,學習掌握數據插入,修改,刪除的sql語句,查詢語句,以及各種特定的查詢語句。

學會數據庫事務的概念,特性以及使用方法。

sql的目錄也整理一個思惟導圖:

sql語句簡介

結構化查詢語言簡稱SQL,結構化查詢語言是一種數據庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關係數據庫系統。

sql 語句就是對數據庫進行操做的一種語言。

sql分三種類型:

  1. DDL語句,數據定義語句,定義了不一樣數據庫,表,列,索引等數據庫對象。
  2. DML語句,數據操做語句,用於添加,刪除,更新和查詢數據庫記錄,並檢查數據完整性。
  3. DCL語句,數據控制語句,定義數據庫,表,字段,用戶的訪問權限和安全級別。

mysql基本數據類型

mysql提供了多種數據類型,包括數值類型,字符串類型,日期和時間類型。

  1. 數值類型
  2. 字符串類型
  3. 日期和時間類型

數值類型

mysql的數值類型:

  1. 整數類型
  2. 浮點數類型
  3. 定點數類型

整數類型:

  1. tinyint
  2. small int
  3. medium int
  4. int
  5. big int

浮點數類型:

  1. float
  2. double

定點數類型:

  1. decimal

整數類型的劃分是根據存儲空間的大小和表示範圍的大小來劃分

浮點類型是用來表示實數的一種方法,根據位數和精度,浮點類型分單精浮點數(8位精度)和雙精浮點數(16位精度)。

字符串類型

提供了多種字符串類型:

  1. char
  2. varchar
  3. binary
  4. varbinary
  5. blob
  6. text
  7. enum
  8. set

char與varchar

  1. char定義固定長度字符串
  2. varchar定義可變長度字符串

char的長度固定爲建立表時聲明的長度,其取值範圍爲0到255,當保存char值時,在右邊填充空格以達到指定的長度。

當檢索到char值時,其尾部的空格會被刪除,因此在存儲時,通常字符串右邊不能有空格。若是字符串右邊有空格,在查詢出來後會被刪除。

varchar的長度能夠指定爲0到6535,varchar值在保存時只保存須要的字符串,並另外加一個字節來記錄長。

binaryvarbinary

binaryvarbinary用來存儲二進制字符串。沒有字符集,而且會排序和比較基於列值字節的數值。

text與blob

textblob是以對象類型保存的文本與二進制。

text視爲足夠大的varchar,將blob視爲足夠大的varbinary,但textblobvarcharvarbinary的不一樣之處:

  1. 當保存或檢索blobtext的值時不刪除尾部空格。
  2. 在比較時,會用空格對text進行擴充以適應比較的對象。
  3. 對於blobtext的索引,必須制定索引前綴的長度。
  4. blobtext不能有默認值。

對弈textblob對象的最大字符串長度由其類型肯定。

text分爲tinytext,text,mediumtextlongtext四種類型。

blog分爲tinyblobblobmediumbloblongblob四種類型。

enum

enum表示枚舉類型,它的取值範圍須要在建立表時經過枚舉方式顯式制定。enum是忽略大小寫的。enum只容許從值集合中選取單個值,不能一次選取多個值。

set

set是一個集合對象,能夠包含0到64個成員,其所佔存儲空間的大小是因集合成員數量的不一樣而有所不一樣的。

日期和事件類型

提供了多種日期和時間類型:

  1. year
  2. time
  3. date
  4. datetime
  5. timestamp

日期格式,year,YYYY;time,HH:MM:SS;date,YYYY-MM-DD;datetime,YYYY-MM-DD HH:MM:SS,timestamp,YYYY-MM-DD HH:MM:SS。

數據插入

insert into 表名 values (值1,值2,...);

insert into 表名 (列1,列2,...) values (值1,值2);

mysql中,insert語句,能夠一次性插入多條記錄,語法格式以下。

insert into 表名 (列1,列2,...) values (值1,值2,...), (值1,值2,...),...;

數據修改

經過update命令進行修改:

update 表名 set 列名 = 新值 whert 列名 = 某值;

update 表1,表2,...set 表1.列1,表2.列2,...where 條件;

數據刪除

可使用delete命令進行刪除:

delete from 表名 where 列名=值;

delete命令能夠一次刪除多個表的數據:

delete 表1,表2,... from 表1,表2,...where 條件;

數據查詢

最基本的select語句的語法格式:

select 字段 from 表名 where 條件;

條件查詢

條件查詢的語句:

select 字段 from 表名 where 條件;

聯合查詢

union操做符

union操做符用於合併兩個或多個select語句的結果集。

代碼:

select 條件 from 表1
union
select 條件 from 表2;
複製代碼

unionunion all的主要區別

  1. union all用於將結果集直接合並在一塊兒。
  2. union用於將union all後的解構進行一次distinct,以刪除重複結果記錄。

不重複查詢

語法格式以下:

select distinct 字段 from 表名;

模糊查詢

語法格式:

select 字段 from 表名 where 字段 like 值;

%的使用,用來匹配0個或多個字符,能夠匹配任意類型和長度的字符,對長度沒有限制。

「_」的使用,用來匹配任意單個字符,經常使用來限制表達式的字符長度。

排序查詢

使用order by關鍵字來排序:

select 字段 from 表名 where 條件 order by field1 desc/asc, field2 desc/asc, ...;

排序方式:desc表示降序排列,asc表示升序排序。默認值爲asc

order by後面能夠跟多個不一樣的排序字段。

限制查詢

使用limit關鍵字進行限制查詢,格式:

select 字段 limit 起始偏移量,行數;

聚合

聚合語句格式:

select 字段 op_name from 表名 where 條件 group by filed1, filed2, ... with rollup having 條件;

op_name表示要進行的聚合操做,就是聚合函數。

聚合函數:

  1. sum函數求和
  2. count函數記錄數
  3. max函數最大值
  4. min函數最小值
  5. groupby表示要進行分類聚合的字段
  6. with rollup表示是否對分類聚合後的結果進行在彙總
  7. having表示對分類後的結果進行條件過濾

鏈接

內鏈接

內鏈接查詢是指全部查詢的結果都可以在鏈接的表中有對應記錄。在默認狀況下是內鏈接,能夠不寫join關鍵字,或者寫inner join

join分三類:

  1. inner join:獲取兩個表中字段匹配關係的記錄。
  2. left join:獲取左表全部記錄,即便右表沒有對應匹配的記錄。
  3. right join:用於獲取右表全部記錄,即便左表沒有對應匹配的記錄。

左鏈接和右鏈接

左鏈接是指以左邊的表的數據爲基準,去匹配右邊的表的數據。

  1. 若是匹配到相應數據,則顯示匹配結果
  2. 若是匹配不到相應數據,就顯示爲null

左鏈接的關鍵字:left join。 右鏈接的關鍵字:right join

右鏈接反之。

事務

事務概述:事務,通常是指要作的或所作的事情。在計算機術語中是指訪問並可能更新數據庫中各類數據項的一個程序執行單元。

事務由事務開始和事務結束之間執行的全體操做組成。

事務就是一組由sql語句組成的業務邏輯,只有事務內的全部sql語句都成功執行,整個事務纔算成功,不然就是失敗。

事務的四大特性

  1. 原子性
  2. 一致性
  3. 隔離性
  4. 持久性

事務提交

默認狀況下,sql語句是自動提交的,每條sql語句在執行完畢後會 自動提交事務,要想統一提交事務,須要先關閉mysql的自動提交功能。

查看數據庫是否開啓自動提交:

show variables like 'autocommit';

使用命令關閉自動提交:

set autocommit=0;

命令手動進行事務提交:

commit

事務回滾

事務中已執行成功的語句結果應該回退至未執行狀態,稱爲事務回滾。

事務回滾:

rollback

事務隔離級別

事務的併發讀問題

  1. 髒讀:讀取到另外一個事務未提交數據;
  2. 不可重複讀:兩次讀取不一致;
  3. 幻讀(虛讀):讀到另外一事務已提交數據。

開始事務

事務以begin transaction開始:

格式:

begin transaction <事務名稱> |@ <事務變量名稱>

語法說明以下:

@<事務變量名稱>由用戶定義的變量,必須用char,varchar,nchar或nvarchar數據類型來聲明該變量。

begin transaction語句的執行。

提交事務

commit表示提交事務,即提交事務的全部操做。

撤銷事務

rollback表示撤銷事務,即在事務運行的過程當中發生了某種故障,事務不能繼續執行,系統將事務中對數據庫的全部已完成的操做所有撤銷,回滾到事務開始時的狀態。

語法格式:

rollback[transaction]

MySQL 正則表達式

  1. ^匹配輸入字符串的開始位置。
  2. $匹配輸入字符串的結束位置。
  3. [...]字符集合。匹配所包含的任意一個字符。
  4. [^...]負值字符集合。匹配未包含的任意字符。
  5. *匹配前面的子表達式零次或屢次。
  6. +匹配前面的子表達式一次或屢次。
  7. {n}n 是一個非負整數。匹配肯定的 n 次。
  8. {n,m}m 和 n 均爲非負整數,其中n <= m。最少匹配 n 次且最多匹配 m 次。

sql語句

sql語句:

select lastname from persons

  1. select從數據庫表中獲取數據
  2. update更新數據庫表中的數據
  3. delete從數據庫表中刪除數據
  4. insert into向數據庫表中那個插入數據

DDL語句

  • create database建立新數據庫
  • alter database修改數據庫
  • create table建立新表
  • drop table刪除表
  • alter table變動數據庫表
  • create index建立索引
  • drop index刪除索引

語句

SELECT 語句用於從表中選取數據。

SELECT 列名稱 FROM 表名稱

SELECT * FROM 表名稱

SELECT LastName,FirstName FROM Persons

SQL SELECT DISTINCT 語句

在表中,可能會包含重複值。關鍵詞 DISTINCT 用於返回惟一不一樣的值。

語法:

SELECT DISTINCT 列名稱 FROM 表名稱

WHERE 子句用於規定選擇的標準。

SELECT 列名稱 FROM 表名稱 WHERE 列 運算符 值

操做符 描述
= 等於
<> 不等於
> 大於
< 小於
>= 大於等於
<= 小於等於
BETWEEN 在某個範圍內
LIKE 搜索某種模式

若是第一個條件和第二個條件都成立,則 AND 運算符顯示一條記錄。

若是第一個條件和第二個條件中只要有一個成立,則 OR 運算符顯示一條記錄。

ORDER BY 語句用於對結果集進行排序。

INSERT INTO 語句

INSERT INTO 表名稱 VALUES (值1, 值2,....)

INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)

Update 語句用於修改表中的數據。

UPDATE 表名稱 SET 列名稱 = 新值 WHERE 列名稱 = 某值

DELETE 語句用於刪除表中的行。

DELETE FROM 表名稱 WHERE 列名稱 = 值

總結

數據庫的發展歷程:

  1. 網狀型數據庫
  2. 層次型數據庫
  3. 關係數據庫
  4. 面向對象數據庫

關係數據庫:

  1. 桌面數據庫
  2. 客戶/服務器數據庫

數據表是存儲數據的邏輯單元。

數據表中,一行稱爲一條記錄,一列稱爲一個字段。

主鍵:惟一標識此條記錄。

後記

掃碼關注公衆號,訂閱更多精彩內容。

相關文章
相關標籤/搜索