MySQL基礎


一、創建並導入數據庫

create database if not exists yiibaidb default charset utf8 collate utf8_general_ci;
use yiibaidb;
source /home/jxc/Downloads/yiibaidb.sql;  

這里我們使用的是yiibaidb下載這個汽車零售商數據庫模型,yiibaidb數據庫由以下表組成

  • customers: 存儲客戶的數據。
  • products: 存儲汽車的數據
  • productLines: 存儲產品類別數據。
  • orders: 存儲客戶訂購的銷售訂單。
  • orderDetails: 存儲每個銷售訂單的訂單產品數據項。
  • payments: 存儲客戶訂單的付款數據信息。
  • employees: 存儲所有員工信息以及組織結構,例如,直接上級
  • offices: 存儲銷售處數據,類似於各個分公司。

表與表之間的關系見下圖:

在Linux下導出數據庫,可以使用mysqldump的shell命令,格式如下:

mysqldump -u 數據庫擁有者 -p 數據庫名 [ 表名 ] > 輸出文件名(最好用全路徑)

mysqldump -u root -p test Data > /home/jxc/Documents/Data.sql

 

二、select語句簡介

select語句可以從視圖或表中獲取數據,select語句的語法如下

SELECT 
    column_1, column_2, ...
FROM
    table_1
[INNER | LEFT |RIGHT] JOIN table_2 ON conditions
WHERE
    conditions
GROUP BY column_1
HAVING group_conditions
ORDER BY column_1
LIMIT offset, length;

 select語句由以下列表中所述的幾個子句組成:

  • SELECT 之后是逗號分隔列或者星號,表示要返回的列
  • FROM 指定要查詢的表或視圖
  • JOIN 根據某些鏈接條件從其他表中獲取數據
  • WHERE 過濾結果集中的行
  • GROUP BY 把查詢結果按指定的列分成集合組,當一個聚合函數和一個GROUP BY子句一起使用時,聚合函數的范圍變成每組的所有記錄。
  • HAVING 對GROUP BY產生的分組進行進一步的控制,用這個子句定義這些分組所必須滿足的條件
  • ORDER BY 用於對查詢結果進行排序
  • LIMIT 限制返回的行數

說明:當where、group by和having子句同時出現在一個查詢中時,SQL的執行順序如下:

  1. 執行where子句,從表中選擇行
  2. 由group by 對選取的行進行分組
  3. 執行聚合函數
  4. 執行having子句選取滿足條件的分組

例子:從employees表中獲取辦公室代碼為1的銷售代表員工,可以使用以下查詢:

select lastName,firstName,jobtitle 
from employees
where jobtitle = 'Sales Rep' AND officeCode = '1';

 還有一些有用的運算符可以子啊where子句中使用來形成復雜的條件,如:

  • BETWEEN A NAD B: 選擇在給定范圍值內的值。
  • LIKE: 匹配基於模式匹配的值,SQL提供了兩個通配符與LIKE一起使用:百分比符號(%)匹配任何字符的零個或多個字符,下划線(_)匹配任何單個字符一次。
  • IN: 指定值是否匹配列表中的任何值。
  • IS NULL: 檢查該值是否為NULL

三、INSERT語句簡介

SELECT語句允許將一行或多行插入到表中,其基本語法如下:

insert into table(column1,column2...)
values ( vslue1,value2,...);

創建一個新的名為tasks的表來練習insert語句:

create database test;
use test;

create table if not exists tasks(
    task_id int(11) auto_incerment,
    subject varchar(45) default null,
    start_date date null,
    end_date date default null,
    description varchar(200) default null,
    primary key (task_id)
)engine=InnoDB default carset=utf8;

 如果要將數據插入到tasks表中,可以使用如下語句:

insert into tasks(task_id,subject,start_date,end_date,description)
values(1,'Learn MySQL INSERT','2017-09-15','2017-10-01','Start learning...');

四、UPDATE 和 DELETE 語句簡介

update 可以用來跟新表中現有的數據,其基本語法如下:

update table_name
set
    column_name1 = expr1,
    column_name2 = expr2,
    ...
where
    condition

例如,我們要把tasks表中的第一條數據的description改為‘Description’:

use testdb
update tasks
set
    secription = 'Description'
where
    task_id = 1

delete 語句可以從表中刪除數據,其基本語法如下:

delete from table_name
where condition

五、數據庫的創建與刪除

1.創建數據庫使用 create database語句,語法如下:

create database [ if not exists ] database_name;

2.刪除數據庫使用 drop database 語句,語法如下:

drop database [ if exists ] database_name

3.顯示和使用數據庫:

show databases;
use database_name;

 

六、表的創建與修改

1.使用 create table 語句來創建表,其基本語法如下:

create table [ if not exists ] table_name(
    column_list
) engine=table_type;

說明:

  • 表名在一個數據庫中必須時唯一,不能有同名的表存在
  • column_list 指定表的列,為表定義列,至少要包含列名和數據類型。其語法為:
    column_name data_type[ size ] [ not null | null ] [default value ] [ auto_increment ]
    各部分參數說明:
    • coloumn_name 指定列的名稱,列具有特定的數據類型和大小,這些都必須指定
    • not null 或 null 指定該列是否接受null值
    • default 用於指定列的默認值
    • auto_increment 指定每當新行插入表中時,列值自動增加
  • engine 指定表的存儲引擎,默認為InnoDB,也可以使用其他存儲引擎,如:InnoDB,MyISAM,HEAP,EXAMPLE,CSV,ARCHIVE,MERGE, FEDERATED或NDBCLUSTER
  • 使用primary key ( col1,col2 ) 可以將某些列設置為主鍵

2.使用alter table 語句可以更改表的結構,該語句可以用來添加列、刪除列、更改列的數據結構、添加主鍵、重命名表等。基本語法格式如下:

altre table table_name action

action表示要對標進行的操作,可以是命令:

語句 作用
change column 列名 數據類型或其他屬性修改 修改指定列名的相關屬性
add column 列名 相關屬性 添加新的列
rename to new_name 重命名表


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM