A-A+

php常用的数据库mysql操作

2012年05月08日 PHP技术文章 暂无评论 阅读 359 views 次

学习php已经有一段时间了,对于数据库mysql的操作基本上都是在用phpmyadmin等图形化的软件,我们知道,用这类软件,就是非常智能化,简单化,而且速度也很快,其实数据库mysql的操作是支持sql语法的,如果仔细看我们买的php书籍或去视频教程的时候,都会有介绍mysql命令行的操作,这说明mysql命令行的操作还是挺重要的,而最近写的一些源码,也多多少少用到了mysql命令行的操作,还是了解一些比较好,下面是本博搜集的一些php常用数据库mysql的操作。

1 增加字段

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

2更名字段名和字段类型

alter table student change saddress sremark text;

3 仅改变字段类型

alter table student modify sremark varchar(25);

4删除字段

alter table student drop sremark;

5更改表名称

alter table student rename to employee;

6插入记录

Insert INTO 表名称 (字段名1,字段名2,…) VALUES (字段1的值,字段2的值,…);

7删除记录

Delete FROM 表名称 Where 条件表达式;
mysql> delete from student where sno='0321001';
Query OK, 1 row affected (0.02 sec)
mysql> delete from student where left(sno,4)='0321';(删除sno字段前四位为’0321’的所有记录)
Query OK, 1 row affected (0.00 sec)
mysql> delete from student;(一条一条的删除全部记录)
Query OK, 1 row affected (0.01 sec)
mysql> truncate table student;(删除所有记录,先删除表再重建表)
Query OK, 0 rows affected (0.00 sec)

8修改记录

Update 表名称 SET 字段名1=字段值1[,字段名2=字段值2…] Where 条件表达式;

9在创建表的同时创建索引

create table course(
cno varchar(5) not null,
cname varchar(30) not null,
teacher varchar(20),
primary key(cno),
index cna(cname)
);

如果将“index cna(cname)”改为“unique (cname)”,则创建的是UNIQUE(唯一性)索引,将不允许些字段有相同的值。

9向已存在的表添加索引

Create [UNIQUE] INDEX 索引名 ON 表名称 (字段名1 [(长度)],…);
create index sna on student(sname);

对于类型为char和varchar的字段,建立索引时还可以指定索引长度值;对于类型为blob和text的字段,
索引长度值是必须指定的。没指定索引名时,MySQL会自动使用指定字段的字段名作为索引名。

10删除索引

Drop INDEX 索引名 ON 表名称;
drop index sna on student;

11.用户的创建和删除

在MySQL安装之后会只有mysql和test两个数据库,在mysql库中有5个授权表决定哪个用户可以连接服务器、从哪里连接以及连接后可以执行哪些操作。

授权表 描述

user
定义哪些用户从哪些主机可以连接到数据库服务器,这些用户的密码以及它们对系统中所有数据库的访问权限(全局权限)

db
定义连接到数据库服务器的那些用户可以使用哪些数据库,在这些数据库中可执行哪些操作(数据库级权限),db通常与host配合使用

host
当表db中的Host字段值为空时,由表host定义用户可以从哪些主机连接到数据库服务器,且不同的主机对指定的数据库可有不同的权限

Tables_priv
定义连接到数据库服务器的那些用户可以访问哪些表,以及在这些表中可以执行哪些操作(表级权限)

Columnts_priv
定义连接到数据库服务器的那些用户可以访问哪些字段,以及在这些字段中可以执行哪些操作(字段级权限)

12 创建用户
创建新用户“guest”,并为它设置密码,同时允许它从任何主机连接到数据库服务器。

password()函数为密码加密后保存到数据库中。增加用户之后必须重载MySQL授权表:
insert into user(host,user,password) values('%','guest',password('guest'));

13 删除用户

delete from user where user=’guest’;
flush privileges;

14更改用户密码

mysql> update mysql.user set password=password(’123456’)
-> where user=’guest’;用此命令修改密码后要flush privileges
mysql> set password for guest@’%’=password(’guest’);此命令不需要重载授权表

15 用户权限的设置

授权表user、db、host中可设置的权限。
注:表中带“*”号的字段是授权表user、db和host共有的字段,而不带“*”号的字段是授权表user中的字段。

字段 权限名 拥有该权限的用户可执行的操作
Select_priv * select 数据查询
Insert_priv * insert 数据插入
Update_priv * update 数据修改

Delete_priv * delete 数据删除
Create_priv * create 创建数据库和表
Drop_priv * drop

删除数据库和表

Reload_priv
reload
重载/刷新MySQL服务器

Shutdown_priv
shutdown 关闭正在运行的MySQL服务器

Process_priv
process
在MySQL服务器上跟踪一项活动

File_priv file
在服务器上读写文件

Grant_priv *
grant
授予其他用户拥有该用户拥有的权限

References_priv *
references
创建、编辑和删除外键引用

Index_priv *
Index
创建、编辑和删除表索引

Alter_priv * alter
修改表

Show_db_priv
Show databases 显示可用的数据库

Super_priv super
执行管理命令

Create_tmp_table_priv *
Create temporary tables
创建临时表

Lock_tables_priv *
Lock tables
创建和删除表锁定

Execute_priv
execute
执行被保存的程序

Repl_slave_priv
Replication slave
在复制内容中读主二进制日志

Repl_client_priv
Replication client
在复制内容中申请主、副信息

授权表table_priv和columns_priv中权限字段和可设置的权限
表名 字段名 权限集合中的成员

Tables_priv Table_priv Select,insert,update,delete,create,drop,grant,references,index,alter
Column_priv Select,insert,update,references
Columns_priv Column_priv Select,insert,update,references

使用授权语句grant

GRANT 权限列表 [(字段列表)] ON 数据库名称.表名称 TO 用户名@域名或IP地址
[IDENTIFIED BY ‘密码值’] [WITH GRANT OPTION];
<4>.使用revoke语句撤权
Revoke 权限列表 [(字段列表)] ON 数据库名称.表名称 from 用户名@域名或IP地址

16 数据库的备份与恢复

备份:
mysqldump -u root -p --opt aaa > back_aaa
恢复:
mysql -u root -p ccc < back_aaa

安全需尽快修改MySQL管理员的密码
。修改密码前要先退出MySQL(在MySQL的命令提示符下输入命令quit即可)
然后用下面的命令修改:
[root@Delux ~]# mysqladmin -u root password 要设的密码

mysql [-h 主机名或ip地址] [-u 用户名] [-p]
访问本机可省略主机名

在MySQL服务器的root用户已经设置了密码的情况下,再想修改其密码,就需用以下命令:
mysqladmin -u root -p password 新密码

数据库的创建,删除和选择

create database bookcase;(创建数据库bookcase)
show databases;(显示服务器中可用的数据库)
use bookcase;(选择数据库)
drop database bookcase;(删除数据库)

创建表的SQL语句:
Create table 表名称(字段1,字段2,...字段n,[表级约束]) [type=表类型]
字段i(I=1,2,...,n)的格式为:字段名 字段类型 [字段约束]
表1:常用字段类型
类型 描述
int 允许值在0~232-1(无符号)或-231~231-1(有符号)之间的标准整数
double
双精度浮点数

char
最大长度不超过255个字符的定长字符串

varchar
最大长度不超过255个字符的变长字符串

TEXT
最大长度为65535个字符的字符串

BLOB
可变数据的二进制类型

DATE
YYYYMMDD格式表示的日期值

表2:常用的字段约束
约束
描述

NULL(或NOT NULL)
指定字段允许或不允许为空,默认为NULL

DEFAULT
为某字段指定一个默认值

AUTO_INCREMENT
自动为某个INT字段生成一个递增加1的整数

表3:表级约束
约束
描述

PRIMARY KEY
为表指定主键

FOREIGN KEY…REFERENCES
为表指定外键

INDEX
创建表索引

UNIQUE
为某个字段创建索引,该字段值必须惟一

FULLTEXT
为某个字段建立全文索引

表4:表类型
表类型
描述

MYISAM
具有很多优化和增强的特性,是MySQL默认的表类型

ISAM 类似MYISAM,但是功能较少

HEAP
保存在内存中,存取速度快,但存储量小,一旦失败就无法恢复

BDB 支持事务和页锁定

INNODE
支持事务,外键和行锁定,它是MySQL中最完善的表格式

MERGE
可把多个MyISAM表构建为一个虚拟表使得对这些表的查询仿佛在一个表上进行,提高了查询速度和修复效率,并节省了磁盘空间

评论已关闭!