MongoDB http://127.0.0.1:28017/
PHPmySQL 函数库
数据库软件:MySQL Front Navicat mysql phpMyAdmin
mysql服务器支持两种模式:
原子操作模式 利于速度
事务处理模式 利于功能
mysqladmin -u root -p reload
mysql -u root -p
mysql命令行:(命令用;或者/g结束)cmd 命令提示
mysql --help 获得帮助
show grants 显示授予用户的安全权限
show errors 显示服务器错误或警告信息
show warning 显示服务器错误或警告信息
show databases
show tables
show tables from db_name 列出指定数据库中的表
show columns from tb1_name 显示指定表中列的信息
show index from tb1_name 显示指定表中索引的信息
show table status 显示当前数据库中表的说明信息
show table status from db_name 显示指定数据库中表的说明信息
show create view ... 查看创建视图的语句
show create procedure ... 查看创建存储过程的语句
show create table .... 查看查看创建数据表的语句
desc 表名 查看表的结构[X1]
create user 用户
drop user
1. 进入dos状态(记住命令行的要运行在mysql的安装目录下的bin目录的)
2. 连接mysql
输入:mysql –h localhost –u root –p
输入在安装时已设好的密码,就近入了mysql的命令编辑界面了。
3. 使用mysql的基本命令(在mysql命令行编辑每输入完命令后最后一定要有分号,不然会报错)
显示数据库:show databases;
使用数据库:use 数据库名;
4.建库
命令:create database shujuku;
5.为数据库设置权限(用户和密码)
命令:grant all privileges on shujuku.* to test@localhost identified by “123456”;
当你执行完这个命令以后,只要你再以用户名:test,密码:123456登录时你就只可以对shujuku这个数据库操作,这样避开使用root,对数据库的安全有很大帮助.
6.建表
命令:create table biao(id int(8) primary key,name varchar(10));
剩下来的与标准sqsl命令基本上是一样的,具体操作略
值得一提的是,你在命令行上输入"?",就会有mysql命令的简单帮助,如下:
mysql数据库引擎:
InnoDB 可靠的事务处理引擎,不支持全文引擎 还有Berkley DB、BDD等
MEMORY 功能等同于MyISAM,但由于数据存储在内存,速度很快(特别适合于临时表) 还有HEAP等
MyISAM 性能极高的引擎,支持全文搜索,但不支持事务处理 默认的
可以用 SHOW ENGINES
使用一个引擎的表不能引用其他引擎的表的外键
修改mysql的引擎为INNODB,可以使用外键,事务等功能,性能高。
修改my.ini,在[mysqld]下加上
default-storage-engine=INNODB
保存,重启。
函数名不会与表名或列名发生冲突
对于函数调用唯一的限制是,在函数名的函数名后面的左括号之间不能留有空格
CREATE TABLE `ba2` (
`b` int(11) default NULL,
`a` int(11) unsigned NOT NULL auto_increment,
PRIMARY KEY (`a`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
如果不存在,则创建之,否则放弃创建:
create table if not exists students ( )
创建临时表:
create temporary table( )
查询结果构造成一个表:
create table new_table select * from .. where ...
复制表到t2:
select * into t2 from table1
复制表结构:
select * into t2 from table1 where 1=2
GROUP BY 必须先写在 ORDER BY 后,否则mysql 会报错
查询位于前2名学生的信息:限制查询
select * from student order by score DESC LIMIT 2 [W2]
对标准SQL的mysql 扩展:
select /*! starignt_join*/ col1 from table.. where ... [W3]
create /*!32302 shine*/ table t(a int) [W4]
安全:
永远不要给任何用户(mysql root 账户除外) 访问mysql数据库中用户表的权限
GRANT 权限 [W5]
REVOKE
mysql客户端程序为任何用户没有指定的连接参数使用默认值
默认主机名:localhost
win系统中默认的用户名是ODBC,unix系统中是用户登录unix系统的名字
如果-p或--password没有给定,则不提供密码
urlencode() URL编码
urldecode() 解码
类型转换:
settype()
empty() 是否为空
isset () 是否设置该变量
字符串偏移量标识:
$a = "abc";
$a{1} = "f"; //$a目前为"afc"
授权表:user db tables_priv columns_priv
user表中
host可以是一个主机名,可以是一个IP数值(可用通配符)
db表中一个空的Host值意味着它的权限应该和host表行中与客户端主机名匹配的权限进行组合
user列不允许出现通配符,但可以空值(空值可以匹配任何名字)
正则表达式:
select name from students where name REGEXP '1000' --相当于与like替换
select name from students where name REGEXP BINARY '1000' //区分大小写
全文搜索:
启用全文搜索支持 [W6]
进行全文搜索 [W7]
Mysql:auto_increment 相当于SQL Server的..indentity(1,1) [W8]
create table students
(
shine int not null auto_increment,primarry key -- 自动增量,主键
)
视图:
orderby 可用在视图中,但如果该视图检索数据select中也含有order by,则该视图中的order by将被覆盖
存储过程:
create procedure 存储名( ) .... . call 存储名( ) [W9]
解决数据库乱码问题:
mysql_query("set names gb2312");
PHP使用事务:
mysql_query("set autocommit =0[W10] ",$dblink); //设置事务的提交模式
mysql_query("start transaction",$dblink); //开始一个事务
mysql_query("commit",$dblink); //提交事务
mysql_query("rollback",$dblink); //回滚事务
mysql存储二进制数据:
Tiny bloB 最多存储255字节
BLOB[(M)] 最多存储65535个字节,可指定可容纳的字节数
MediumbloB ...16777215字节的数据
longblog ...4294967295字节即4GB的数据
MySQL执行SQL语句需要注意的重点:
在执行查找命令时的大小写问题
默认情况下,MySQL在执行查找时不区分字母的大小写。当你在查找时使用like 'a%'时, 默认将返回以a或者A开头的所有列值,若要在查找时区分大小写,则需要使用collate运算符来实现,具体例子如下:
如果想让某列在查找时始终保持区分字母大小写,则需要用case sensitive或binary collation来定义列的特性。
当进行简单比较运算,如>=, >, =, <, <=, sorting, and grouping的时候,将依从字符的内在顺序值,例如‘E’, ‘e’, and ‘é’这些字符有相同的内在顺序值。
和空值NULL相关的问题
空值的概念比较容易混淆,有人认为空值NULL和空 字符''是一会时,其实这样认为是错误的,举例来说,
空值代码段
上面两条语句有完全不同的意义和结果。第一句表示,向表中插入的记录中的某人的电话号码NULL,意思是还不知道这条记录中的人的电话号码,而第二句向表中插入''空字符,就意味着已经知道表中这条记录中的人的电话号码,这个电话号码是'',也可以确定此人没有正常的电话号码。
帮助处理空值NULL的方法,主要通过执行is null运算判断,is not null运算 判断,和IFNULL()函数运算来实现。在SQL中,任何与NULL发生运算关系的结果都不可能为真(即永远是假)。为了寻找NULL值 ,必须执行is null测试运算。
可以在MyISAM, InnoDB, BDB或MEMORY等存储类型的表列中含有空值时添加index,但该 index必须声明成not null,这样之后将不可以往该列中输入空值。
返回当前日期和时间
select CURDATE();
CURTIME() 返回当前时间
跟这个差不多show columns from tb1_name
也可以写成:
select top 2 * from ..
LIMIT 4,5 从第4行开始的第5行
也可以用游标
mysql服务器能够识别starignt_join 关键字
shine关键字只能被mysql 3.23.02或更高的版本执行
Grant all on mydb.* To pippy
create table students
(
note_id int,
prod_id char(10);
note_text text;
fulltext(mote_text); -- 也可以指定多个列
)ENGING = MyISAM
select note_text from students where Match(note_text) Against('rabbit')
SET IDENTITY_INSERT 【 database.【 owner.】 】 { table } { ON |OFF }
mysql prcedure返回值用法
mysql> CREATE PROCEDURE simpleproc (OUT param1INT)
-> BEGIN -> SELECT COUNT(*)INTO param1FROM t;
-> END;
mysql> CALL simpleproc(@a);
mysql> SELECT @a;
当该参数没有值或者小于等于0时,插入数据后执行回滚
大于0时,插入数据后执行commit