數據庫及MySQL基礎(1)

一、數據庫概述

關係型數據庫:面對關係,Java面向對象。html

 

·常見數據庫mysql

Oracle(神喻):甲骨文
DB2:IBM
SQL Server:微軟
Sybase:賽爾斯
MySQL:甲骨文,最先是開源的SUN;

 

1.1理解數據庫linux

·RDBMS-Relational database management system關係型數據庫管理系統sql

RDBMS-database-table-表結構&表記錄數據庫

RDBMS=管理員(Manager+倉庫(database安全

database=Ntable服務器

table=表結構(定義列名稱和類型)和表記錄(真實數據)函數

 

表結構ui

 

表記錄編碼

 

1.2 應用程序與數據庫

應用程序使用數據庫完成對數據的存儲!

備註:數據庫的端口爲3306

 

二、數據庫基本操做

/usr/bin/mysqladmin -u root -p shutdown

數據庫中止

/etc/init.d/mysql start

數據庫啓動

ps -ef|grep mysql

linuxMySQL數據庫狀態查看

mysql -uroot -p密碼 -h地址

mysql -uroot -p密碼 -h27.0.0.1

根權限進入數據庫,能夠開啓多個客戶端

quitexit

退出數據庫

mysqld.exe

是服務的啓動標準(服務器端)

mysql.exe

是客戶端程序

my.ini

配置文件

USE bookstore;

進入數據庫,大小寫均可以可是通常要求標準是大寫

SHOW TABLES;

顯示數據表,注意必定要以【;】結尾

SHOW DATABASES;

顯示全部數據庫名稱

CREATE [IF NOT EXUSTS] 數據庫名稱

[CHARSET=utf8]

若是不存在時建立數據庫

DROP DATABASE 數據庫名稱;

刪除數據庫

ALTER DATABASE 數據庫名

CHARACTER SET uft8;

修改數據庫編碼

三、SQL語言概述

3.1,什麼是SQL:結構化查詢語言(Structured Query Language);

3.2,SQL的做用:客戶端使用SQL語句來操做服務器;

3.3,SQL標準由國際化標準組織(ISO)制定,對DBMS的統一操做方式;

3.4,SQL方言,某種數據庫有本身特有的控制語句;

3.5,SQL語法:

SQL語句能夠單行或多行,以分號結尾;

②可以使用空格和縮進來加強語句的可讀性;

MySQL不區分大小寫,建議關鍵字都寫大寫;

 

3.6,SQL語句分類:

DDLData Definition Language:數據定義語言,用來定義數據庫對象:庫、表、列等;

》建立、刪除、修改:庫、表結構;

DMLData Manipulation Language:數據操做語言,用來定義數據庫記錄(數據);

》增、刪、改:表記錄(內容)

DCLData Control Language:數據控制語言,用來定義訪問權限和安全級別;

DQLData Query Language):數據查詢語言,用來查詢記錄(數據)。

四、DDL

SHOW DATABASES;

USE 數據庫名稱;

CREATE DATABASE mufasa;//建立數據庫

1064錯誤語法錯誤

4.一、數據類型

int整型;

double浮點型,例如double(5,2)表示最多五位,其中必須有2位小數,即最大999.99;

decimal浮點型,在表單錢方面使用該類型,由於不會出現精度缺乏問題;

char固定長度字符串,char(255)長度不夠的自動加空格補足!

varchar可變長度字符串類型,varchar(65535)utf8漢字一個3個字節byte

text(clob):字符串類型

——tinytext 2^8-1B

——text 2^16

——mediumtext 2^24

——longtext 2^32-1B~4GB-1B內存大小

varbinary

tinyblog

blog 2^16-1B

mediublog 2^24

longblog 2^32

date日期類型,yyyy-mm-dd;

time時間類型,hh:mm:ss

timestamp時間戳;

 

4.二、表操做

CREATE TABLE [IF NOT EXISTS] 表名(列名 列類型,列名 列類型,....);

SHOW TABLES; 顯示錶

DESC 表名稱; 顯示錶結構

DROP TABLE 表名稱; 刪除表

ALTER TABLE 表名 ADD(列名 列類型,列名 列類型,列名 列類型); 增長列

ALTER TABLE 表名 MODIFY 列名 列類型; 修改列類型

ALTER TABLE 表名 DROP 列名;

ALTER TABLE 原表名 RENAME TO 新表名;

五、DML

DQL:SELECT * FROM 表名;查詢表中的數據

DML(數據操做語言,它是對錶記錄的操做:增、刪、改!)

 

5.1,插入數據

 

INSERT INTO 表名 (列名1,列名2,...) VALUES (列值1,列值2,...);//對應列名稱插入

INSERT INTO 表名 VALUES(列值1,列值2);//值的順序,必須與給出的列的順序相同

INSERT INTO tb_stu (number,name,age,gender,SCORE) VALUES ('mufasa_0007','ZSS',20,'female',75);

INSERT INTO tb_stu (number,name) VALUES ('mufasa_0002','zhangsan');

INSERT INTO tb_stu (number,name,age,gender) VALUES ('mufasa_0001','萬雨',25,'');//中文易出錯

INSERT INTO tb_stu VALUES('mufasa_0003','wanyu',30,'man');//與原始列相同,不建議使用可讀性差

 

5.2,修改數據

UPDATE 表名 SET 列名=列值,列名=列值;//所有數據都修改

UPDATE 表名 SET 列名=列值 WHERE 列名=列值;

範例:UPDATE tb_stu SET name='mufasa' WHERE number='mufasa_0001';

條件(條件可選的):

>條件必須是一個boolean類型的值或表達式;

>運算符=、!=<>><>=<=BETWEEN...ANDIN(...)IS NULLNOTORAND

注意:列名=NULL;永遠是false,能夠使用IS NULL替換

 

5.3,刪除數據

DELETE FROM 表名 WHRER 表中的條件數據;

DELETE FROM tb_stu WHERE number='mufasa_0001';//刪除特定一項

DELETE FROM tb_stu;//所有刪除

六、DCL

一個項目建立一個用戶!一個項目對應的數據庫只有一個!

6.1,建立用戶

CREATE USER 用戶名@IP地址 IDENTIFIED BY 'cipher';

CREATE USER 用戶名@'%' IDENTIFIED BY 'cipher';//全部IP地址均可使用

範例:CREATE USER user@'%' IDENTIFIED BY 'cipher';

 

6.2,給用戶權限

GRANT 權限1,...權限n ON 數據庫.* TO 用戶名@IP地址;

範例:GRANT SELECT,CREATE,ALTER,DELETE,UPDATE ON mufasa.* TO user@'%';

範例:GRANT ALL ON mufasa.* TO user@'%';

 

6.3,撤銷受權

REVOKE 權限1,...權限n ON 數據庫.* FROM 用戶名@IP地址;

>撤銷指定用戶在指定數據庫上的制定權限

>例如:REVOKE CREATE,ALTER,DROP, ON mufasa.* FROM user@'%';

範例:REVOKE SELECT ON mufasa.* FROM user@'%';

 

6.4,查看權限

SHOW GRENTS FOR 用戶名@IP地址;

範例:SHOW GRANTS FOR user@'%';

 

6.5,刪除用戶

DROP USER 用戶名@IP地址;

 

七、DQL

DQL-數據庫查詢語言

查詢不會修改數據庫表記錄

 

7.1,基本查詢

1)查詢全部列

SELECT * FROM 表名;

範例:SELECT  * FROM tb_stu;

 

2)查詢指定列

SELECT 列名稱1,列名稱2 FROM 表名;

範例:SELECT name FROM tb_stu;//查看name這一列的數據值

 

3)徹底重複的記錄只一次

SELECT DISTINCT 列名1,列名2 FROM 表名;

範例:SELECT DISTINCT name FROM tb_stu;

查詢結果去重,顯示;

 

4)列運算

①數據類型的能夠進行加【+】、減【-】、乘【*】、除【/;

SELECT *,age*2 FROM tb_stu;

 

SELECT *,IFNULL(age,0)*2 FROM tb_stu;

 

 

②字符串能夠進行連續運算

SELECT CONCAT(列名1,列名2) FROM 表名;

範例:SELECT CONCAT(name,gender) FROM tb_stu;

 

③轉換NULL

IFNULL(列名,想要的顯示)

 

④給列起別名

SELECT 列名 [AS] 別名 FROM 表名;//其中AS能夠選,標準是加上

範例:SELECT name AS NAME FROM tb_stu;

 

7.2,條件控制

1)條件查詢

SELECT * FROM tb_stu WHERE name in ('wanyu','mufasa');//定向選擇

SELECT * FROM tb_stu WHERE age BETWEEN 20 AND 30;//數值範圍查詢,包含!!

SELECT * FROM tb_stu WHERE age IS NOT NULL;//非空查詢

SELECT * FROM tb_stu WHERE age=30;//非空查詢

 

2)模糊查詢

SELECT * FROM tb_stu WHERE name LIKE 'w____';//查詢w開頭,定長度模糊查詢

SELECT * FROM tb_stu WHERE name LIKE '___';//查詢三個長度的數值

SELECT * FROM tb_stu WHERE name LIKE '%u';//查詢u結尾數值,全部長度均可以查出

SELECT * FROM tb_stu WHERE name LIKE '%u%';//查詢有u字符的數值,開頭結尾中間都行

 

7.3,排序

SELECT * FROM tb_stu ORDER BY age;//經過age(默認升序)排序顯示

SELECT * FROM tb_stu ORDER BY age ASC;//升序排列

SELECT * FROM tb_stu ORDER BY age DESC;//降序排列

SELECT * FROM tb_stu ORDER BY IFNULL(age,25) ASC, score DESC;//多列聯合排序

 

7.4,聚合函數

SELECT COUNT(*) FROM tb_stu;//查詢數據行非NULL的總數

SELECT COUNT(age) FROM tb_stu;//查詢某列中非NULL個數

SELECT COUNT(DISTINCT age) FROM tb_stu;//查詢某列非NULL、非重複個數

SELECT COUNT(4) FROM tb_stu;//查詢第1列的個數與【*】效果相同

 

SELECT SUM(score) FROM tb_stu;//求和查詢

SELECT MAX(score) FROM tb_stu;//求最大

SELECT MIN(score) FROM tb_stu;//求最小

SELECT AVG(score) FROM tb_stu;//求均值

 

SELECT count(*) AS 人數,SUM(score) AS 彙總分數,MAX(score) AS 最高分數,MIN(score) AS 最低分數,AVG(score) AS 平均分數 FROM tb_stu;

 

7.5,分組查詢

SELECT gender,count(*) FROM tb_stu GROUP BY gender;

//主信息只有兩列,1分組列,2集合函數

SELECT gender,count(*),MAX(score) FROM tb_stu GROUP BY gender;//顯示最大值

SELECT gender,count(*),MIN(score) FROM tb_stu WHERE score>80 GROUP BY gender;//先驗條件

SELECT gender,count(*),MIN(score) FROM tb_stu WHERE score>80 GROUP BY gender having count(*)>=2;

 

執行順序:SELECT,FROM,WHERE,GROUP BY,HAVING,ORDER BY,

 

7.6,limit子句(方言)

LIMIT用來限定查詢結果的起始行,以及總數行。

例如:查詢起始行爲第2行,一共查詢3行記錄

SELECT * FROM tb_stu LIMIT 2,3;

 

①一頁的記錄數爲10行;②查詢第3頁;

SELECT * FROM tb_stu LIMIT (3-1)*10,10;

相關文章
相關標籤/搜索