1. 程式人生 > >MySql常用命令集Mysql常用命令5

MySql常用命令集Mysql常用命令5

完全 fun 謂詞 詳細 127.0.0.1 char l數據庫 pict jet

九. 交叉查詢

  交叉查詢可以對數據進行總和,平均,計數或其他總和計算法的計算,這些數據通過

  兩種信息進行分組:一個顯示在表的左部,另一個顯示在表的頂部.

  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