MySQL
l MySQL 安裝配置
卸載
在mysql安裝目錄 my.ini
datadir="C:/Documentsand Settings/All Users/Application Data/MySQL/MySQL Server 5.5/Data/"
1) 在控制面板中卸載MySQL
2) 刪除mysql 安裝目錄
3) 刪除MySQL數據文件目錄
重置密碼
方法一:
在my.ini的[mysqld]字段加入:
skip-grant-tables
重啓mysql服務,這時的mysql不需要密碼即可登錄數據庫
然後進入mysql
mysql>use mysql;
mysql>update user set password=password('新密碼') WHERE User='root';
mysql>flush privileges;
運行之後最後去掉my.ini中的skip-grant-tables,重啓mysqld即可。
方法二:
不使用修改my.ini重啓服務的方法,通過非服務方式加skip-grant-tables運行mysql來修改mysql密碼
1) 停止mysql服務器 運行輸入services.msc 停止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 服務
密碼修改完成
l MySQL存儲結構
l MySQL數據庫的備份與恢復
備份命令 mysql/bin/mysqldump 將數據庫SQL語句導出
語法:mysqldump -u 用戶名 -p 數據庫名 > 磁盤SQL文件路徑
例如: 備份day12數據庫 --- c:\day12.sql
cmd > mysqldump -u root -p day12 > c:\day12.sql 回車輸入密碼
注意:不是在mysql窗口下輸入,而是在cmd下輸入命令
恢復命令 mysql/bin/mysql 將sql文件導入到數據庫
語法: mysql -u 用戶名 -p 數據庫名 < 磁盤SQL文件路徑
***** 導入SQL 必須手動創建數據庫 ,SQL不會創建數據庫
例如:將c:\day12.sql 導入 day12數據庫
cmd > mysql -u root -p day12 < c:\day12.sql 回車密碼
補充知識:恢復SQL也可以在數據庫內部執行 source c:\day12.sql
l 多表設計原則 :所有關係數據只能存在三種對應關係 (一對一、一對多、多對多)
多對多關係 : 僱員和項目關係
一個僱員可以參與多個項目
一個項目可以由多個僱員參與
建表原則:必須創建第三張關係表,在關係表中引用兩個實體主鍵 作爲外鍵
關係表中每條記錄,代表一個僱員參與了一個項目
一對多關係: 用戶和博客關係
一個用戶可以發表多篇博客
一個博客只能由一個作者
建表原則:不需要創建第三方關係表,只需要在多方添加 一方主鍵作爲 外鍵
一對一關係 : 這種關係很少見到 負責人和工作室
一個負責人 管理一個工作室
一個工作室 只有一個負責人
建表規則:在任一方添加對方主鍵 作爲外鍵
l 多表查詢——笛卡爾積
將A表中每條記錄 與 B表中每條記錄進行 匹配 獲得笛卡爾積
select * from emp;
select * from dept;
select * from emp,dept; 顯示結果就是笛卡爾積
笛卡爾積結果就是兩個表記錄乘積 例如A 表3條 B表4條 ---- 笛卡爾積 12條
笛卡爾積結果是無效的,必須從笛卡爾積中選取有效的數據結果 !!!
內連接
select * from a,b where a.a_id = b.a_id;
* 內連接查詢結果條數 一定小於 兩個表記錄較少哪個表 ----- 例如 A表3條 B表5條 ---- 內連接結果條數 <= 3
l 數據庫完整性約束
primary key 主鍵、unique 唯一、not null非空 、foreign key 外鍵、check 條件約束(mysql不支持,oracle中使用)
MySQL語法
數據庫啓動和關閉。
* cmd > net start mysql
* cmd > net stop mysql
* 顯示當前數據庫服務器中的數據庫列表
* mysql> show databases;
* 使用數據庫
* mysql> use 庫名;## 注意:只有在命令創建時,才需要手動使用數據庫
* 顯示當前數據庫中的數據表
* mysql>show tables;
* 顯示當前所使用的數據庫名稱
* mysql> select database();
* 顯示當前數據庫的狀態
* mysql> status;
* 顯示當前數據庫中某表的表結構 (DESCRIBE(describe) )
* mysql> desc user;
* 顯示所支持的字符集
* mysql > show character set;
mysql -uroot -pasa 登陸mysql
Show databases; 展示數據庫
Use database_name; 打開指定數據庫
Show tables; 顯示數據庫裏面的表
select * from table_name 查詢表的內容
字段:
* 添加字段:mysql > alter table 表名 add column 字段描述;
* 刪除字段:mysql > alter table 表名 drop column 字段名稱;
DDL數據定義語言
Create database database_name; 添加數據庫
Drop database database_name;刪除數據庫
Create table table_name(
Id int,
Name varchar(32)
);
創建表,前幾行再後面加單引號,定義最後一行屬性不需要加任何符號,最後結尾處加“ ; ”。
Drop table table_name; 移除表
DML數據操作語言
Insert:
Insert into table_name(屬性1,屬性2,屬性。。。) values(' ', ' ', ' ' );
Update
Update table_name set 屬性=123 where id=XXX;
Delete
Delete from table_name; 清空整個表的內容,但是保留表名。
DQL數據查詢語言
Select 查詢的內容 from 表 where 條件 group by 以XX分組 having 分組的條件 order by desc,asc 排序。
mysql> select age from users order by age asc; 按照年齡排序
mysql> select distinct age from users order by age asc;# 去重複
Group by 應用:
mysql> select classes ,sum(count)/count(id) as classAvg from users group by classes having classAvg <60;
中文亂碼問題
Show create table table_name 顯示創建表的編碼情況。
Show variables like '%char%' 顯示數據庫編碼環境變量
解決方法:預先設置 set names gbk;
SQL約束
主鍵約束:
Id int primary key auto_increment 自動增長列
constraint primary key(字段名稱)
alter table 表名 add constraint primary key(字段1,字段2,...);
還有外鍵約束,沒時間一步步的敲,待結束完JDBC再繼續整理。腦地不給力,容易忘