天天看點

背景(02)——MySQL(2)

<a href="http://blog.csdn.net/lfdfhl/article/details/52415390">探索Android軟鍵盤的疑難雜症</a>

<a href="http://blog.csdn.net/lfdfhl/article/details/53332936">深入探讨Android異步精髓Handler</a>

<a href="http://blog.csdn.net/lfdfhl/article/details/52673536">詳解Android主流架構不可或缺的基石</a>

<a href="http://blog.csdn.net/lfdfhl/article/details/53143114">站在源碼的肩膀上全解Scroller工作機制</a>

<a href="http://blog.csdn.net/lfdfhl/article/details/52735103">Android多分辨率适配架構(1)— 核心基礎</a>

<a href="http://blog.csdn.net/lfdfhl/article/details/52877866">Android多分辨率适配架構(2)— 原理剖析</a>

<a href="http://blog.csdn.net/lfdfhl/article/details/53046113">Android多分辨率适配架構(3)— 使用指南</a>

<a href="http://blog.csdn.net/lfdfhl/article/details/51671038">自定義View系列教程00–推翻自己和過往,重學自定義View</a>

<a href="http://blog.csdn.net/lfdfhl/article/details/51324275">自定義View系列教程01–常用工具介紹</a>

<a href="http://blog.csdn.net/lfdfhl/article/details/51347818">自定義View系列教程02–onMeasure源碼詳盡分析</a>

<a href="http://blog.csdn.net/lfdfhl/article/details/51393131">自定義View系列教程03–onLayout源碼詳盡分析</a>

<a href="http://blog.csdn.net/lfdfhl/article/details/51435968">自定義View系列教程04–Draw源碼分析及其實踐</a>

<a href="http://blog.csdn.net/lfdfhl/article/details/51508727">自定義View系列教程05–示例分析</a>

<a href="http://blog.csdn.net/lfdfhl/article/details/51559847">自定義View系列教程06–詳解View的Touch事件處理</a>

<a href="http://blog.csdn.net/lfdfhl/article/details/51603088">自定義View系列教程07–詳解ViewGroup分發Touch事件</a>

<a href="http://blog.csdn.net/lfdfhl/article/details/51656492">自定義View系列教程08–滑動沖突的産生及其處理</a>

Structure Query Language(結構化查詢語言)簡稱SQL,它被美國國家标準局(ANSI)确定為關系型資料庫語言的美國标準,後被國際化标準組織(ISO)采納為關系資料庫語言的國際标準。資料庫管理系統可以通過SQL管理資料庫;定義和操作資料,維護資料的完整性和安全性

SQL的優點

簡單易學,具有很強的操作性

絕大多數重要的資料庫管理系統均支援SQL

高度非過程化;用SQL操作資料庫時大部分的工作由DBMS自動完成

SQL的分類

DDL(Data Definition Language)

資料定義語言,用來操作資料庫、表、列等;

常用語句:CREATE、 ALTER、DROP

DML(Data Manipulation Language)

資料操作語言,用來操作資料庫中表裡的資料;

常用語句:INSERT、 UPDATE、 DELETE

DCL(Data Control Language)

資料控制語言,用來操作通路權限和安全級别;

常用語句:GRANT、DENY

DQL(Data Query Language)

資料查詢語言,用來查詢資料

常用語句:SELECT

在此,請注意區分DDL和DML:

它們兩者的作用對象和級别不一樣。DDL操作的對象是資料庫,或者一張表,或者表中的某列;DML操作的是表裡的資料。

在了解完這些基礎知識之後,我們來依次詳細學習DDL、DML、DCL、DQL

建立資料庫

create database db1;

建立名字為db1的資料庫

show create database db1;

檢視剛才建立的資料庫db1,結果如下:

| Database | Create Database

| db1          | CREATE DATABASE <code>db1</code> /!40100 DEFAULT CHARACTER SET utf8 /**

從這裡可以看出,剛才建立的資料庫采用的是utf8作為字元集。

當然,我們還可以在建立資料庫時為其指定字元集

create database db2 character set gbk;

查詢資料庫

show databases;

查詢出所有的資料庫

删除資料庫

drop database db2;

其實,從這也可以看出來建立資料庫和删除資料庫是非常類似的,隻不過它們的關鍵是不同;前者使用的是create後者是drop

修改資料庫

alter database db1 character set gbk;

将資料庫db1的字元集修改為gbk

切換資料庫

use db1;

表示現在開始使用資料庫db1

檢視目前使用的資料庫

select database();

請注意該語句最後有個括号()

建立表

文法如下:

create table 表名(           字段1 字段類型,           字段2 字段類型,           ……………           字段n 字段類型 );

示例,建立一張員工表:

背景(02)——MySQL(2)

在此建立一張員工表,包含了員工的基本資訊。

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

show tables;

檢視剛才建立的表

show create table employee;

檢視表的字段資訊

describe employee;

也可以簡寫為:

desc employee;

修改表的字元集

alter table employee character set gbk;

為表增加列

alter table employee add column photo blob;

為表添加了資料類型為blob的列photo

alter table employee add photo blob;

修改列的長度

alter table employee modify job varchar(170);

将表中job字段的長度修改為170

修改列的名稱

alter table employee change name username varchar(100);

将表中原name改名為username

删除列

alter table employee drop photo;

删除表中的photo列

修改表的名字

rename table employee to user;

删除表

drop table user;

DML用于對表中的資料進行增、删、改的操作。常用的語句有INSERT 、UPDATE、 DELETE

嗯哼,我們先建立一張表

create table employee(            id int,            username varchar(100),            gender varchar(10),            birthday date,            salary float(10,2),            entry_date date,            resume text

插入操作:INSERT

INSERT的文法:

INSERT INTO 表名(列名1,列名2 …)VALUES(列值1,列值2…);

請注意:

列名與列值的類型、個數、順序要一一對應

列值不要超出列定義的長度

如果插入空值,請使用null

插入的日期和字元需用引号括起來,例如:’sun’、’2016-09-04’

INSERT的示例:

INSERT INTO employee (id,username,gender,birthday,salary,entry_date,RESUME) VALUES (1,’大澤瑪利亞’,’female’,’1990-09-12’,20000.00,’2010-11-22’,’beauty’); VALUES (2,’武藤蘭姐姐’,’female’,’1980-09-12’,30000.00,’2000-12-12’,’good’); (id,username,gender,birthday,salary,entry_date,RESUME) VALUES (3,’井空蒼妹妹’,’female’,’1987-07-28’,50000.00,’2001-08-09’,’great’);

當然,也可以批量插入資料:

INSERT INTO employee VALUES (4,’杉原杏璃’,’female’,’1992-04-01’,60000.00,’2014-09-03’,’very good’), (5,’佐佐木希’,’female’,’1993-05-09’,70000.00,’2013-04-04’,’very nice’), (6,’伊藤梅子’,’female’,’1995-11-07’,80000.00,’2012-03-05’,’very sexy’);

修改操作:UPDATE

UPDATE的文法:

UPDATE 表名 SET 列名1=列值1 , 列名2=列值2…..WHERE 列名=值

UPDATE的示例:

UPDATE employee SET salary=88000;

将表中所有員工的salary修改為88000

UPDATE employee SET salary=99000 WHERE username=’大澤瑪利亞’;

将表中username為大澤瑪利亞的員工的salary修改為99000

UPDATE employee SET salary=69000,birthday=’1993-02-28’ WHERE username=’井空蒼妹妹’;

将表中username為井空蒼妹妹的員工的salary修改為69000、birthday修改為1993-02-28

UPDATE employee SET salary=salary+1000 WHERE username=’佐佐木希’;

将表中username為佐佐木希的員工的salary增加1000

删除操作:DELETE

DELETE的文法:

DELETE FROM 表名 WHERE 列名=值

DELETE的示例:

DELETE FROM employee WHERE username=’大澤瑪利亞’;

将表中username為大澤瑪利亞的員工删除

DELETE FROM employee;

使用DELETE将表中所有資料删除,執行該操作後表結構還存在,删除後的資料可以找回

TRUNCATE TABLE employee;

使用TRUNCATE将表中所有資料删除,執行該操作後系統将該表DROP然後再建立一個同樣的新表,其執行速度遠快于DELETE;但是請注意:該方式删除的資料不能找回。

之前我們說過:DCL(資料控制語言)用來定義通路權限和安全級别;在此對其進行簡單的介紹

建立使用者

建立使用者的文法為:

create user 使用者名@IP位址 identified by 密碼;

請看如下示例:

create user xy@loaclhost identified by ‘123456’;

在此建立一個新使用者,使用者名為xy密碼是123456

請注意,建立新使用者後需要執行指令更新權限表(grant tables)

FLUSH PRIVILEGES;

給使用者授權

給戶授權的文法為:

grant 權限1,權限2,……..,權限n on 資料庫名.* to 使用者名@IP位址 identified by ‘密碼’;

如果将操作資料庫的所有的權限授予使用者,文法為:

grant all on 資料庫名.* to 使用者名@IP位址 identified by ‘密碼’;
grant all on db1.* to xy@localhost identified by ‘123456’;

撤銷授權

撤銷授權的文法為:

revoke 權限1,權限2,……..,權限n on 資料庫名.* from 使用者名@IP位址;

如果撤銷使用者擁有的某資料庫的全部權限,文法為:

revoke all on db1.* from xy@localhost;

檢視使用者權限

檢視使用者權限的文法為:

show grants for 使用者名@IP位址;
show grants for xy@localhost;

删除使用者

删除使用者權限的文法為:

drop user 使用者名@IP位址;
drop user xy@localhost;