關係型數據庫:面對關係,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=N個table服務器
table=表結構(定義列名稱和類型)和表記錄(真實數據)函數
表結構ui
表記錄編碼
1.2 應用程序與數據庫
應用程序使用數據庫完成對數據的存儲!
備註:數據庫的端口爲3306
二、數據庫基本操做
/usr/bin/mysqladmin -u root -p shutdown |
數據庫中止 |
/etc/init.d/mysql start |
數據庫啓動 |
ps -ef|grep mysql |
linux下MySQL數據庫狀態查看 |
mysql -uroot -p密碼 -h地址 mysql -uroot -p密碼 -h27.0.0.1 |
根權限進入數據庫,能夠開啓多個客戶端 |
quit、exit |
退出數據庫 |
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; |
修改數據庫編碼 |
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語句分類:
①DDL(Data Definition Language):數據定義語言,用來定義數據庫對象:庫、表、列等;
》建立、刪除、修改:庫、表結構;
②DML(Data Manipulation Language):數據操做語言,用來定義數據庫記錄(數據);
》增、刪、改:表記錄(內容)
③DCL(Data Control Language):數據控制語言,用來定義訪問權限和安全級別;
④DQL(Data Query Language):數據查詢語言,用來查詢記錄(數據)。
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 新表名;
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...AND、IN(...)、IS NULL、NOT、OR、AND
注意:列名=NULL;永遠是false,能夠使用IS NULL替換
5.3,刪除數據
DELETE FROM 表名 WHRER 表中的條件數據;
DELETE FROM tb_stu WHERE number='mufasa_0001';//刪除特定一項
DELETE FROM tb_stu;//所有刪除
一個項目建立一個用戶!一個項目對應的數據庫只有一個!
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-數據庫查詢語言
查詢不會修改數據庫表記錄
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;