MySQL語(yǔ)句大全
整理了mysql語(yǔ)句,每天練習(xí)一遍,對(duì)你有幫助的!
MySQL服務(wù)的配置和使用
修改MySQL管理員的口令:mysqladmin –u root password 密碼字符串
如:mysqldmin –u root password 111111
連接MySQL服務(wù)器,使用命令: mysql [-h 主機(jī)名或IP地址] [-u 用戶名] [-p]
如:mysql –u root –p
如已有密碼需修改root密碼用命令: mysqladmin –u root –p password 新密碼字符串
如:mysqladmin –u root –p password 111111
創(chuàng)建數(shù)據(jù)庫(kù)格式為:CREATE DATABASE 數(shù)據(jù)庫(kù)名稱;
如:mysql>create database abc; 默認(rèn)創(chuàng)建數(shù)據(jù)庫(kù)保存在/var/lib/mysql中
查看數(shù)據(jù)庫(kù)是 mysql>show abc;
選擇數(shù)據(jù)庫(kù)是 USE 數(shù)據(jù)庫(kù)名稱; 如:mysql>use abc;
刪除數(shù)據(jù)庫(kù)是 DROP DATABASE 數(shù)據(jù)庫(kù)名稱; 如:mysql>drop database abc;
數(shù)據(jù)庫(kù)的創(chuàng)建和刪除
創(chuàng)建表是 CREATE TABLE 表名稱(字段1,字段2,…[表級(jí)約束]) [TYPE=表類型];
其中字段(1,2 )格式為:字段名 字段類型 [字段約束]
如創(chuàng)建一個(gè)表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命令查看表的結(jié)構(gòu)。
默認(rèn)表的類型為MYISAM,并在/var/lib/mysql/abc 目錄下建立student.frm(表定義文件),student.MDY(數(shù)據(jù)文件),stedent.MYI(索引文件)。
復(fù)制表 CREATE TABLE 新表名稱 LIKE 原表名稱;
如:mysql>create table xtable like student;
刪除表 DROP TABLE 表名稱1[表名稱2…];
如:mysql> drop table xtale;
修改表 ALTER TABLE 表名稱 更改動(dòng)作1[動(dòng)作2];
動(dòng)作有ADD(增加) DROP(刪除)CHANGE、MODIFY(更改字段名和類型)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;
表中數(shù)據(jù)的插入、刪除和修改
插入記錄: 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命令的縮寫(xiě)格式,
如: mysql>insert into student values (‘0321001’, ‘Liu Tao’, default, 19870201, ‘mth’);
如果字段名列表中沒(méi)有給出表中的某些字段,那么這些字段設(shè)置為默認(rèn)值,
如:mysql>insert into student (sno,sname,sbirthday)
values(‘0321002’,’Wang Jun’,1870112);
一個(gè)單獨(dú)的insert語(yǔ)句中可使用多個(gè)valuse字句,插入多條記錄,
如:mysql>insert into student values
(‘0322001’, ‘Zhang Liaoyun’, ‘f’ 1971102,’computer’),
(‘0322002’, ‘Li Ming’, ‘t’ 1971105,’computer’);
刪除記錄: DELETE FROM 表名稱 WHERE 條件表達(dá)式;
如: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 條件表達(dá)式
如: mysql>update student set sbirthday=1920113, sdepa=’math’ where sno=’0321002’;
索引的創(chuàng)建與刪除
在創(chuàng)建表的同時(shí)創(chuàng)建索引
創(chuàng)建表時(shí),可用INDEX字句或UNIQUE(字段值必須惟一)字句創(chuàng)建索引
如:創(chuàng)建課程表course, 課程編號(hào)cno字段為主鍵,課程名稱cname字段創(chuàng)建一個(gè)名為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[(長(zhǎng)度)]);
如:mysql>create index sna on student (sname);
對(duì)于類型為CHAR和VARCHAR的字段建立索引時(shí)還可指定長(zhǎng)度值,類型為BLOB和TEXT的字段索引時(shí)必須指定長(zhǎng)度值。
如 mysql>create index sna on student (sname(10));
刪除索引 DROP INDEX 索引 ON表名稱;
如:mysql>drop index sna on student;
用戶的創(chuàng)建和刪除
初始化時(shí)有5個(gè)MySQL授權(quán)表,其中host、tables_priv和columnts_priv 是空的,表user和db決定了MySQL默認(rèn)的訪問(wèn)規(guī)則。默認(rèn)有mysql和test兩個(gè)數(shù)據(jù)庫(kù)。
授權(quán)表:user 用戶從哪些主機(jī)可以連接到數(shù)據(jù)庫(kù)服務(wù)器,以及對(duì)所以數(shù)據(jù)庫(kù)的訪問(wèn)權(quán)限(全局權(quán)限)
db 用戶可以使用哪些權(quán)限,以及對(duì)數(shù)據(jù)庫(kù)執(zhí)行哪些操作(數(shù)據(jù)庫(kù)級(jí)權(quán)限)
host 當(dāng)表db 中的host 字段值為空時(shí),用戶從哪些主機(jī)可以連接到數(shù)據(jù)庫(kù)服務(wù)器。
tables_priv 連接的用戶可以訪問(wèn)哪些表(表級(jí)權(quán)限)
columnts_priv 連接的用戶可以訪問(wèn)哪些字段 (字段級(jí)權(quán)限)
創(chuàng)建新用戶
以MySQL管理員連接到數(shù)據(jù)庫(kù)服務(wù)器: #mysql –u root –p
創(chuàng)建新用戶guess并設(shè)置密碼,同時(shí)可以從任何主機(jī)連接數(shù)據(jù)庫(kù)服務(wù)器:
mysql>insert into mysql.user (host,user,password)
values (‘%’,’gusee’,password(‘guest’)); 使用password()函數(shù),密碼是加密的
重載MySQL授權(quán)表:mysql>flush privileges;
遠(yuǎn)程客戶端連接數(shù)據(jù)庫(kù)服務(wù)器 :#mysql –h 192.168.0.50 –u guess –p 開(kāi)放服務(wù)器的TCP斷口3306
查看當(dāng)前用戶可用數(shù)據(jù)庫(kù): show database
刪除用戶
mysql>delete from mysql.user where user=’guest’;
mysql>flush privileges; 重載MySQL授權(quán)表
更改用戶密碼
如:更改guset密碼為123456
mysql>update mysql.user set password=password(‘123456’)
where user =’guset’;
mysql>flush privileges;
或者是 mysql>set password for guset@’%’=password(‘123456’);
用戶權(quán)限的設(shè)置
在表user、db和host中,所有字段聲明為ENUM(‘N’,’Y’),默認(rèn)是‘N’;
在表tables_priv和columns_priv中,權(quán)限字段聲明為SET類型
修改授權(quán)表中的訪問(wèn)權(quán)限有兩中方法,一是使用 INSERT、UPDATE和DELETE等DML語(yǔ)句,
另一中是GRANT和GRVOKE語(yǔ)句
使用GRANT語(yǔ)句授權(quán):
格式如下:
GRANT 權(quán)限列表 [(字段列表)] on 數(shù)據(jù)庫(kù)名稱.表名稱
TO 用戶名@域名或IP地址
[INDETIFIED BY ‘密碼值’] [WITH CRANT OPTION];
授權(quán)哪個(gè)用戶能連接,從哪連接
如:授權(quán)用戶guest從任意主機(jī)連接數(shù)據(jù)庫(kù)服務(wù)器,并具有完全訪問(wèn)數(shù)據(jù)庫(kù)abc的權(quán)限。
Mysql>grant all on abc.* to guset@’%’ identified by ‘guest’
注意幾點(diǎn):如指定用戶不存在,則創(chuàng)建該新用戶;
‘權(quán)限列表’處ALL表示授予全部權(quán)限,USAGE表不授予任何權(quán)限。
‘數(shù)據(jù)庫(kù)名稱.表名稱’處可以使用通配符“*”。如“abc.*”表數(shù)據(jù)庫(kù)abc中所有表
‘用戶名@域名或IP地址’設(shè)置誰(shuí)能連,從哪連。用戶名 不能用通配符,但可以用‘ ’空字符串,表任何用戶;域名或IP地址可以用通配符“%”,使用是用單引號(hào)括起來(lái)。
授權(quán)用戶不同級(jí)別的訪問(wèn)權(quán)限
如:新建用戶tom,能從子網(wǎng)192.168.16.0訪問(wèn)數(shù)據(jù)庫(kù)服務(wù)器,可以讀取數(shù)據(jù)庫(kù)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.%’’
注意幾點(diǎn):數(shù)據(jù)庫(kù)名稱.表名稱 用來(lái)設(shè)置權(quán)限運(yùn)用的級(jí)別,有全局的(*.*),指定數(shù)據(jù)庫(kù)的(xsxd.*)
和指定表的(xsxd.student);
字段列表 設(shè)置權(quán)限運(yùn)用中指定的表中的哪些字段,如update(cname,teacher)
權(quán)限列表 指定的權(quán)限與權(quán)限運(yùn)行的級(jí)別有關(guān),如有寫(xiě)權(quán)限(FILE、PROCESS、RELOAD、SHUTDOWN)作為管理權(quán)限用于全局級(jí)別;對(duì)于字段級(jí)別只能指定SELECT、INSERT、UPDATE、REFERENCES
授予用戶管理權(quán)限的權(quán)利
如:管理員授予擁護(hù)admin可以從本地連接數(shù)據(jù)庫(kù)服務(wù)器,對(duì)數(shù)據(jù)庫(kù)xsxk具有完全訪問(wèn)權(quán)限,并可以
將擁有的權(quán)限賦予其他用戶
mysql>grant all on xsxd.* to admin@localhost indentified by ‘123456’ with grant option;
其中with grant option 子句表示擁護(hù)擁有的權(quán)限可以賦予其他用戶。
mysql>qrant select on xsxd.student to bill@localhost; 授予bill用戶權(quán)限
mysql>show grants for admin@localhost; 查看用戶權(quán)限
使用REVOKE語(yǔ)句撤權(quán)
格式如下:
REVOKE 權(quán)限列表[(字段列表)] on數(shù)據(jù)庫(kù)名稱.表名稱
FROM用戶名@域名或IP地址
如:撤消用戶admin@localhost 對(duì)數(shù)據(jù)庫(kù)xsxd的創(chuàng)建、刪除數(shù)據(jù)庫(kù)及表的權(quán)限,不撤消用戶賦予其它用戶的權(quán)限
mysql>revoke create,drop on xsxd.* from admin@localhost;
mysql>revoke grant option on xsxd.* from admin@localhost;