MYSQL基礎語法

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存儲結構

spacer.gif



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('  ', '  ', '  ' );

spacer.gif

Update

Update table_name set 屬性=123 where id=XXX;

spacer.gif


Delete

Delete from table_name; 清空整個表的內容,但是保留表名。

spacer.gif


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再繼續整理。腦地不給力,容易忘


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章