mysql 系统级操作和基本语法规定
- 命令行模式:
net start/stop mysql
- 服务模式:控制面板>管理工具>服务>mysql>启动/停止
登录、退出基本操作
- 登录:
mysql [-h 服务器地址] -u 登录名 -p 端口号 -p
- 退出:
quit;或 exit;
备份恢复数据库
- 备份数据库:
mysqldump -h服务器地址 -u登录名 -p 要备份的数据库 > 要保存的文件
- 恢复数据库:
mysql -h服务器地址 -u登录名 -p 数据库名 < 文件名
source 路径地址/*.sql
基本语法规定
- 单行注释:
#注释内容
- 单行注释:
-- 注释内容(两个“--”之后有空格)
- 多行注释:
/*注释内容*/
php中操作数据库的基本代码和流程
基本流程
- 连接数据库
$myink = mysql_connect("localhost","root","123456");
- 设定连接编码(通常utf8)
mysql_set_charset("utf8");/mysql_query("set names utf8");
- 选择数据库(如有需要)
mysql_select_db("数据库名");/mysql_query("use 数据库名");
- 执行sql 命令
$result = mysql_query($sql);
补充sql语句
set names gbk;
use 数据库名;
show databases;
desc 表名
补充php操作mysql的函数
$record = mysql_fetch_array($result);
$n1 = mysql_num_rows($result);//获取结果集行数
$n2 = mysql_num_fields($result);//获取结果集列数
mysql_field_name($result,$i);//获取结果集中第i个字段名(i从0开始)
数据定义语句
create database [if not exists] 数据库名 [ charset utf8] [collate 字符排序规则];
alter database 数据库名 character set=utf8 collate=新校对集;
drop database 数据库名;
use 数据库名;
数据类型
- 整数:tinyint(-128——127),smallint(-32769——32767),mediumint(-8388608——8388607),int(),bigint()
- 小数型:float,Double,decimal
- 日期时间型:year,timestamp,time,date,datetime
- 字符串型:set,enum,blob,text,varchar,char
表相关语句
create table [if not exists] 表名(字段列表,[约束或者索引列表])[表选项列表]
字段属性
- not null
- auto_increment
- [primary] key
- unique [key]
- default
- comment
索引设置
- 普通索引:key(字段1,字段2,...)
- 唯一索引:unique key(字段1,字段2,...)
- 主键索引:primary key(字段1,字段2,...)
- 全文索引: fulltext(字段1,字段2,...)
表选项
- comment="表的注释";
- charset="字符编码";
- auto_increment=起始整数;
- engine=“InnoDB/MyIsam”;
修改表
alter table 表名 add [column] 字段名 字段类型 字段属性 //增
alter table 表名 drop 字段名 //删
alter table 表名 change 原字段名 新字段名 新字段类型 新字段属性 //改
删除表
drop table [if exists] 表名;
表的其他操作
show tables;
desc 表名;
show create table 表名;//显示表的创建语句
create table [if not esists] 新表名 like 原表名;//从已有表复制表结构
数据操作语言
数据插入
insert into 表名(字段1,字段2,...) values(值a1,值a2,...),(值b1,,值b2,...),...;
create table 表1 select * from 表名2 //复制一个表的结构和数据
insert into tab2 select * from tab1;//同时复制结构和数据
删除数据
delete from 表名[where条件][order排序][limit限定];
truncate [table] 表名;//直接删除整个表并重新创建该表
修改数据
update 表名 set 字段名1=值的表达式1,字段名2=值的表达式2,...[where][order][limit]
数据查询语句
select [all|distinct] 字段或表达式列表 [from 子句][where][group by][having][order by][limit]
连接查询
from 表1 [连接方式] join 表2 [on 连接条件];
内连接
from 表1 [inner] join 表2 on 表1.字段1=表2.字段2;
左【外】连接
from 表1 left [outer] join 表2 on 连接条件
** 说明:左连接会把表1的所有列表展示出来,表2不符合条件的用null表示,内连接只会把两个表所符合条件的列表展示出来 **
子查询
select 字段或者表达式或者(子查询1)[as 别名] from 表名或者(子查询2) where 字段或者表达式或者(子查询3)的条件判断
数据控制语言
创建用户
create user '用户名'@'允许其登陆的地址' identified by '密码'; //%代表任何地址
删除用户
drop user '用户名'@'允许登陆的地址';
修改用户密码
set password=password('新密码');//修改自己密码
set password for "用户名"@'允许其登陆的地址' = password("新密码");
权限分配
增加权限
grant 权限名1,权限名2,... on 数据库名.对象名 to '用户名'@'允许其登陆的地址' identified by '密码';
删除权限
revoke 权限名1,权限名2,... on 数据库名.对象名 from '用户名'@'允许其登陆的地址';