常用MySQL語句大全

轉載自:http://renlixing.blog.51cto.com/731561/278635
MySQL服務的配置和使用

修改MySQL管理員的口令:mysqladmin –u root password 密碼字符串             

如:mysqldmin –u root password 111111

連接MySQL服務器,使用命令: mysql [-h 主機名或IP地址] [-u 用戶名] [-p]      

如:mysql –u root –p

如已有密碼需修改root密碼用命令: mysqladmin –u root –p password 新密碼字符串  

如:mysqladmin –u root –p password 111111

創建數據庫格式爲:CREATE DATABASE 數據庫名稱;

如:mysql>create database abc;    默認創建數據庫保存在/var/lib/mysql

查看數據庫是  mysql>show abc;

選擇數據庫是  USE 數據庫名稱;  如:mysql>use abc;

刪除數據庫是  DROP DATABASE 數據庫名稱; 如:mysql>drop database abc;

  

數據庫的創建和刪除

創建表是 CREATE TABLE 表名稱(字段1,字段2…[表級約束]) [TYPE=表類型]

其中字段(1,2 )格式爲:字段名 字段類型 [字段約束]

如創建一個表student,如下:

mysql>create table student (

sno varchar(7) not null,   字段不允許爲空

sname varchar (20 )not null,

ssex char (1) default ‘t’,

sbirthday date,

sdepa char (20),

primary key (sno)       表的主鍵

);

可用describe命令查看錶的結構。

默認表的類型爲MYISAM,並在/var/lib/mysql/abc 目錄下建立student.frm(表定義文件)student.MDY(數據文件)stedent.MYI(索引文件)

複製表 CREATE TABLE 新表名稱 LIKE 原表名稱;

如:mysql>create table xtable like student;

刪除表 DROP TABLE 表名稱1[表名稱2…];

如:mysql> drop table xtale;

 

修改表 ALTER TABLE 表名稱 更改動作1[動作2]

動作有ADD(增加) DROP(刪除)CHANGEMODIFY(更改字段名和類型)RENAME

 

增加字段:mysql>alter table student add saddress varchar(25);

更改字段名和字段類型: mysql>alter table student change saddress sremark test;

即使不更改字段類型也要給出字段類型如:

mysql>alter table student change saddress sremark varchar (25);

更改字段類型 :mysql> alter table student modify sremark varchar(25);

刪除字段:mysql>alter table student drop sremark

更改表名稱: mysql>alter table student rename to xs

 

表中數據的插入、刪除和修改

   插入記錄: INSERT INTO 表名稱(字段名1,字段名2…

               VALUES(字段1的值,字段2的值

   如:mysql>insert into student (sno,sname,ssex,sbirthday,sdepa)

             values(‘0321001’,’Liu Tao’,dagault,19870201,’math’);

   查看錶  mysql>select * from student;

插入與前面相同的記錄,可用insert命令的縮寫格式,

: mysql>insert into student values (‘0321001’, ‘Liu Tao’, default, 19870201, ‘mth’);

如果字段名列表中沒有給出表中的某些字段,那麼這些字段設置爲默認值,

如:mysql>insert into student (sno,sname,sbirthday)

          values(‘0321002’,’Wang Jun’,1870112);

一個單獨的insert語句中可使用多個valuse字句,插入多條記錄,

如:mysql>insert into  student values

         (‘0322001’, ‘Zhang Liaoyun’, ‘f’ 1971102,’computer’),

         (‘0322002’, ‘Li Ming’, ‘t’ 1971105,’computer’);

   刪除記錄: DELETE FROM 表名稱 WHERE 條件表達式;

   如:mysql>delete from student where sno=’0321002’;

   刪除student表中sno字段值前4位爲‘0322’的記錄

   如:mysql>delete from student where left (sno,4)=’0322’;

   刪除所以記錄,可以不帶where字句

   如:mysql>delete from student;

   刪除所以記錄可以用命令truncate     刪除表,然後重建表,所以比delete命令快

   如:mysql>truncate table student;

   修改記錄 UPDATE 表名稱 SET 字段名1=字段值1

            WHERE 條件表達式

   如: mysql>update student set sbirthday=1920113, sdepa=’math’ where sno=’0321002’;

 

索引的創建與刪除

   在創建表的同時創建索引

   創建表時,可用INDEX字句或UNIQUE(字段值必須惟一)字句創建索引

   如:創建課程表course, 課程編號cno字段爲主鍵,課程名稱cname字段創建一個名爲can的索引

mysql>create table course(

cno varchar(5) not null,

cname varchar(30) not null,

teacher varchar(20),

primary key (cno),

index can (cname)

);

   向已存在的表添加索引   CREATE [UNIQUE ] INDEX 索引名ON表名稱 (字段名1[(長度)])

   如:mysql>create index sna on student (sname);

   對於類型爲CHARVARCHAR的字段建立索引時還可指定長度值,類型爲BLOBTEXT的字段索引時必須指定長度值。

   mysql>create index sna on student (sname(10));

   刪除索引  DROP INDEX 索引 ON表名稱;

   如:mysql>drop index sna on student;

 

 

用戶的創建和刪除

初始化時有5MySQL授權表,其中hosttables_privcolumnts_priv 是空的,表userdb決定了MySQL默認的訪問規則。默認有mysqltest兩個數據庫。

授權表:user  用戶從哪些主機可以連接到數據庫服務器,以及對所以數據庫的訪問權限(全局權限)

        db   用戶可以使用哪些權限,以及對數據庫執行哪些操作(數據庫級權限)

        host  當表db 中的host 字段值爲空時,用戶從哪些主機可以連接到數據庫服務器。

        tables_priv  連接的用戶可以訪問哪些表(表級權限)

        columnts_priv  連接的用戶可以訪問哪些字段 (字段級權限)

創建新用戶

MySQL管理員連接到數據庫服務器: #mysql –u root –p

創建新用戶guess並設置密碼,同時可以從任何主機連接數據庫服務器:

mysql>insert into mysql.user (host,user,password)

values (‘%’,’gusee’,password(‘guest’));      使用password()函數,密碼是加密的

重載MySQL授權表:mysql>flush privileges;

遠程客戶端連接數據庫服務器 :#mysql –h 192.168.0.50 –u guess –p      開放服務器的TCP斷口3306

查看當前用戶可用數據庫: show database

刪除用戶

mysql>delete from mysql.user where user=’guest’;

mysql>flush privileges;      重載MySQL授權表

更改用戶密碼

如:更改guset密碼爲123456

mysql>update mysql.user set password=password(‘123456’)

      where user =’guset’;

mysql>flush privileges;

或者是 mysql>set password for guset@’%’=password(‘123456’);

 

 

用戶權限的設置

   在表userdbhost中,所有字段聲明爲ENUM(‘N’,’Y’),默認是‘N;

   在表tables_privcolumns_priv中,權限字段聲明爲SET類型

   修改授權表中的訪問權限有兩中方法,一是使用 INSERTUPDATEDELETEDML語句,

   另一中是GRANTGRVOKE語句

   使用GRANT語句授權:

   格式如下:

 

   GRANT 權限列表 [(字段列表)] on 數據庫名稱.表名稱

   TO 用戶名@域名或IP地址

   [INDETIFIED BY ‘密碼值’] [WITH CRANT OPTION];

 

   授權哪個用戶能連接,從哪連接

   如:授權用戶guest從任意主機連接數據庫服務器,並具有完全訪問數據庫abc的權限。

   Mysql>grant all on abc.* to guset@’%’ identified by ‘guest’

   注意幾點:如指定用戶不存在,則創建該新用戶;

             ‘權限列表’處ALL表示授予全部權限,USAGE表不授予任何權限。

             ‘數據庫名稱.表名稱’處可以使用通配符“*”。如“abc.*”表數據庫abc中所有表

               用戶名@域名或IP地址設置誰能連,從哪連。用戶名 不能用通配符,但可以用‘ ’空字符串,表任何用戶;域名或IP地址可以用通配符“%”,使用是用單引號括起來。

 

   授權用戶不同級別的訪問權限

   如:新建用戶tom,能從子網192.168.16.0訪問數據庫服務器,可以讀取數據庫xsxk,並能修改表course 中字段teacher的值

   mysql>grant select on xsxd.* to tom@’192.168.16.%’ indentifiend by ‘123456’;

   mysql>grant update(teacher) on xsxd.course to tom@’192.168.16.%’’

   注意幾點:數據庫名稱.表名稱 用來設置權限運用的級別,有全局的(*.*,指定數據庫的(xsxd.*

             和指定表的(xsxd.student;

             字段列表 設置權限運用中指定的表中的哪些字段,如update(cname,teacher)

             權限列表 指定的權限與權限運行的級別有關,如有寫權限(FILEPROCESSRELOADSHUTDOWN)作爲管理權限用於全局級別;對於字段級別只能指定SELECTINSERTUPDATEREFERENCES

 

授予用戶管理權限的權利

   如:管理員授予擁護admin可以從本地連接數據庫服務器,對數據庫xsxk具有完全訪問權限,並可以

       將擁有的權限賦予其他用戶

   mysql>grant all on xsxd.* to admin@localhost indentified by ‘123456’ with grant option;

   其中with grant option 子句表示擁護擁有的權限可以賦予其他用戶。

   mysql>qrant select on xsxd.student to bill@localhost;  授予bill用戶權限

   mysql>show grants for admin@localhost;   查看用戶權限

 

使用REVOKE語句撤權

   格式如下:

   REVOKE 權限列表[(字段列表)] on數據庫名稱.表名稱

   FROM用戶名@域名或IP地址

   如:撤消用戶admin@localhost 對數據庫xsxd的創建、刪除數據庫及表的權限,不撤消用戶賦予其它用戶的權限

   mysql>revoke create,drop on xsxd.* from admin@localhost;

   mysql>revoke grant option on xsxd.* from admin@localhost;

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