SQL授權語句(MySQL基本語句)

來源:互聯網
上載者:User

標籤:



看他們網上的,寫得都是千篇一律,同時,好多也寫得不是很好,下面是我自己總結的有關mysql的使用細節,也是我在學習過程中的一些記錄吧,希望對你有點協助,後面有關預存程序等相關操作還沒有總結好,下次總結好了再發給你吧,呵呵~~~~~ MySql學習筆記 MySql概述:MySql是一個種關聯資料庫管理系統,所謂關聯資料庫就是將資料儲存在不同的表中,而不是將所有資料放在一個大的倉庫中。這樣就增加了速度與提高了靈活性。並且MySql軟體是一個開放源碼軟體。 注意,MySql所支援的TimeStamp的最大範圍的問題,在32位機器上,支援的取值範圍是年份最好不要超過2030年,然後如果在64位的機器上,年份可以達到2106年,而對於date、與datetime這兩種類型,則沒有關係,都可以表示到9999-12-31,所以這一點得注意下;還有,在安裝MySql的時候,我們一般都選擇Typical(典型安裝)就可以了,當然,如果還有其它用途的話,那最好選擇Complete(完整安裝);在安裝過程中,一般的還會讓你進行伺服器類型的選擇,分別有三種伺服器類型的選擇,(Developer(開發機)、Server Machine(伺服器)、Dedicated MySql Server Machine(專用MYSQL伺服器)),選擇哪種類型的伺服器,只會對設定精靈對記憶體等有影響,不然其它方面是沒有什麼影響的;所以,我們如果是開發人員,選擇開發機就可以啦;然後接下來,還會有資料庫使用方式對話方塊的選擇,我們只要按照預設就可以啦; 串連與斷開伺服器:串連:在windows命令提示字元下輸入類似如下命令集:mysql –h host –u user –p例如,我在用的時候輸入的是:mysql –h localhost –u root –p然後會提示要你輸入使用者密碼,這個時候,如果你有密碼的話,就輸入密碼敲斷行符號,如果沒有密碼,直接敲斷行符號,就可以進入到資料庫用戶端;串連遠程主機上的mysql,可以用下面的命令:mysql –h 159.0.45.1 –u root –p 123 斷開伺服器:在進入用戶端後,你可以直接輸入quit然後斷行符號就可以了; 下面就資料庫相關命令進行相關說明你可以輸入以下命令對資料庫表格或者資料庫進行相關操作,在這裡就省略了,然後直接進行文字說明了; Select version(),current_date;//從伺服器得到當前mysql的版本號碼與當前日期Select user();  //得到當前資料庫的所有使用者Use databasename;  進入到指定的資料庫當中,然後就可以操作這個資料庫當中的表格了Show databases;  //查詢目前資料庫中所有的資料庫,並且顯示出來;Create batabase databasename;建立資料庫,例如:create database manager;Show tables;  //查看當前資料庫中的所有表格;Create table tablename(colums);建立表,並且給表指定相關列,例如:create table pet(name varchar(20),owner varchar(20),species varchar(20),sex char(1),birth date,death date); Describe tablename;將表當中的所有資訊詳細顯示出來,例如:describe pet;可以用命令一次插入多條記錄,例如:Insert into pet values(‘Puffball’,’Diane’,’hamster’,’f’,’1993-12-3’,null),( ‘Puffball’,’Diane’,’hamster’,’f’,’1993-12-3’,now());Select * from pet;  從pet表當中查詢出所有的記錄,顯示出來;Delete from pet where id=1;刪除ID為1的那一條記錄;Update pet set birth=’2001-1-3’ where name=’Bowser’;更新name為Bowser的記錄當中的birth欄位的值;Select distinct owner from pet;從pet表中選擇出owner欄位的值唯一的行,如果有多行記錄這個欄位的值相同,則只顯示最後一次出現這一值的一行記錄; 有關日期計算: Select name,birth,curdate(),(year(curdate())-year(birth)) as age from pet;此處,year()函數用於提取對應欄位的年份,當然類似的還有month(),day()等; 在mysql當中,sql語句可以使用like查詢,可以用”_”配任何單個字元,用”%”配任意數目字元,並且SQL模式預設是忽略大小寫,例如:select * from pet where name like ‘%fy’;當然也可以用Regex模式進行配。 同時在sql當中,也要注意分組函數、排序函數、統計函數等相關用法,在這裡只列舉一二;Select species,count(*) from pet group by speceis;Select * from pet order by birth desc; 查詢最大值的相關操作:Select max(age) from pet;取前多少項記錄,這個主要用於分頁查詢操作當中,Select * from pet order by birth desc limit 3;取前三條記錄,Select * from pet order by birth desc limit 0,3;這個可以用於分頁查詢,limit後面的第一個參數,是起始位置,第二個參數是取記錄條數; 有關建立表格自增長欄位的寫法:Create table person(id int(4) not null auto_increment,name char(20) not null,primary key (id)); 修改表操作:向表中增加欄位:注意,在這個地方,如果是增加多個欄位的時候,就要用括弧括起來,不然會有問題,如果是單個欄位的話,不用括弧也沒事;Alter table test add(address varchar(50) not null default ‘xm’,email varchar(20) not null); 將表中某個欄位的名字修改或者修改其對應的相關屬性的時候,要用change對其進行操作;Alter table test change email email varchar(20) not null default ‘zz’;//不修改欄位名 Alter table test change email Email varchar(30) not null;//修改欄位名稱 刪除表中欄位:Alter table test drop email;//刪除單個欄位Alter table test drop address,drop email;//刪除多列 可以用Drop來取消主鍵與外鍵等,例如:Alter table test drop foreign key fk_symbol;刪除索引:Drop index index_name on table_name;例如:drop index t on test;向表中插入記錄:注意,當插入表中的記錄並不是所有的欄位的時候,應該要在前面列出欄位名稱才行,不然會報錯;Insert into test(name) values(‘ltx’);Insert into test values(1,’ltx’);也可以向表中同時插入多列值,如:Insert into test(name) values(‘ltx’),(‘hhy’),(‘xf’);刪除表中記錄:Delete from test;//刪除表中所有記錄;Delete from test where id=1;//刪除表中特定條件下的記錄; 當要從一個表或者多個表當中查詢出一些欄位然後把這些欄位又要插入到另一個表當中的時候,可以用insert …..select文法;Insert into testt(name) (select name from test where id=4); 從檔案中讀取行插入資料表中,可以用Load data infile語句;Load data infile ‘test.txt’ into table test; 可以用Describe文法進行擷取有關列的資訊;Describe test;//可以查看test表的所有資訊,包括對應欄欄位的資料類型等; MySql交易處理相關文法; 開始一項新的事務:start transaction或者begin transaction提交事務:commit交易回復:rollbackset autocommit true|false 語句可以禁用或啟用預設的autocommit模式,只可用於當前串連;例子: Start transaction; Update person set name=’LJB’ where id=1; Commit | rollback; 資料庫管理語句修改使用者密碼:以root使用者為例,則可以寫成下面的;mysql –u root –p 舊密碼 –password 新密碼 Mysql –u root –password 123;//將root使用者的密碼修改成123,由於root使用者開始的時候,是沒有密碼的,所以-p舊密碼就省略了;例如修改一個有密碼的使用者密碼:mysql –u ltx –p 123 –password 456; 增加一個使用者test1,密碼為abc,讓他可以在任何時候主機上登陸,並對所有資料庫有查詢、插入、修改、刪除的許可權。Grant select,insert,update,delete on *.* to [email protected]”%” identified by ‘abc’;增加一個test2使用者,密碼為abc,讓他只可以在localhost上登陸,並且可以對資料庫進行查詢、插入、修改、刪除操作;Grant select,insert,update,delete on mydb.* to [email protected] identified by ‘abc’;如果不想讓使用者test2有密碼,可以再輸入以下命令消掉密碼:Grant select,insert,update,delete on mydb.* to [email protected] identified by “”; 備份資料庫常用命令:mysqldump –h host –u username –p dbname>儲存路徑與檔案名稱然後斷行符號後,會讓你輸入使用者密碼,輸入密碼後,再斷行符號就OK啦;Mysqldump –hlocalhost –uroot –p test >E:\db\test.sql 這一命令具體解釋下:這個命令就是備份test資料庫,並且將備份的內容儲存為test.sql檔案,並且儲存在E:\db下面;命令當中-p 前面的test是資料庫名,然後在資料庫名後面要跟上一個”>”,然後接下來,就是寫要儲存的位置與儲存檔案的檔案名稱; 將備份好的資料庫匯入到資料庫當中去:也就是運行.sql檔案將資料庫匯入資料庫當中去->首先你得建立資料庫,然後運行如下命令:mysql –hlocalhost –uroot –p linux<E:\db\test.sql然後斷行符號,再輸入密碼就可以啦;解釋下上面的命令:linux是就要匯入的資料庫名字,然後後面要緊跟著“<”符號,然後後面就是要匯入的資料庫檔案; 將資料庫匯出儲存成XML檔案、從XML檔案匯入資料到資料庫: 匯出表中資料:mysql –X –h hostName –u userName –p Pwd –e “use DatabaseName;sql;” >xml檔案名稱或者用另外一種方式也行:mysqldump –xml –h hostName –u userName –p pwd dbName tableName   //這一種只用於顯示在當前的mysql用戶端,不儲存到檔案當中;相關說明:-X代表的是檔案的格式是XML,然後-e一寫不能掉,還有就是要用雙引號將要操作的語句括起來;單引號不行;例如:mysql –X –hlocalhost –uroot –p –e “use test;select * from pet;”>E:\db\out.xml從XML檔案匯入資料到資料庫:Insert into tableName values(1,load_file(‘filepath’));例如:insert into pet values(1,load_file(“E:\db\out.xml”)); 查看資料庫狀態與查詢進程: Show status;//查看狀態Show processlist;//查看進程 更改使用者名稱,用以下命令:Update set user=”新名字” where user=”舊使用者名稱”; 給資料庫使用者佈建管理員權限:Mysqladmin –h host –u username –p pwd;以root使用者為例;Mysqladmin –h localhost –u root –p 123; 預存程序與函數 儲存程式和函數分別是用create procedure和create function語句,一個程式要麼是一個程式要麼是一個函數,使用call語句來調用程式,並且程式只能用輸出變數傳回值;要想在MySql5.1中建立子程式,必須具有create routine許可權,並且alter routine和execute許可權被自動授予它的建立者; 建立預存程序:首先聲明分隔字元,所謂分隔字元是指你通知mysql用戶端你已經輸入一個sql語句的字元或字串符號,在這裡我們就以“//”為分隔字元; Delimiter 分隔字元\如:delimiter //再建立預存程序:Create procedure 預存程序名 ( )聲明預存程序開始:begin然後開始寫預存程序體:Select * from pet;結束預存程序:End;//剛剛的例子全部寫出來,完整的代碼就是:Delimiter //Create procedure spt () //注意,這個地方,預存程序名與括弧之間要有個空格BeginSelect * from pet;End;//到這裡,整個預存程序就算寫完啦 執行預存程序:Call 預存程序名 ();//如,我們執行剛剛建立的預存程序,就是:Call spt ();// 需要說明的是預存程序名後面一定要加個空格,而後面那個括弧,則是用於傳送參數的參數列表;另外,我們建立預存程序完成後,也只是建立了,但是只有調用call 預存程序名 ();//後才算執行完畢,才能看到預存程序的結果;  【串連MYSQL、修改密碼、增加使用者】 有很多朋友雖然安裝好了mysql但卻不知如何使用它。在這篇文章中我們就從串連MYSQL、修改密碼、增加使用者等方面來學習一些MYSQL的常用命令。  一、串連MYSQL。  格式: mysql -h主機地址 -u使用者名稱 -p使用者密碼  1、例1:串連到本機上的MYSQL。  首先在開啟DOS視窗,然後進入目錄 mysqlbin,再鍵入命令mysql -uroot -p,斷行符號後提示你輸密碼,如果剛安裝好MYSQL,超級使用者root是沒有密碼的,故直接斷行符號即可進入到MYSQL中了,MYSQL的提示符是:mysql>  2、例2:串連到遠程主機上的MYSQL。假設遠程主機的IP為:110.110.110.110,使用者名稱為root,密碼為abcd123。則鍵入以下命令:  mysql -h110.110.110.110 -uroot -pabcd123  (注:u與root可以不用加空格,其它也一樣)  3、退出MYSQL命令: exit (斷行符號)  二、修改密碼。  格式:mysqladmin -u使用者名稱 -p舊密碼 password 新密碼  1、例1:給root加個密碼ab12。首先在DOS下進入目錄mysqlbin,然後鍵入以下命令  mysqladmin -uroot -password ab12  註:因為開始時root沒有密碼,所以-p舊密碼一項就可以省略了。  2、例2:再將root的密碼改為djg345。  mysqladmin -uroot -pab12 password djg345  三、增加新使用者。(注意:和上面不同,下面的因為是MYSQL環境中的命令,所以後面都帶一個分號作為命令結束符)  格式:grant select on 資料庫.* to 使用者名稱@登入主機 identified by \"密碼\"  例1、增加一個使用者test1密碼為abc,讓他可以在任何主機上登入,並對所有資料庫有查詢、插入、修改、刪除的許可權。首先用以root使用者連入MYSQL,然後鍵入以下命令:  grant select,insert,update,delete on *.* to [email protected]\"%\" Identified by \"abc\";  但例1增加的使用者是十分危險的,你想如某個人知道test1的密碼,那麼他就可以在internet上的任何一台電腦上登入你的mysql資料庫並對你的資料可以為所欲為了,解決辦法見例2。  例2、增加一個使用者test2密碼為abc,讓他只可以在localhost上登入,並可以對資料庫mydb進行查詢、插入、修改、刪除的操作(localhost指本地主機,即MYSQL資料庫所在的那台主機),這樣使用者即使用知道test2的密碼,他也無法從internet上直接存取資料庫,只能通過MYSQL主機上的web頁來訪問了。  grant select,insert,update,delete on mydb.* to [email protected] identified by \"abc\";  如果你不想test2有密碼,可以再打一個命令將密碼消掉。  grant select,insert,update,delete on mydb.* to [email protected] identified by \"\";   (下篇)  在上篇我們講了登入、增加使用者、密碼更改等問題。下篇我們來看看MYSQL中有關資料庫方面的操作。注意:你必須首先登入到MYSQL中,以下操作都是在MYSQL的提示符下進行的,而且每個命令以分號結束。   一、操作技巧  1、如果你打命令時,斷行符號後發現忘記加分號,你無須重打一遍命令,只要打個分號斷行符號就可以了。也就是說你可以把一個完整的命令分成幾行來打,完後用分號作結束標誌就OK。  2、你可以使用游標上下鍵調出以前的命令。但以前我用過的一個MYSQL舊版本不支援。我現在用的是mysql-3.23.27-beta-win。   二、顯示命令  1、顯示資料庫列表。  show databases;  剛開始時才兩個資料庫:mysql和test。mysql庫很重要它裡面有MYSQL的系統資訊,我們改密碼和新增使用者,實際上就是用這個庫進行操作。  2、顯示庫中的資料表:  use mysql; //開啟庫,學過FOXBASE的一定不會陌生吧  show tables;  3、顯示資料表的結構:  describe 表名;  4、建庫:  create database 庫名;  5、建表:  use 庫名;  create table 表名 (欄位設定列表);  6、刪庫和刪表:  drop database 庫名;  drop table 表名;  7、將表中記錄清空:  delete from 表名;  8、顯示表中的記錄:  select * from 表名;   三、一個建庫和建表以及插入資料的執行個體  drop database if exists school; //如果存在SCHOOL則刪除  create database school; //建立庫SCHOOL  use school; //開啟庫SCHOOL  create table teacher //建立表TEACHER  (  id int(3) auto_increment not null primary key,  name char(10) not null,  address varchar(50) default \‘深圳\‘,  year date  ); //建表結束  //以下為插入欄位  insert into teacher values(\‘\‘,\‘glchengang\‘,\‘深圳一中\‘,\‘1976-10-10\‘);  insert into teacher values(\‘\‘,\‘jack\‘,\‘深圳一中\‘,\‘1975-12-23\‘);   註:在建表中(1)將ID設為長度為3的數字欄位:int(3)並讓它每個記錄自動加一:auto_increment並不可為空:not null而且讓他成為主欄位primary key(2)將NAME設為長度為10的字元欄位(3)將ADDRESS設為長度50的字元欄位,而且預設值為深圳。varchar和char有什麼區別呢,只有等以後的文章再說了。 (4)將YEAR設為日期欄位。  如果你在mysql提示符鍵入上面的命令也可以,但不方便調試。你可以將以上命令原樣寫入一個文字檔中假設為school.sql,然後複製到c:\\下,並在DOS狀態進入目錄\\mysql\\bin,然後鍵入以下命令:  mysql -uroot -p密碼 < c:\\school.sql  如果成功,空出一行無任何顯示;如有錯誤,會有提示。(以上命令已經調試,你只要將//的注釋去掉即可使用)。   四、將文本資料轉到資料庫中  1、文本資料應符合的格式:欄位資料之間用tab鍵隔開,null值用\\n來代替.  例:  3 rose 深圳二中 1976-10-10  4 mike 深圳一中 1975-12-23  2、資料傳入命令 load data local infile \"檔案名稱\" into table 表名;  注意:你最好將檔案複製到\\mysql\\bin目錄下,並且要先用use命令打表所在的庫 。   五、備份資料庫:(命令在DOS的\\mysql\\bin目錄下執行)  mysqldump --opt school>school.bbb  注釋:將資料庫school備份到school.bbb檔案,school.bbb是一個文字檔,檔案名稱任取,開啟看看你會有新發現。   後記:其實MYSQL的對資料庫的操作與其它的SQL類資料庫大同小異,您最好找本將SQL的書看看。我在這裡只介紹一些基本的,其實我也就只懂這些了,呵呵。最好的MYSQL教程還是“晏子“譯的“MYSQL中文參考手冊“不僅免費每個相關網站都有下載,而且它是最權威的。可惜不是象\"PHP4中文手冊\"那樣是chm的格式,在尋找函數命令的時候不太方便。 


SQL授權語句(MySQL基本語句)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.