MySql常用命令集Mysql常用命令5
九. 交叉查詢
交叉查詢可以對數據進行總和,平均,計數或其他總和計算法的計算,這些數據通過
兩種信息進行分組:一個顯示在表的左部,另一個顯示在表的頂部.
Microsoft Jet SQL 用TRANSFROM語句創建交叉表查詢語法:
TRANSFORM aggfunction
Select 語句
GROUP BY 子句
PIVOT pivotfield[IN(value1 [,value2[,…]]) ]
Aggfounction指SQL聚積函數,
Select語句選擇作為標題的的字段,
GROUP BY 分組
說明:
Pivotfield 在查詢結果集中創建列標題時用的字段或表達式,用可選的IN子句限制
它的取值.
value代表創建列標題的固定值.
例:顯示在1996年裏每一季度每一位員工所接的定單的數目:
TRANSFORM Count(OrderID)
Select FirstName&‘‘&LastName AS FullName
FROM Employees INNER JOIN orders
ON Employees.EmployeeID = orders.EmployeeID
Where DatePart("yyyy",OrderDate)= ‘1996‘
GROUP BY FirstName&‘‘&LastName
orDER BY FirstName&‘‘&LastName
POVOT DatePart("q",OrderDate)&‘季度‘
十 .子查詢
子查詢可以理解為 套查詢.子查詢是一個Select語句.
1 表達式的值與子查詢返回的單一值做比較
語法:
表達式 comparision [ANY|ALL|SOME](子查詢)
說明:
ANY 和SOME謂詞是同義詞,與比較運算符(=,<,>,$amp;
值True或 False.ANY的意思是,表達式與子查詢返回的一系列的值逐一比較,只要其
中的一次比較產生True結果,ANY測試的返回 True值(既Where子句的結果),對應於
該表達式的當前記錄將進入主查詢的結果中.ALL測試則要求表達式與子查詢返回的
一系列的值的比較都產生 True結果,才回返回True值.
例:主查詢返回單價比任何一個折扣大於等於25%的產品的單價要高的所有產品
Select * FROM Products
Where UnitPrice>ANY
(Select UnitPrice FROM[Order Details] Where Discount>0.25)
2 檢查表達式的值是否匹配子查詢返回的一組值的某個值
語法:
[NOT]IN(子查詢)
例:返回庫存價值大於等於1000的產品.
Select ProductName FROM Products
Where ProductID IN
(Select PrdoctID FROM [Order DEtails]
Where UnitPrice*Quantity>= 1000)
3檢測子查詢是否返回任何記錄
語法:
[NOT]EXISTS (子查詢)
例:用EXISTS檢索英國的客戶
Select ComPanyName,ContactName
FROM orders
Where EXISTS
(Select *
FROM Customers
Where Country = ‘UK‘ AND
Customers.CustomerID= orders.CustomerID)
1:使用SHOW語句找出在服務器上當前存在什麽數據庫:
mysql> SHOW DATABASES;
2:2、創建一個數據庫MYSQLDATA
mysql> Create DATABASE MYSQLDATA;
3:選擇你所創建的數據庫
mysql> USE MYSQLDATA; (按回車鍵出現Database changed 時說明操作成功!)
4:查看現在的數據庫中存在什麽表
mysql> SHOW TABLES;
5:創建一個數據庫表
mysql> Create TABLE MYTABLE (name VARCHAR(20), sex CHAR(1));
6:顯示表的結構:
mysql> DESCRIBE MYTABLE;
7:往表中加入記錄
mysql> insert into MYTABLE values ("hyq","M");
8:用文本方式將數據裝入數據庫表中(例如D:/mysql.txt)
mysql> LOAD DATA LOCAL INFILE "D:/mysql.txt" INTO TABLE MYTABLE;
9:導入.sql文件命令(例如D:/mysql.sql)
mysql>use database;
mysql>source d:/mysql.sql;
10:刪除表
mysql>drop TABLE MYTABLE;
11:清空表
mysql>delete from MYTABLE;
12:更新表中數據
mysql>update MYTABLE set sex="f" where name=‘hyq‘;
以下是無意中在網絡看到的使用MySql的管理心得,
摘自:
在windows中MySql以服務形式存在,在使用前應確保此服務已經啟動,未啟動可用net start mysql命令啟動。而Linux中啟動時可用“/etc/rc.d/init.d/mysqld start"命令,註意啟動者應具有管理員權限。
剛安裝好的MySql包含一個含空密碼的root帳戶和一個匿名帳戶,這是很大的安全隱患,對於一些重要的應用我們應將安全性盡可能提高,在這裏應把匿名帳戶刪除、 root帳戶設置密碼,可用如下命令進行:
use mysql;
delete from User where User="";
update User set Password=PASSWORD(‘newpassword‘) where User=‘root‘;
如果要對用戶所用的登錄終端進行限制,可以更新User表中相應用戶的Host字段,在進行了以上更改後應重新啟動數據庫服務,此時登錄時可用如下類似命令:
mysql -uroot -p;
mysql -uroot -pnewpassword;
mysql mydb -uroot -p;
mysql mydb -uroot -pnewpassword;
上面命令參數是常用參數的一部分,詳細情況可參考文檔。此處的mydb是要登錄的數據庫的名稱。
在進行開發和實際應用中,用戶不應該只用root用戶進行連接數據庫,雖然使用root用戶進行測試時很方便,但會給系統帶來重大安全隱患,也不利於管理技術的提高。我們給一個應用中使用的用戶賦予最恰當的數據庫權限。如一個只進行數據插入的用戶不應賦予其刪除數據的權限。MySql的用戶管理是通過User表來實現的,添加新用戶常用的方法有兩個,一是在User表插入相應的數據行,同時設置相應的權限;二是通過GRANT命令創建具有某種權限的用戶。其中GRANT的常用用法如下:
grant all on mydb.* to NewUserName@HostName identified by "password" ;
grant usage on *.* to NewUserName@HostName identified by "password";
grant select,insert,update on mydb.* to NewUserName@HostName identified by "password";
grant update,delete on mydb.TestTable to NewUserName@HostName identified by "password";
若要給此用戶賦予他在相應對象上的權限的管理能力,可在GRANT後面添加WITH GRANT OPTION選項。而對於用插入User表添加的用戶,Password字段應用PASSWORD 函數進行更新加密,以防不軌之人竊看密碼。對於那些已經不用的用戶應給予清除,權限過界的用戶應及時回收權限,回收權限可以通過更新User表相應字段,也可以使用REVOKE操作。
下面給出本人從其它資料()獲得的對常用權限的解釋:
全局管理權限:
FILE: 在MySQL服務器上讀寫文件。
PROCESS: 顯示或殺死屬於其它用戶的服務線程。
RELOAD: 重載訪問控制表,刷新日誌等。
SHUTDOWN: 關閉MySQL服務。
數據庫/數據表/數據列權限:
Alter: 修改已存在的數據表(例如增加/刪除列)和索引。
Create: 建立新的數據庫或數據表。
Delete: 刪除表的記錄。
Drop: 刪除數據表或數據庫。
INDEX: 建立或刪除索引。
Insert: 增加表的記錄。
Select: 顯示/搜索表的記錄。
Update: 修改表中已存在的記錄。
特別的權限:
ALL: 允許做任何事(和root一樣)。
USAGE: 只允許登錄--其它什麽也不允許做。
1、MySQL常用命令
create database name; 創建數據庫
use databasename; 選擇數據庫
drop database name 直接刪除數據庫,不提醒
show tables; 顯示表
describe tablename; 表的詳細描述
select 中加上distinct去除重復字段
mysqladmin drop databasename 刪除數據庫前,有提示。
顯示當前mysql版本和當前日期
select version(),current_date;
2、修改mysql中root的密碼:
shell>mysql -u root -p
mysql> update user set password=password(”xueok654123″) where user=’root’;
mysql> flush privileges //刷新數據庫
mysql>use dbname; 打開數據庫:
mysql>show databases; 顯示所有數據庫
mysql>show tables; 顯示數據庫mysql中所有的表:先use mysql;然後
mysql>describe user; 顯示表mysql數據庫中user表的列信息);
3、grant
創建一個可以從任何地方連接服務器的一個完全的超級用戶,但是必須使用一個口令something做這個
mysql> grant all privileges on *.* to user@localhost identified by ’something’ with
增加新用戶
格式:grant select on 數據庫.* to 用戶名@登錄主機 identified by “密碼”
GRANT ALL PRIVILEGES ON *.* TO monty@localhost IDENTIFIED BY ’something’ WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO monty@”%” IDENTIFIED BY ’something’ WITH GRANT OPTION;
刪除授權:
mysql> revoke all privileges on *.* from root@”%”;
mysql> delete from user where user=”root” and host=”%”;
mysql> flush privileges;
創建一個用戶custom在特定客戶端it363.com登錄,可訪問特定數據庫fangchandb
mysql >grant select, insert, update, delete, create,drop on fangchandb.* to custom@ it363.com identified by ‘ passwd’
重命名表:
mysql > alter table t1 rename t2;
4、mysqldump
備份數據庫
shell> mysqldump -h host -u root -p dbname >dbname_backup.sql
恢復數據庫
shell> mysqladmin -h myhost -u root -p create dbname
shell> mysqldump -h host -u root -p dbname < dbname_backup.sql
如果只想卸出建表指令,則命令如下:
shell> mysqladmin -u root -p -d databasename > a.sql
如果只想卸出插入數據的sql命令,而不需要建表命令,則命令如下:
shell> mysqladmin -u root -p -t databasename > a.sql
那麽如果我只想要數據,而不想要什麽sql命令時,應該如何操作呢
mysqldump -T./ phptest driver
其中,只有指定了-T參數才可以卸出純文本文件,表示卸出數據的目錄,./表示當前目錄,即與mysqldump同一目錄。如果不指定driver 表,則將卸出整個數據庫的數據。每個表會生成兩個文件,一個為.sql文件,包含建表執行。另一個為.txt文件,只包含數據,且沒有sql指令。
5、可將查詢存儲在一個文件中並告訴mysql從文件中讀取查詢而不是等待鍵盤輸入。可利用外殼程序鍵入重定向實用程序來完成這項工作。例如,如果在文件my_file.sql 中存放有查
詢,可如下執行這些查詢:
例如,如果您想將建表語句提前寫在sql.txt中:
mysql > mysql -h myhost -u root -p database < sql.txt
// 啟動服務
mysqld --console
// 停止服務
mysqladmin -u root shutdown
// 登錄後使用數據庫 mysql
mysql -u root -p mysql
mysql -u root -p -h 11.11.11.11 database
// 創建數據庫
create database db_name [default character set=gbk]
// 設置數據庫默認字符集
alter databse db_name default character set gbk
// 更換數據庫 use database test after log on
use test
// 創建一個帶圖像字段的表 create a table mypic to store picture
create table mypic (picid int, picname varchar(20), content blob);
// 顯示表的結構 describe table mypic
desc mypic
// 顯示當前表的建表語句
show create table table_name
// 更改表類型
alter table table_name engine innodb|myisam|memory
// 插入一條記錄 insert a record
insert into mypic values (1, ‘第二章‘, 0x2134545);
// 顯示當前用戶 show current user
select user();
// 顯示當前用戶密碼 show current password
select password(‘root‘);
// 顯示當前日期 show current date
select now();
// 更改用戶密碼 change user password
update user set password=password(‘xxx‘) where user=‘root‘;
// 分配用戶權限 grant
grant all privileges on *.* toroot@localhost
grant select,insert,delete,update,alter,create,drop on lybbs.* tolybbs@"%" identified by "lybbs";
grant select,insert,delete,update,alter,create,drop on lybbs.* tolybbs@localhostidentified by "lybbs";
// 在不重啟的情況下刷新用戶權限 flush privileges
flush privileges
// 向表中增加一個主鍵 add primary key
alter table mypic add primary key (picid)
// 修改表結構增加一個新的字段 add a new column userid after picid
alter table mypic add column userid int after picid
// 更改列類型,當存儲圖像過大時,使用默認blob超不過100k
alter table userpic change image image longblob;
alter table userpic modify image longblob;
// 設置默認字符集為gb2312
mysqld --default-character-set=gb2312
// 顯示詳細信息,包括字符集編碼
show full columns from userpic;
// 改變表的編碼
Alter TABLE userpic CHARACTER SET gb2312;
// mysql jdbc連接url 使用中文
jdbc:mysql://localhost/test useUnicode=true&characterEncoding=gb2312
// 執行外部腳本
source
MySQL是最受歡迎的開源SQL數據庫管理系統,由MySQL AB開發、發布和支持。MySQL AB是一家基於MySQL開發人員的商業公司,是一家使用了一種成功的商業模式來結合開源價值和方****的第二代開源公司。MySQL是MySQL AB的註冊商標。
MySQL是一個快速的、多線程、多用戶和健壯的SQL數據庫服務器。MySQL服務器支持關鍵任務、重負載生產系統的使用,也可以將它嵌入到一個大配置(mass-deployed)的軟件中去。
收集的幾篇,有空再做下整理。Mysql常用命令
show databases; 顯示數據庫
create database name; 創建數據庫
use databasename; 選擇數據庫
drop database name 直接刪除數據庫,不提醒
show tables; 顯示表
describe tablename; 顯示具體的表結構
select 中加上distinct去除重復字段
mysqladmin drop databasename 刪除數據庫前,有提示。
顯示當前mysql版本和當前日期
select version(),current_date;
修改mysql中root的密碼:
shell>mysql -h localhost -u root -p //登錄
mysql> update user set password=password("xueok654123") where user=‘root‘;
mysql> flush privileges //刷新數據庫
mysql>use dbname; 打開數據庫:
mysql>show databases; 顯示所有數據庫
mysql>show tables; 顯示數據庫mysql中所有的表:先use mysql;然後
mysql>describe user; 顯示表mysql數據庫中user表的列信息);
grant
創建用戶firstdb(密碼firstdb)和數據庫,並賦予權限於firstdb數據庫
mysql> create database firstdb;
mysql> grant all on firstdb.* to firstdb identified by ‘firstdb‘
會自動創建用戶firstdb
mysql默認的是本地主機是localhost,對應的IP地址就是127.0.0.1,所以你用你的IP地址登錄會出錯,如果你想用你的IP地址登錄就要先進行授權用grant命令。
mysql>grant all on *.* to [email protected] identified by "123456";
說明:grant 與on 之間是各種權限,例如:insert,select,update等
on 之後是數據庫名和表名,第一個*表示所有的數據庫,第二個*表示所有的表
root可以改成你的用戶名,@後可以跟域名或IP地址,identified by 後面的是登錄用的密碼,可以省略,即缺省密碼或者叫空密碼。
drop database firstdb;
創建一個可以從任何地方連接服務器的一個完全的超級用戶,但是必須使用一個
MySql常用命令集Mysql常用命令5