1. 程式人生 > >MySql學習筆記(一)

MySql學習筆記(一)

資料的儲存:

                            javaSE:定義一個變數,它都儲存在記憶體裡面,

                            當程式執行完畢了,這個變數就從記憶體中消失了!

                      javaSE-->IO流程:針對檔案進行儲存

                                  1)永久儲存,

                                  2)頻繁的使用IO流對資料進行讀寫,執行效率低

                      資料庫的軟體:

                            1)對資料永久儲存

                            2)執行效率高

                            3)方便維護和管理

Mysql:資料庫軟體
* 安裝:
 請百度
* 解除安裝:
1.關閉mysql服務
1.手動關閉:我的電腦-->右鍵-->管理
2.cmd-->services.msc,開啟服務面板
3.cmd-->net stop mysql。(注意獲取cmd管理員許可權)
2.解除安裝
3.刪除資料儲存檔案
* 找到mysql的安裝目錄。中my.ini檔案
datadir目錄,刪除

* 使用:
* 登陸資料庫:
cmd-->mysql -uroot -p你自己的密碼

* 服務:系統後臺程序
* 啟動服務: net start mysql
* 停止服務: net stop mysql
* 配置:
修改mysql的密碼步驟:
1) 停止mysql服務 執行輸入services.msc 停止mysql服務
或者 cmd --  net stop mysql
2) 在cmd下 輸入 mysqld --skip-grant-tables 啟動伺服器 游標不動 (不要關閉該視窗)
3) 新開啟cmd 輸入mysql -u root -p 不需要密碼 
use mysql;
update user set password=password('abc') WHERE User='root';
4) 關閉兩個cmd視窗 在工作管理員結束mysqld 程序 
5) 在服務管理頁面 重啟mysql 服務

 SQL:結構化查詢語言
* 概念:通過sql語言可以操作所有的關係型資料庫。每種資料庫之間會存在差異,稱為 "方言"

* sql分類:
DDL(Data Definition Language):資料定義語言,用來定義資料庫物件:庫、表、列等;
DML(Data Manipulation Language):資料操作語言,用來定義資料庫記錄(增、刪、改)
DCL(Data Control Language):資料控制語言,用來定義訪問許可權和安全級別;
DQL(Data Query Language):資料查詢語言,用來查詢記錄(資料)。




* DDL:操作資料庫 和 表
* 操作資料庫:
* 建立:create database 資料庫名稱;
* 刪除:drop database 資料庫名稱;
* 修改:ALTER DATABASE mydb1 CHARACTER SET 要修改的字符集名稱
* 查詢:show databases; -- 查詢所有資料庫的名稱
show create database 資料庫名稱; -- 查詢建立資料庫語句

* 操作表:
* 建立:
* 列的資料型別:
* int:整型id int,
* double:浮點型,例如double(5,2)表示最多5位,其中必須有2位小數,即最大值為999.99;
money double(5,2)
char:固定長度字串型別;
name char(10) "張三"
* varchar:可變長度字串型別;
name varchar(10)"張三"

text:字串型別;存大格式的文字 比如存個小說 一般不用
blob:位元組型別;存位元組型別的資料  比如電影位元組  圖片位元組 但是一般不會把位元組資料存到資料庫當中
date:日期型別,格式為:yyyy-MM-dd;
time:時間型別,格式為:hh:mm:ss
datetime:日期時間型別   yyyy-MM-dd hh:mm:ss
* timestamp:時間戳型別yyyy-MM-dd hh:mm:ss
* 如果該型別的欄位不給賦值,則預設當前時間

* 語法:
create table 表名(
列名1 型別1,
列名2 型別2,
...
列名n 型別n

);

create table student(
sname varchar(20),
age int,
gender varchar(6)
);



* 刪除:drop table 表名;
* 修改:
1.修改之新增列:給stu表新增classname列:
ALTER TABLE stu ADD (classname varchar(100));
2.修改之修改列型別:修改stu表的gender列型別為CHAR(2):
ALTER TABLE stu MODIFY gender CHAR(2);
3.修改之修改列名:修改stu表的gender列名為sex:
ALTER TABLE stu change gender sex CHAR(2);
4.修改之刪除列:刪除stu表的classname列:
ALTER TABLE stu DROP classname;
5.修改之修改表名稱:修改stu表名稱為student:
ALTER TABLE stu RENAME TO student;



* 查詢:show tables; -- 查詢該資料庫下所有表名稱
desc 表名; -- 查詢表結構
* 注意:操作表之前,應該先選擇一個數據庫使用:use 資料庫名稱;




* DML:操作表中的資料
* 增:
* 語法:
* insert into 表名(列名1,列名2,...)values(值1,值2,....);
* 注意:如果表的所有列都新增值,則列名可以省略

insert into stu(sname,age) values("lisi",23);
insert into stu(sname,age,sex) values("zhangsan",23,'1');
insert into stu values("ww",23,'2');
* 刪:
* 語法:
* delete from 表名 [where 條件];
* truncate table 表名;-- 刪除所有記錄
* 先刪除表,再建立表。

delete from stuwhere sname = 'lisi'

* 改:
* 語法:
* update 表名 set 列名1 = 值1 , 列名2 = 值2... [where 條件]

update stu set sex = "1" where sname = "lisi";

update 
customer 
set 
money = 500000
where 
id = xxx;

* DQL:查詢
* 語法:
SELECT 
selection_list /*要查詢的列名稱*/
FROM 
table_list /*要查詢的表名稱*/
WHERE 
condition /*行條件*/
GROUP BY 
grouping_columns /*對結果分組*/
HAVING 
condition /*分組後的行條件*/
ORDER BY 
sorting_columns /*對結果分組*/
LIMIT 
offset_start, row_count /*結果限定*/



* 條件查詢:where 子句
=、!=、<>(不等於)、<、<=、>、>=;
BETWEEN…AND;  在什麼範圍之間
IN(set);
IS NULL;為空
IS NOT NULL 不為空
AND; 並且
OR;   或者
NOT;非