SQL 基礎-----command 命令彙總

插入SQL數據
使用insert語句
 添加包含指定的字段值的新記錄到表尾。INSERT SQL 命令有3 種語法:
用第一種語法,將指定值插入到表中的指定字段。
用第二種語法,將數組元素內容、內存變量、或對象屬性插入到表中匹配的字段。
用第三種語法,將 SQL SELECT 命令的返回行插入到表中的指定字段。
示例 1
下例打開 Employee 表,並添加一條記錄
USE employee
INSERT INTO employee (emp_no, fname, lname, officeno) ;
VALUES (3022, "John", "Smith", 2101)

示例 2
下例用 USE 命令打開數據庫 TestData.dbc 中的 Customer 表,然後用 SCATTER 命令將當前記錄的內容複製到內存變量中。用 COPY STRUCTURE 將表結構複製到名爲Cust2 的新表。

用INSERT 命令從內存變量中插入新記錄到 Cust2 表。用SELECT 命令從 Cust2 表重新中獲得數據,然後用BROWSE 顯示新記錄。

清理,用沒有指定表名的 USE命令關閉當前工作區中的表,然後用 DELETE 刪除Cust2。
CLOSE DATABASES
CLEAR
OPEN DATABASE (HOME(2) + 'Data\TestData')
USE Customer
SCATTER MEMVAR
COPY STRUCTURE TO Cust2
INSERT INTO Cust2 FROM MEMVAR
SELECT CUST2
BROWSE
USE
DELETE FILE cust2.dbf
示例 3 *NEW
下例用 SELECT 語句返回的 Orders 表的結果,將數據插入到 OrdersArchive 表。
INSERT INTO OrdersArchive (order_id, order_date, ship_name) ;
SELECT order_id, order_date, ship_name FROM Orders ;
WHERE order_date >= (DATE()-30)

更新SQL數據
UPDATE 表
SET 列名 = 值,Column_Name2 = eexpression_r2 ...]
[FROM [FORCE] Table_List_Item [[, ...] | [JOIN [ Table_List_Item]]]
WHERE 更新條件 [AND | OR FilterCondition2 ...]
如果在 SET 子句中使用子查詢(subquery),則不能在 WHERE 子句中使用子查詢(subquery)。一個在 SET 子句中的子查詢(subquery)必須正確運用, 與在關係操作中使用的子查詢相同。
[FROM [FORCE] Table_List_Item[[, ...] | [JOIN [ Table_List_Item]]] *NEWVFP9
指定一個或多個表,其中包含在更新操作中所用到的數據。除以下限制之外,FROM 子句的語法與在 SQL SELECT 命令中的的語法相同:
目標表或臨時表不能包含在一個 OUTER 連接中作爲一個次級表或臨時表。
在目標表中執行一個 JOIN 操作前,它應該對所有其它JOIN 操作求值。
目標臨時表不能由子查詢(subquery)產生。
想要確定被更新的記錄數,可以在執行 SQL UPDATE 命令之後立即檢查_TALLY 系統內存變量的值

下例展示了在UPDATE 語句的 SET 子句中的表達式使用一個子查詢(subquery)。用此查詢更新 products 表中的所有記錄。如果在 mfg_msrp表中存在不匹配的 productID,則字段unitprice 設置爲 NULL
UPDATE products ;
SET unitprice = ;
(SELECT (msrp*.90) ;
FROM mfg_msrp ;
WHERE mfg_msrp.productID =products.productID ;
AND mfg_msrp.discontinued =.f.)
下例展示了一個關聯更新,只有符合 WHERE 子句中篩選條件的記錄才被更新。
UPDATE products ;
SET unitprice = mfg_msrp.msrp*.90 ;
FROM mfg_msrp ;
WHERE mfg_msrp.productID = products.productID;
AND mfg_msrp.discontinued = .f.
下例是一個關聯更新,更新結果中僅包含第一條尋找到的匹配記錄。其它匹配的記錄被忽略。示例代碼指定了兩個臨時表。第一個是更新目標。第二個是更新的源,且內容中有二條與目標臨時表第一條記錄進行交換,不是更新所有目標臨時表中記錄。在結果中,第一條記錄的值是第一個匹配.50 ,而不是第二個匹配 10.00。
CLOSE DATABASES ALL
CREATE CURSOR MyProducts (ProdID I , ProdCategory I NULL, MSRP Y NULL)
INSERT INTO MyProducts VALUES (1,9,1.00)
INSERT INTO MyProducts VALUES (2,8,2.00)
INSERT INTO MyProducts VALUES (3,7,3.00)

CREATE CURSOR MyUpdates (ProdID I , MSRP Y)
INSERT INTO MyUpdates VALUES (1,.50) && 匹配並更新.
INSERT INTO MyUpdates VALUES (2,20.00) && 匹配並更新.
INSERT INTO MyUpdates VALUES (4,40.00) && 不匹配
INSERT INTO MyUpdates VALUES (1,10.00)&& 第二次匹配,但不更新.

UPDATE MyProducts SET MSRP=MyUpdates.MSRPFROM MyUpdates WHERE MyProducts.ProdID=MyUpdates.ProdID

SELECT MyProducts
BROWSE

 

 

mysqldump命令的使用
備份和導出數據庫
mysqldump -h database_ip -u Username -p --opt databasename > backup-file.sql
只導出數據庫表結構
mysqldump -h database_ip -d -u Username -p databasename>database_structure.sql
只導出數據庫中的某個表
mysqldump --opt --add-drop-table -u Username -p databasename tablename >dump.sql
如果不想手工輸入密碼 請使用--password參數
mysqldump -h database_ip -u Username --password=123456 --opt databasename >backup-file.sql
mysqldump -h database_ip -d -u Username --password=123456 databasename>database_structure.sql

mysql 命令使用
將查詢結果保存到文件
select title from book into outfile '/tmp/outfile.txt';
查找表中多餘的重複記錄,重複記錄是根據某個字段(peopleId)來判斷
select * from people where peopleId in (select peopleId from people group by
peopleId having count(peopleId) > 1);
查詢表中不重複記錄(排除重複記錄)
select * from phome_ecms_wma where title in (select distinct title fromphome_ecms_wma);
刪除表中重複記錄,重複記錄是根據某個字段(title)來判斷
select *,count(distinct title) INTO OUTFILE '/tmp/table.bak' fromphome_ecms_wma group by title;
delete from phome_ecms_wma;
LOAD DATA INFILE '/tmp/table.bak' REPLACE INTO TABLE phome_ecms_wma characterset utf8;
查詢數據庫當前編碼
mysql> show variables like "character_set%";
修改表字段類型
mysql> alter table table_name change last_action last_action datetime NOTNULL default '0000-00-00 00:00:00';
給表添加一個新字段
mysql> ALTER TABLE host ADD ks_mac VARCHAR(100);
從表中刪除一個字段
mysql> ALTER TABLE table_name DROP field_name;
重命名錶
mysql>alter table t1 rename t2;
給字段加索引
mysql> alter table tablename add index 索引名 (字段名1[,字段名2 …]);
mysql> alter table tablename add index emp_name (name);
加主關鍵字的索引
mysql> alter table tablename add primary key(id);
加唯一限制條件的索引
mysql> alter table tablename add unique emp_name2(cardnumber);
刪除某個索引
mysql>alter table tablename drop index emp_name;
遠程訪問mysql 設置
mysql> GRANT ALL PRIVILEGES ON database_test.* to [email protected] BY '123456';
mysql> FLUSH PRIVILEGES;
1、使用SHOW語句找出在服務器上當前存在什麼數據庫
mysql> show databases;
2、創建一個數據庫MYSQLDATA
mysql> create database mydata;
3、選擇你所創建的數據庫
mysql> use mydata;
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 ("test","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=test;
剛安裝好的MySQL包含一個含空密碼的root帳戶和一個匿名帳戶,這是很大的安全隱患,對於一些重要的應用我們應將安全性儘可能提高,在這裏應把匿名帳戶刪除、root帳戶設置密碼,可用如下命令進行:
=======================================
mysql> use mysql;
mysql> delete from User where User="";
mysql> update User set Password=PASSWORD(newpassword) where User=root;
=======================================
如果要對用戶所用的登錄終端進行限制,可以更新User表中相應用戶的Host字段,在進行了以上更改後應重新啓動數據庫服務,此時登錄時可用如下類似命令:
=======================================
shell> mysql -uroot -p;
shell> mysql -uroot -pnewpassword;
shell> mysql mydb -uroot -p;
shell> mysql mydb -uroot -pnewpassword;
=======================================
上面命令參數是常用參數的一部分,詳細情況可參考文檔。此處的mydb是要登錄的數據庫的名稱。
在進行開發和實際應用中,用戶不應該只用root用戶進行連接數據庫,雖然使用root用戶進行測試時很方便,但會給系統帶來重大安全隱患,也不利於管理技術的提高。我們給一個應用中使用的用戶賦予最恰當的數據庫權限。如一個只進行數據插入的用戶不應賦予其刪除數據的權限。MySQL的用戶管理是通過User表來實現的,添加新用戶常用的方法有兩個,一是在User表插入相應的數據行,同時設置相應的權限;二是通過grant命令創建具有某種權限的用戶。其中grant的常用用法如下:
================================================================
mysql> grant all on mydb.* to NewUserName@HostName identified by"password" ;
mysql> grant usage on *.* to NewUserName@HostName identified by"password";
mysql> grant select,insert,update on mydb.* to NewUserName@HostNameidentified by "password";
mysql> grant update,delete on mydb.TestTable to NewUserName@HostNameidentified by "password";
================================================================
若要給此用戶賦予他在相應對象上的權限的管理能力,可在grant後面添加withgrant option選項。而對於用插入User表添加的用戶,Password字段應用password函數進行更新加密,以防不軌之人竊看密碼。對於那些已經不用的用戶應給予清除,權限過界的用戶應及時回收權限,回收權限可以通過更新User表相應字段,也可以使用revoke操作。以下是常用權限的解釋:
=============================================
全局管理權限
FILE:在MySQL服務器上讀寫文件。
PROCESS:顯示或殺死屬於其它用戶的服務線程。
RELOAD:重載訪問控制表,刷新日誌等。
SHUTDOWN:關閉MySQL服務。
數據庫/數據表/數據列權限
ALTER:修改已存在的數據表(例如增加/刪除列)和索引。
CREATE:建立新的數據庫或數據表。
DELETE:刪除表的記錄。
DROP:刪除數據表或數據庫。
INDEX:建立或刪除索引。
INSERT:增加表的記錄。
SELECT:顯示/搜索表的記錄。
UPDATE:修改表中已存在的記錄。
特別的權限
ALL:允許做任何事(和root一樣)。
USAGE:只允許登錄--其它什麼也不允許做。
=============================================
MySQL常用操作基本操作,以下都是MySQL5.0下測試通過首先說明下,記住在每個命令結束時加上;(分號)
1.導出整個數據庫
mysqldump -u 用戶名 -p --default-character-set=latin1 數據庫名 > 導出的文件名(數據庫默認編碼是latin1)
mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql
2.導出一個表
mysqldump -u 用戶名 -p 數據庫名 表名> 導出的文件名
mysqldump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sql
3.導出一個數據庫結構
mysqldump -u wcnc -p -d –add-drop-table smgp_apps_wcnc >d:wcnc_db.sql
-d 沒有數據 –add-drop-table 在每個create語句之前增加一個drop table
4.導入數據庫
常用source 命令
進入mysql數據庫控制檯,
如mysql -u root -p
mysql>use 數據庫
然後使用source命令,後面參數爲腳本文件(如這裏用到的.sql)
mysql>source d:wcnc_db.sql
一、啓動與退出
1、進入MySQL:啓動MySQL Command Line Client(MySQL的DOS界面),直接輸入安裝時的密碼即可。此時的提示符是:mysql>
2、退出MySQL:quit或exit
二、庫操作
1、、創建數據庫
命令:create database <數據庫名>
例如:建立一個名爲xhkdb的數據庫
mysql> create database xhkdb;
2、顯示所有的數據庫
命令:show databases (注意:最後有個s)
mysql> show databases;
3、刪除數據庫
命令:drop database <數據庫名>
例如:刪除名爲 xhkdb的數據庫
mysql> drop database xhkdb;
4、連接數據庫
命令: use <數據庫名>
例如:如果xhkdb數據庫存在,嘗試存取它:
mysql> use xhkdb;
屏幕提示:Database changed
5、當前選擇(連接)的數據庫
mysql> select database();
6、當前數據庫包含的表信息:
mysql> show tables; (注意:最後有個s)
三、表操作,操作之前應連接某個數據庫
1、建表
命令:create table <表名> (<字段名1> <類型1> [,..<字段名n> <類型n>]);
mysql> create table MyClass(
> id int(4) not null primary key auto_increment,
> name char(20) not null,
> sex int(4) not null default '0',
> degree double(16,2));
2、獲取表結構
命令: desc 表名,或者show columns from 表名
mysql> desc MyClass;
mysql> show columns from MyClass;
3、刪除表
命令:drop table <表名>
例如:刪除表名爲 MyClass 的表
mysql> drop table MyClass;
4、插入數據
命令:insert into <表名> [(<字段名1>[,..<字段名n > ])] values ( 值1 )[, ( 值n )]
例如,往表 MyClass中插入二條記錄, 這二條記錄表示:編號爲1的名爲Tom的成績爲96.45, 編號爲2 的名爲Joan 的成績爲82.99,編號爲3 的名爲Wang 的成績爲96.5.
mysql> insert into MyClass values(1,'Tom',96.45),(2,'Joan',82.99),(2,'Wang', 96.59);
5、查詢表中的數據
1)、查詢所有行
命令: select <字段1,字段2,...> from < 表名 > where < 表達式 >
例如:查看錶 MyClass 中所有數據
mysql> select * from MyClass;
2)、查詢前幾行數據
例如:查看錶 MyClass 中前2行數據
mysql> select * from MyClass order by id limit 0,2;
6、刪除表中數據
命令:delete from 表名 where 表達式
例如:刪除表 MyClass中編號爲1 的記錄
mysql> delete from MyClass where id=1;
7、修改表中數據:update 表名 set 字段=新值,… where 條件
mysql> update MyClass set name='Mary' where id=1;
7、在表中增加字段:
命令:alter table 表名 add字段 類型 其他;
例如:在表MyClass中添加了一個字段passtest,類型爲int(4),默認值爲0
mysql> alter table MyClass add passtest int(4) default '0'
8、更改表名:
命令:rename table 原表名 to 新表名;
例如:在表MyClass名字更改爲YouClass
mysql> rename table MyClass to YouClass;

更新字段內容
update 表名 set 字段名 = 新內容
update 表名 set 字段名 = replace(字段名,'舊內容','新內容');
文章前面加入4個空格
update article set content=concat('  ',content);
字段類型
1.INT[(M)] 型: 正常大小整數類型
2.DOUBLE[(M,D)] [ZEROFILL] 型: 正常大小(雙精密)浮點數字類型
3.DATE 日期類型:支持的範圍是1000-01-01到9999-12-31。MySQL以YYYY-MM-DD格式來顯示DATE值,但是允許你使用字符串或數字把值賦給DATE列
4.CHAR(M) 型:定長字符串類型,當存儲時,總是是用空格填滿右邊到指定的長度
5.BLOB TEXT類型,最大長度爲65535(2^16-1)個字符。
6.VARCHAR型:變長字符串類型

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