mysql

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 DBBDD

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] 

 

对标准SQLmysql 扩展:

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系统中默认的用户名是ODBCunix系统中是用户登录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] 

 

Mysqlauto_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 sensitivebinary collation来定义列的特性。

当进行简单比较运算,如>=, >, =, <, <=, sorting, and grouping的时候,将依从字符的内在顺序值,例如‘E’, ‘e’, and ‘é’这些字符有相同的内在顺序值。

 

和空值NULL相关的问题

 

空值的概念比较容易混淆,有人认为空值NULL和空 字符''是一会时,其实这样认为是错误的,举例来说,

空值代码段

上面两条语句有完全不同的意义和结果。第一句表示,向表中插入的记录中的某人的电话号码NULL,意思是还不知道这条记录中的人的电话号码,而第二句向表中插入''空字符,就意味着已经知道表中这条记录中的人的电话号码,这个电话号码是'',也可以确定此人没有正常的电话号码。

帮助处理空值NULL的方法,主要通过执行is null运算判断,is not null运算 判断,和IFNULL()函数运算来实现。在SQL中,任何与NULL发生运算关系的结果都不可能为真(即永远是假)。为了寻找NULL ,必须执行is null测试运算。

可以在MyISAM, InnoDB, BDBMEMORY等存储类型的表列中含有空值时添加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

你可能感兴趣的:(数据库,mysql,table,null,存储,引擎)