1.Mysql基本操作1.1修改管理员的密码1)Mysql刚安装好后无密码,使用”mysqladmin–uroot password 密码”修改管理员密码2)以管理员身份登录数据库,使用”mysql–u root”3)原来有密码,现在要修改,使用”mysqladmin–uroot–p旧密码 password 新密码”1.2用户的创建、删除、授权与撤权Mysql安装好后,默认有两个数据库(mysql和test),而且除了root用户外,其他用户只能访问test数据库。
Mysql中设置了5个授权表(user/db/host/tables_priv/columnts_priv)。
1)创建新用户,方法如下:A.mysql–u root –p #以管理员身份登录B.insert into er(host,user,password)values(‘%’,’guest’,password(‘guest’));#创建一个用户名为guest的用户C.flush privileges;#重载授权表2)删除用户,方法如下:A.mysql–u root –p #以管理员身份登录B.delete from er where user=’guest’;C.flush privileges;3)更改用户密码,方法如下:A.mysql–u root –p #以管理员身份登录B.update er set password=password(‘123’) where user=’guest’;C.flush privileges;4)用户授权,方法如下:格式:GRANT 权限列表[(字段列表)] ON 数据库名称.表名 TO 用户名@域名或IP地址[IDENTIFIED BY ‘密码值’] [WITH GRANT OPTION];常用权限如下:全局管理权限:FILE: 在MySQL服务器上读写文件。
PROCESS: 显示或杀死属于其它用户的服务线程。
RELOAD: 重载访问控制表,刷新日志等。
SHUTDOWN: 关闭MySQL服务。
数据库/数据表/数据列权限:Alter: 修改已存在的数据表(例如增加/删除列)和索引。
Create: 建立新的数据库或数据表。
Delete: 删除表的记录。
Drop: 删除数据表或数据库。
INDEX: 建立或删除索引。
Insert: 增加表的记录。
Select: 显示/搜索表的记录。
Update: 修改表中已存在的记录。
特别的权限:ALL: 允许做任何事(和root一样)。
USAGE: 只允许登录--其它什么也不允许做。
例一:要授权给用户guest可以从任意主机连接到数据库服务器,并具有完全访问学生选课数据库xsxk的权限。
grant all on xsxk.* to guest@’%’ identified by ‘guest’;说明:A.%表示从任何主机连接到数据库服务器,也可以用空白B.% 表示从域中的任何主机连接到数据库服务器C.192.168.85.% 表示从192.168.85.0子网中任何主机连接到数据库服务器D.localhost 表示从本地主机连接E.192.168.85.242 表示从IP为192.168.85.242的主机连接例二:新建一个用户tom,让他能从子网192.168.85.0中任何主机连接到数据库服务器,可以读取数据库xsxk的内容,并且能修改表course中字段teacher的值。
grant select on xsxk.* to tom@’192.168.85.%’ identified by ‘123’;grant update(teacher) on xsxk.course to tom@’192.168.85.%’;例三:mysql管理员要授权用户admin可以从本地连接到数据库服务器,对学生选课数据库xsxk具有完全访问权限,并可将其拥有的权限授予其他用户grant all on xsxk.* to admin@localhost identified by ‘123’ with grant option;5)用户撤权,方法如下:格式:REVOKE 权限列表[(字段列表)] ON 数据库名.表名 FROM 用户名@域名或IP地址;例:mysql管理员要撤销用户admin@localhost对数据库xsxk所拥有的创建删除数据库与表的权限,并撤销该用户可以把自己拥有的权限授予其他用户的权限。
revokecreate,drop on xsxk.* from admin@localhost;revoke grant option on xsxk.* from admin@localhost;1.3数据库的创建与删除1)创建数据库:create database 数据库名;2)查看数据库:show databases;3)选择数据库:use 数据库名;4)删除数据库:drop database 数据库名;1.4表操作1.4.1基本操作1)创建表格式:create table 表名(字段1,…字段n,[表级约束]) [Type=表类型];注:A.字段i(i=1,…n)格式为:字段名字段类型 [字段约束]说明一:字段类型,规定了某字段所允许输入的数据类型类型描述int 允许值在0至2的32次方减1(无符号)之间标准整数double 双精度浮点数char 最大长度不超过255字符定长字符串varchar 最大长度不超过255字符变长字符串text 最大长度为65535字符字符串blob 可变数据的二进制类型date YYYYMMDD格式日期类型说明二:字段约束,用来进一步对某个字段所允许输入的数据进行约束,常用的字段约束如下:约束描述NULL(或NOT NULL)指定允许(或不允许)某字段为空,默认为NULLDEFAULT 为某字段指定一个默认值AUTO_INCREMENT 自动为某个INT字段生成一个递增1的整数B.表级约束:用于表示表的主键、外键、索引和唯一约束。
约束描述Primary key 为表指定主键Foreign key ……References 为表指定外键Unique 为某字段创建索引,此字段必须唯一Fulltext 为某字段建立全文索引C.表类型:用于指定表的类型,即数据的存储格式。
表类型描述MyISAM 具有很多优化和增强的特性,是mysql默认表类型ISAM 类似于MyISAM,但功能较少HEAP 保存在内存中,存取速度快,但存储容量小,恢复难BDB 支持事务和页锁定INNODB 支持事务、外键和行级锁,是mysql中最完善表格式MERGE 可把多个MyISAM表构建为一个虚拟表,使得这些表的查询就像在一个表上进行,提高查询速度和修复效率,并节省了磁盘空间例:create table student(snovarchar(7) not null, snamevarchar(20) not null, ssex char(1) default ‘t’, sbirthday date, sdepa char(20), primary key(sno));注:a)建好后可通过describe命令查看表结构b)系统会在/var/lib(or lib64)/mysql/xxkk目录下创建student.frm(表定义文件)、student.MDY(数据文件)、student.MYI(索引文件)三个文件2)复制表格式:create table 新表名 like 源表名;3)删除表格式:drop table 表名1[,表名2,…];4)修改表格式:alter table 表名更改动作1[,更改动作2,…];A.增加表中字段alter table student add saddressvarchar(25);B.更改表字段名和字段类型alter table student change saddressbeizhu text;C.删除字段alter table student drop beizhu;D.更改名称alter table student rename to xs;1.4.2表记录操作1)插入记录格式:insert into 表名(字段1,字段2,…,字段n) values(字段1的值,字段2的值,…,字段n的值);例1:要在表student中插入一组数据insert into student(sno,sname,ssex,sbirthday,sdepa) values(‘1’,’lilei’,default,19850721,’math’);例2:要插入与前一次操作相同的记录,可使用如下的缩写insert into student values(‘1’,’lilei’,default,19850721,’math’);例3:表中有默认字段,若取默认字段值,这时只需修改要修改的内容insert into student(sno,sname,sbirthday) values(‘2’,’lucy’,19850613);例4:在一个insert语句中使用多个values字句,可插入多条记录insert into student values(‘3’,’hanmeimei’,’f’,19850203,’computer’),(‘4’,’lily’,f,1 9850613,’computer’);2)删除记录格式:delete from 表名 where 条件表达式例1:删除表student中sno为’3’的记录delete from student where sno=’3’;例2:从表student中删除sname字段值前2位为’li’的记录delete from student where left(sname,2)=’li’;删除表中所有记录的方法:truncate table student;3)修改记录格式:update 表名 set 字段名1=字段值1[,字段名2=字段值2,…] where 条件表达式;例:修改表student中sno为’1’的记录,将其sdepa字段值改为’computer’update student set sdepa=’computer’ where sno=’1’;1.4.3索引的创建与删除1)在创建表的同时创建索引例:要创建一个选课课程表course,将课程编号cno设置为主键,同时为课程名称cname 创建名为cna的索引create table course(cnovarchar(5) not null, cnamevarchar(30) not null, teacher varchar(20), primary key(cno), index can(cname));2)向已存在的表添加索引(unique或index子句)格式:create [unique] index 索引名 on 表名(字段名1[(长度)],…);例1:为表student的sname创建名为sna的索引create index sna on student(sname);例2:为表student的sname创建名为sna的索引,且索引长度为10create index sna on student(sname(10));3)删除索引格式:drop index 索引名 on 表名;例:删除表student中索引名为sna的索引drop index sna on student;2.Mysql查询Mysql的查询语句和SQL Server基本相同,不同之处包括以下几点:1)获取前n个记录:SQL Server使用top n,位于select之后;mysql使用limit n,位于整个查询语句之后3.Mysql存储过程存储过程是数据库存储的一个重要的功能,但是MySQL在5.0以前并不支持存储过程。