当前位置:首页 » 操作系统 » AZE算法

AZE算法

发布时间: 2022-08-21 07:22:01

Ⅰ Mysql 的历史

MySQL的海豚标志的名字叫“sakila”,它是由MySQL AB的创始人从用户在“海豚命名”的竞赛中建议的大量的名字表中选出的。获胜的名字是由来自非洲斯威士兰的开源软件开发者Ambrose Twebaze提供。根据Ambrose所说,Sakila来自一种叫SiSwati的斯威士兰方言,也是在Ambrose的家乡乌干达附近的坦桑尼亚的Arusha的一个小镇的名字。

二.MySQL 发展

MySQL的历史最早可以追溯到1979年,有一个人叫Monty Widenius, 为一个叫TcX的小公司打工,并用BASIC设计了一个报表工具,可以在4M主频和16KB内在的计算机上运行。过了不久,又将此工具,使用C语言重写,移植到Unix平台,当时,它只是一个很底层的面向报表的存储引擎。这个工具叫做Unireg。

1985 年,瑞典的几位志同道合小伙子(以David Axmark 为首) 成立了一家公司,这就是MySQL AB 的前身。这个公司最初并不是为了开发数据库产品,而是在实现他们想法的过程中,需要一个数据库。他们希望能够使用开源的产品。但在当时并没有一个合适的选择,没办法,那就自己开发吧。

在最初,他们只是自己设计了一个利用索引顺序存取数据的方法,也就是I S A M(Indexed Sequential Access Method)存储引擎核心算法的前身,利用ISAM 结合mSQL 来实现他们的应用需求。在早期,他们主要是为瑞典的一些大型零售商提供数据仓库服务。在系统使用过程中,随着数据量越来越大,系统复杂度越来越高,ISAM 和mSQL 的组合逐渐不堪重负。在分析性能瓶颈之后,他们发现问题出在mSQL 上面。不得已,他们抛弃了mSQL,重新开发了一套功能类似的数据存储引擎,这就是ISAM 存储引擎。大家可能已经注意到他们当时的主要客户是数据仓库,应该也容易理解为什么直至现在,MySQL 最擅长的是查询性能,而不是事务处理(需要借助第三方存储引擎)。

1990年,TcX的customer 中开始有人要求要为它的API提供SQL支持,当时,有人想到了直接使用商用数据库算了,但是Monty觉得商用数据库的速度难令人满意。于是,他直接借助于mSQL的代码,将它集成到自己的存储引擎中。但不巧的是,效果并不太好。于是,Monty雄心大起,决心自己重写一个SQL支持。

1996年,MySQL 1.0发布, 在小范围内使用。到了96年10月,MySQL 3.11.1发布了,没有2.x版本。最开始,只提供了Solaris下的二进制版本。一个月后,Linux版本出现了。 此时的MySQL还非常简陋,除了在一个表上做一些Insert,Update,Delete和Select 操作职位,没有其他更多的功能。

紧接下来的两年里,MySQL依次移植到各个平台下。它发布时,采用的许可策略,有些与众不同:允许免费商用,但是不能将MySQL与自己的产品绑定在一起发布。如果想一起发布,就必须使用特殊许可,意味着要花银子。当然,商业支持也是需要花银子的。其它的,随用户怎么用都可以。这种特殊许可为MySQL带来了一些收入,从而为它的持续发展打下了良好的基础。

1999-2000年,有一家公司在瑞典成立了,叫MySQL AB。 雇了几个人,与Sleepycat合作,开发出了 Berkeley DB引擎, 因为BDB支持事务处理,所以,MySQL从此开始支持事务处理了。

在2000 年的时候,MySQL 公布了自己的源代码,并采用GPL(GNU General Public License)许可协议,正式进入开源世界。

2000年4月,MySQL对旧的存储引擎进行了整理,命名为MyISAM。

2001年,Heikiki Tuuri向MySQL提出建议,希望能集成他们的存储引擎InnoDB,这个引擎同样支持事务处理,还支持行级锁。所以在2001年发布的3.23 版本的时候,该版本已经支持大多数的基本的SQL 操作,而且还集成了MyISAM和InnoDB 存储引擎。MySQL与InnoDB的正式结合版本是4.0。

2004年10月,发布了经典的4.1版本。 2005年10月,有发布了里程碑的一个版本,MySQL 5.0. 在5.0中加入了游标,存储过程,触发器,视图和事务的支持。在5.0 之后的版本里,MySQL明确地表现出迈向高性能数据库的发展步伐。

2008年1月16号 MySQL被Sun公司收购。

2009年04月20日Oracle收购Sun 公司,MySQL 转入Oracle 门下。

2010年04月22 发布MySQL 5.5, MySQLcluster 7.1.

现在官网可以下到的MySQL 版本是:5.5.18. Oracle 对MySQL版本重新进行了划分,分成了社区版和企业版,企业版是需要收费的,当然收费的就会提供更多的功能。

Ⅱ 求助C语言的问题

我的就是任意长度的啊,你没测试过吗

#include <stdio.h>
#include <conio.h>
#include <ctype.h>
#include <string.h>
#define MAX 1000
#define MARK ('0'-1)

//The Prototypes of the functions
char* Initialiaze(char [],int);
char* Addition(char[],char[]);
char* Substraction(char[],char[]);
char* Multiplication(char[],char[]);
char* Division(char[],char[]);
char Div_per_bit(char [],int , char []);
int Sub_per_bit(char [],char [],int *);
int Copy(char [],int ,char []);
int Compare(char [],char []);
int Data_Process(char []);
int Value(char);
int Compare(char [],char []);
int Judge(int);
int Convert(char [],char [],int);

int main()
{ char a[MAX],b[MAX];
printf("a(length<%d):",MAX);
gets(a);
printf("b(length<%d):",MAX);
gets(b);
printf("\n");
printf("a+b=%s\n",Addition(a,b));
printf("a-b=%s\n",Substraction(a,b));
printf("a*b=%s\n",Multiplication(a,b));
printf("a/b=%s\n",Division(a,b));
return 0;
}
//The Iniatilize function ,initialize the result number before calculation
char* Initialize(char s[],int length)
{ int i;
for (i=0; i<length; i++)
s[i]=MARK;
return s;

}
//The Addition function , add two operands and return the result
char* Addition(char a[],char b[])
{ char c[2*MAX],d[2*MAX];
int i,j,k,a_length,b_length;
Initialize(c,2*MAX);
a_length=strlen(a);
b_length=strlen(b);
for (i=a_length-1,j=b_length-1,k=2*MAX-1; ( i>=0 || j>=0 ) ; i--,j--,k--)
{ if ( i>=0 && j>=0 )
c[k]=Value(a[i])+Value(b[j])+'0';
else
if (i>=0 && j<0 )
c[k]=Value(a[i])+'0';
else
if ( i<0 && j>=0 )
c[k]=Value(b[j])+'0';
}
Data_Process(c);
Convert(c,d,2*MAX);
return d;
}
//The Substraction function , substract one operand from another operand , and return the result
char* Substraction(char a[],char b[])
{ char c[2*MAX],d[2*MAX];
int i,j,k,a_length,b_length,sub_result,symbol,flag[2*MAX]={0};
Initialize(c,2*MAX);
a_length=strlen(a);
b_length=strlen(b);
if (strcmp(a,b)==0)
return ("0");
for (i=a_length-1,j=b_length-1,k=2*MAX-1; ( i>=0 || j>=0 ) ; i--,j--,k--)
{ sub_result=a[i]-b[j];
symbol=Judge(sub_result);
if (i>=1 && j>=0)
{ if (flag[k]==0)
{ if (a[i]>=b[j])
c[k]=sub_result+'0';
else
{ c[k]=sub_result+10+'0';
flag[k-1]=1;
}
}
else
{ if (a[i]-b[j]>=1)
c[k]=sub_result-1+'0';
else
{ c[k]=sub_result+9+'0';
flag[k-1]=1;
}
}
}
else
if (i==0 && j<0)
{
if (flag[k]==0)
c[k]=a[i];
else
{ if (a[i]==1)
;
else
c[k]=a[i]-1;
}
}
else
{ if ((i==0) && (j==0))
{ if (flag[k]==0)
{ switch (symbol)
{ case 0: ;
break;
case 1: c[k]=sub_result+'0';
break;
case -1: return NULL;
break;
}
}
else
{ switch (Judge(sub_result-1))
{ case 0: ;
break;
case 1: c[k]=sub_result-1+'0';
break;
case -1: return NULL;
break;
}
}
}
else
if ((i<0) && (j>=0))
return NULL;
else
if ((i>0) && (j<0))
{ if (flag[k]==0)
c[k]=a[i];
else
{ if (a[i]>'0')
c[k]=a[i]-1;
else
{ c[k]='9';
flag[k-1]=1;
}
}
}
}
}
Convert(c,d,2*MAX);
return d;
}
//The Multiplication function,multipy two operands and return the result
char* Multiplication(char a[],char b[])
{ char c[2*MAX],d[2*MAX];
int i,j,k,p,a_length,b_length;
Initialize(c,2*MAX);
a_length=strlen(a);
b_length=strlen(b);
for (j=b_length-1; j>=0 ; j--)
{ k=2*MAX-(b_length-j);
for (i=a_length-1,p=k; i>=0; i--,p--)
if (c[p]==MARK)
{ c[p]=(Value(a[i]))*(Value(b[j]))%10+'0';
if (c[p-1]==MARK)
c[p-1]=(Value(a[i]))*(Value(b[j]))/10+'0';
else
c[p-1]+=(Value(a[i]))*(Value(b[j]))/10;
}
else
{ c[p]+=(Value(a[i]))*(Value(b[j]))%10;
if (c[p-1]==MARK)
c[p-1]=(Value(a[i]))*(Value(b[j]))/10+'0';
else
c[p-1]+=(Value(a[i]))*(Value(b[j]))/10;
}
Data_Process(c);
}
Convert(c,d,2*MAX);
return d;

}
//The Division function,divise one operand from another operand, and return the result
char* Division(char a[],char b[])
{ char a1[MAX],c[MAX],d[MAX];
strcpy(a1,a);
int i,k,a_length=strlen(a1),b_length=strlen(b);
for (i=0; b[i]; i++)
if (b[i]!='0')
break;
if ((unsigned int)i==strlen(b))

{ printf("Error!\nIf you do division,the dividend must not equal to zero!\n");
return 0;
}
if (Compare(a,b)==-1)
{ printf("Error!\nIf you do division, A must bigger than B!\n");
return 0;
}
for ( i=0,k=0; k<a_length-b_length+1; i++,k++)
c[k]=Div_per_bit(a1,b_length+i,b);
c[k]='\0';
Convert(c,d,MAX);
return d;

}
//The Div_per_bit function , calculate quotient per digit ,and return the result to Division function
char Div_per_bit(char a[],int a_l,char b[])
{ int i,j;
char c[MAX];
for (i=0,j=0; i<a_l; i++)
if ( a[i]!=MARK)
{ c[j]=a[i];
j++;
}
c[j]='\0';
for (i=0; c[i]; i++)
if (c[i]!='0')
break;
if ((unsigned int)i==strlen(c))
return '0';
if (Compare(c,b)<0)
return '0';
if (Compare(c,b)==0)
{ for ( i=0; i<a_l; i++)
a[i]=MARK;
return '1';
}
i=0;
while (Compare(c,b)>=0)
Sub_per_bit(c,b,&i);
Copy(a,a_l,c);
return ('0'+i);

}
//The Sub_per_bit function, do the division by using substraction time after time
int Sub_per_bit(char a[],char b[],int *count)
{ char c[MAX],d[MAX];
int i,j,k,a_length,b_length,sub_result,symbol,flag[MAX]={0};
Initialize(c,MAX);
a_length=strlen(a);
b_length=strlen(b);
if (strcmp(a,b)==0)
strcpy(c,"0");
for (i=a_length-1,j=b_length-1,k=MAX-1; ( i>=0 || j>=0 ) ; i--,j--,k--)
{ sub_result=a[i]-b[j];
symbol=Judge(sub_result);
if (i>=1 && j>=0)
{ if (flag[k]==0)
{ if (a[i]>=b[j])
c[k]=sub_result+'0';
else
{ c[k]=sub_result+10+'0';
flag[k-1]=1;
}
}
else
{ if (a[i]-b[j]>=1)
c[k]=sub_result-1+'0';
else
{ c[k]=sub_result+9+'0';
flag[k-1]=1;
}
}
}
else
if (i==0 && j<0)
{
if (flag[k]==0)
c[k]=a[i];
else
{ if (a[i]==1)
;
else
c[k]=a[i]-1;
}
}
else
{ if ((i==0) && (j==0))
{ if (flag[k]==0)
{ switch (symbol)
{ case 0: ;
break;
case 1: c[k]=sub_result+'0';
break;
case -1: return 0;
break;
}
}
else
{ switch (Judge(sub_result-1))
{ case 0: ;
break;
case 1: c[k]=sub_result-1+'0';
break;
case -1: return 0;
break;
}
}
}
else
if ((i<0) && (j>=0))
{ return 0;
}
else
if ((i>0) && (j<0))
{ if (flag[k]==0)
c[k]=a[i];
else
{ if (a[i]>'0')
c[k]=a[i]-1;
else
{ c[k]='9';
flag[k-1]=1;
}
}
}
}
}
Convert(c,d,MAX);
strcpy(a,d);
(*count)++;
return 1;
}
//The Copy function , a number_string to another , wipe off the inutility symbol
int Copy(char a[],int a_l,char c[])
{ int i,j,c_l=strlen(c);
for (i=0; i<a_l-c_l; i++)
a[i]=MARK;
for (i,j=0; j<c_l; i++,j++)
a[i]=c[j];
return 1;
}
//The Compare function ,compare two numbers and return the result
int Compare(char a[],char b[])
{// char c[MAX];
if ((strlen(a))>(strlen(b)))
return 1;
if ((strlen(a))==(strlen(b)))
return (strcmp(a,b));
//if ((strlen(a))<(strlen(b)))
return -1;
}

//The Value function , receiver a digit_char, and return the number
int Value(char c)
{ if (isdigit(c))
return (c-'0');
else return 0;
}
//The Data_Process function,
int Data_Process(char s[])
{ int p,head,tail=2*MAX-1;
for (head=0; s[head]==MARK ; head++)
;
for (p=tail; p>=head ; p--)
if (!isdigit(s[p]))
if (s[p-1]!=MARK)
{ s[p-1]+=(s[p]-'0')/10;
s[p]=(s[p]-'0')%10+'0';
}
else
{ s[p-1]=(s[p]-'0')/10+'0';
s[p]=(s[p]-'0')%10+'0';
}
return 1;
}
//The Judeg function , judge the symbol of the number
int Judge(int i)
{ if (i==0)
return 0;
else
if (i>0)
return 1;
else
return -1;
}
//The Convert function , convert the original result to the final result ,wipe off the inuility symbol and number
int Convert(char c[],char d[],int length)
{ int i,j;
for (i=0; i<length; i++)
if (c[i]==MARK || c[i]=='0')
;
else
break;
for (i,j=0; i<length; i++,j++)
d[j]=c[i];
d[j]='\0';
return 1;
}

Ⅲ 什么是MySql数据库

MySQL数据库:

    MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。

    MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。

    MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。

    数据库简介:

    MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。

    由于MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。

    MySQL这个名字,起源不是很明确。一个比较有影响的说法是,基本指南和大量的库和工具带有前缀“my”已经有10年以上,而且不管怎样,MySQL AB创始人之一的Monty Widenius的女儿也叫My。这两个到底是哪一个给出了MySQL这个名字至今依然是个迷,包括开发者在内也不知道。

    MySQL的海豚标志的名字叫“sakila”,它是由MySQL AB的创始人从用户在“海豚命名”的竞赛中建议的大量的名字表中选出的。获胜的名字是由来自非洲斯威士兰的开源软件开发者Ambrose Twebaze提供。根据Ambrose所说,Sakila来自一种叫SiSwati的斯威士兰方言,也是在Ambrose的家乡乌干达附近的坦桑尼亚的Arusha的一个小镇的名字。

    MySQL,虽然功能未必很强大,但因为它的开源、广泛传播,导致很多人都了解到这个数据库。它的历史也富有传奇性。

    MySQL数据库历史:

    MySQL的历史最早可以追溯到1979年,那时Oracle也才小打小闹,微软的SQL Server影子都没有。有一个人叫Monty Widenius, 为一个叫TcX的小公司打工,并用BASIC设计了一个报表工具,可以在4M主频和16KB内存的计算机上运行。过了不久,又将此工具,使用C语言重写,移植到Unix平台,当时,它只是一个很底层的面向报表的存储引擎。这个工具叫做Unireg。

    可是,这个小公司资源有限,Monty天赋极高,面对资源有限的不利条件,他反而更能发挥潜能,总是力图写出最高效的代码。并因此养成了习惯。与Monty同在一起的还有一些别的同事,很少有人能坚持把那些代码持续写到20年后,而Monty却做到了。

    1990年,TcX的customer 中开始有人要求要为它的API提供SQL支持,当时,有人想到了直接使用商用数据库算了,但是Monty觉得商用数据库的速度难令人满意。于是,他直接借助于mSQL的代码,将它集成到自己的存储引擎中。但不巧的是,效果并不太好。于是, Monty雄心大起,决心自己重写一个SQL支持。

    1996年,MySQL 1.0发布,只面向一小拨人,相当于内部发布。到了96年10月,MySQL 3.11.1发布了,呵呵,没有2.x版本。最开始,只提供了Solaris下的二进制版本。一个月后,Linux版本出现了。

    紧接下来的两年里,MySQL依次移植到各个平台下。它发布时,采用的许可策略,有些与众不同:允许免费商用,但是不能将MySQL与自己的产品绑定在一起发布。如果想一起发布,就必须使用特殊许可,意味着要花银子。当然,商业支持也是需要花银子的。其它的,随用户怎么用都可以。这种特殊许可为MySQL带来了一些收入,从而为它的持续发展打下了良好的基础。(细想想,PostgreSQL曾经有几年限入低谷,可能与它的完全免费,不受任何限制有关系)。

    MySQL3.22应该是一个标志性的版本,提供了基本的SQL支持。

    MySQL关系型数据库于1998年1月发行第一个版本。它使用系统核心提供的多线程机制提供完全的多线程运行模式,提供了面向C、C++、Eiffel、Java、Perl、php、Python以及Tcl等编程语言的编程接口(APIs),支持多种字段类型并且提供了完整的操作符支持查询中的SELECT和WHERE操作。

    MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。MySQL因为其速度、可靠性和适应性而备受关注。

    1999-2000年,有一家公司在瑞典成立了,叫MySQL AB (AB是瑞典语“股份公司”的意思)。 雇了几个人,与Sleepycat合作,开发出了 Berkeley DB引擎, 因为BDB支持事务处理,所以,MySQL从此开始支持事务处理了。

    2000年4月,MySQL对旧的存储引擎进行了整理,命名为MyISAM。同时,2001年,Heikiki Tuuri向MySQL提出建议,希望能集成他们的存储引擎InnoDB,这个引擎同样支持事务处理,还支持行级锁。

    如今,遗憾的是,BDB和InnoDB好像都被Oracle收购了,为了消灭竞争对手,哪怕是开源的,都是不择手段。

    MySQL与InnoDB的正式结合版本是4.0。

    到了MySQL5.0,2003年12月,开始有View,存储过程之类的东东,当然,其间, bug也挺多。

    在2008年1月16号 MySQL被Sun公司收购。

    最近,MySQL的创始人Monty Widenius已经向Sun提交了辞呈。head都要走了。

    据说,被Sun收购的公司多薄命,不知道MySQL今后前途如何,希望一路走好。相信MySQL的生命力还是很长久的。

    时至今日 mysql 和 php 的结合绝对是完美.很多大型的网站也用到mysql数据库.mysql的发展前景是非常光明的!

    MySQL常用命令:

    1:使用SHOW语句找出在服务器上当前存在什么数据库:

    mysql> SHOW DATABASES;

    2:2、创建一个数据库MYSQLDATA

    mysql> CREATE DATABASE MYSQLDATA;

    3:选择你所创建的数据库

    mysql> USE MYSQLDATA; (按回车键出现Database changed 时说明操作成功!)

    4:查看现在的数据库中存在什么表

    mysql> SHOW TABLES;

    5:创建一个数据库表

    mysql> CREATE TABLE MYTABLE (name VARCHAR(20), sex CHAR(1));

    6:显示表的结构:

    mysql> DESCRIBE MYTABLE;

    7:往表中加入记录

    mysql> insert into MYTABLE values (”hyq”,”M”);

    8:用文本方式将数据装入数据库表中(例如D:/mysql.txt)

    mysql> LOAD DATA LOCAL INFILE “D:/mysql.txt” INTO TABLE MYTABLE;

    9:导入.sql文件命令(例如D:/mysql.sql)

    mysql>use database;

    mysql>source d:/mysql.sql;

    10:删除表

    mysql>drop TABLE MYTABLE;

    11:清空表

    mysql>delete from MYTABLE;

    12:更新表中数据

    mysql>update MYTABLE set sex=”f” where name=’hyq’;

    全局管理权限对应解释:

    FILE: 在MySQL服务器上读写文件。

    PROCESS: 显示或杀死属于其它用户的服务线程。

    RELOAD: 重载访问控制表,刷新日志等。

    SHUTDOWN: 关闭MySQL服务。

    数据库/数据表/数据列权限:

    ALTER: 修改已存在的数据表(例如增加/删除列)和索引。

    CREATE: 建立新的数据库或数据表。

    DELETE: 删除表的记录。

    DROP: 删除数据表或数据库。

    INDEX: 建立或删除索引。

    INSERT: 增加表的记录。

    SELECT: 显示/搜索表的记录。

    UPDATE: 修改表中已存在的记录。

    特别的权限:

    ALL: 允许做任何事(和root一样)。

    USAGE: 只允许登录–其它什么也不允许做。

    MySQL数据库导入方法:

    MySQL数据库的导入,有两种方法:

    1) 先导出数据库SQL脚本,再导入;

    2) 直接拷贝数据库目录和文件。

    在不同操作系统或MySQL版本情况下,直接拷贝文件的方法可能会有不兼容的情况发生。

    所以一般推荐用SQL脚本形式导入。下面分别介绍两种方法。

    2. 方法一 SQL脚本形式

    操作步骤如下:

    2.1. 导出SQL脚本

    在原数据库服务器上,可以用phpMyAdmin工具,或者mysqlmp命令行,导出SQL脚本。

    2.1.1 用phpMyAdmin工具

    导出选项中,选择导出“结构”和“数据”,不要添加“DROP DATABASE”和“DROP TABLE”选项。

    选中“另存为文件”选项,如果数据比较多,可以选中“gzipped”选项。

    将导出的SQL文件保存下来。

    2.1.2 用mysqlmp命令行

    命令格式

    mysqlmp -u 用户名 -p 数据库名 > 数据库名.sql

    范例:

    mysqlmp -u root -p abc > abc.sql

    (导出数据库abc到abc.sql文件)

    提示输入密码时,输入该数据库用户名的密码。

    2.2. 创建空的数据库

    通过主控界面/控制面板,创建一个数据库。假设数据库名为abc,数据库全权用户为abc_f。

    2.3. 将SQL脚本导入执行

    同样是两种方法,一种用phpMyAdmin(mysql数据库管理)工具,或者mysql命令行。

    2.3.1 用phpMyAdmin工具

    从控制面板,选择创建的空数据库,点“管理”,进入管理工具页面。

    在"SQL"菜单中,浏览选择刚才导出的SQL文件,点击“执行”以上载并执行。

    注意:phpMyAdmin对上载的文件大小有限制,php本身对上载文件大小也有限制,如果原始sql文件

    比较大,可以先用gzip对它进行压缩,对于sql文件这样的文本文件,可获得1:5或更高的压缩率。

    gzip使用方法:

    # gzip xxxxx.sql

    得到

    xxxxx.sql.gz文件。

    提示输入密码时,输入该数据库用户名的密码。

    3 直接拷贝

    如果数据库比较大,可以考虑用直接拷贝的方法,但不同版本和操作系统之间可能不兼容,要慎用。

    3.1 准备原始文件

    用tar打包为一个文件

    3.2 创建空数据库

    3.3 解压

    在临时目录中解压,如:

    cd /tmp

    tar zxf mydb.tar.gz

    3.4 拷贝

    将解压后的数据库文件拷贝到相关目录

    cd mydb/

    cp * /var/lib/mysql/mydb/

    对于FreeBSD:

    cp * /var/db/mysql/mydb/

    3.5 权限设置

    将拷贝过去的文件的属主改为mysql:mysql,权限改为660

    chown mysql:mysql /var/lib/mysql/mydb/*

    chmod 660 /var/lib/mysql/mydb/*

    Mssql转换mysql的方法:

    1.导表结构

    使用MySQL生成create脚本的方法。找到生成要导出的脚本,按MySQL的语法修改一下到MySQL数据库中创建该表的列结构什么的。

    2.导表数据

    在MSSQL端使用bcp导出文本文件:

    bcp “Select * FROM dbname.dbo.tablename;” queryout tablename.txt -c -Slocalhostdb2005 -Usa

    其中”"中是要导出的sql语句,-c指定使用 进行字段分隔,使用 进行记录分隔,-S指定数据库服务器及实例,-U指定用户名,-P指定密码.

    在MySQL端使用mysqlimport 导入文本文件到相应表中

    mysqlimport -uroot -p databasename /home/test/tablename.txt

    其中-u指定用户名,-p指定密码,databasename指定数据库名称,表名与文件名相同

    MySQL备份与恢复:

    MySQL备份恢复数据的一般步骤

    备份一个数据库的例子:

    1、备份前读锁定涉及的表

    mysql>LOCK TABLES tbl1 READ,tbl1 READ,…
    如果,你在mysqlmp实用程序中使用--lock-tables选项则不必使用如上SQL语句。

    2、导出数据库中表的结构和数据

    shell>mysqlmp --opt db_name>db_name.sql

    3、启用新的更新日志

    shell>mysqladmin flush-logs

    这样可以记录你备份后的数据改变为恢复数据准备。

    4、解除表的读锁

    mysql>UNLOCK TABLES;

    为了加速上述过程,你可以这样做:

    shell> mysqlmp --lock-tables --opt db_name>db_name.sql; mysqladmin flush-logs

    但是这样可能会有点小问题。上命令在启用新的更新日志前就恢复表的读锁,
    在更新繁忙的站点,可能有备份后的更新数据没有记录在新的日志中。
    现在恢复上面备份的数据库

    1、对涉及的表使用写锁

    mysql>LOCK TABLES tbl1 WRITE,tbl1 WRITE,…

    2、恢复备份的数据

    shell>mysql db_name < db_name.sql

    3、恢复更新日志的内容

    shell>mysql --one-database db_name < hostname.nnn

    假设需要使用的日志名字为hostname.nnn

    4、启用新的更新日志

    shell>mysqladmin flush-logs

    5、解除表的写锁

    mysql>UNLOCK TABLES;

    希望上面的例子能给你启发,因为备份数据的手法多种多样,你所使用的和上面所述可能大不一样,但是对于备份和恢复中,表的锁定、启用新的更新日志的时机应该是类似的,仔细考虑这个问题。

    MySQL数据库优化:

    选择InnoDB作为存储引擎

    大型产品的数据库对于可靠性和并发性的要求较高,InnoDB作为默认的MySQL存储引擎,相对于MyISAM来说是个更佳的选择。

    优化数据库结构

    组织数据库的schema、表和字段以降低I/O的开销,将相关项保存在一起,并提前规划,以便随着数据量的增长,性能可以保持较高的水平。

    设计数据表应尽量使其占用的空间最小化,表的主键应尽可能短。·对于InnoDB表,主键所在的列在每个辅助索引条目中都是可复制的,因此如果有很多辅助索引,那么一个短的主键可以节省大量空间。

    仅创建你需要改进查询性能的索引。索引有助于检索,但是会增加插入和更新操作的执行时间。

    InnoDB的ChangeBuffering特性

    InnoDB提供了changebuffering的配置,可减少维护辅助索引所需的磁盘I/O。大规模的数据库可能会遇到大量的表操作和大量的I/O,以保证辅助索引保持最新。当相关页面不在缓冲池里面时,InnoDB的changebuffer将会更改缓存到辅助索引条目,从而避免因不能立即从磁盘读取页面而导致耗时的I/O操作。当页面被加载到缓冲池时,缓冲的更改将被合并,更新的页面之后会刷新到磁盘。这样做可提高性能,适用于MySQL5.5及更高版本。

    InnoDB页面压缩

    InnoDB支持对表进行页面级的压缩。当写入数据页的时候,会有特定的压缩算法对其进行压缩。压缩后的数据会写入磁盘,其打孔机制会释放页面末尾的空块。如果压缩失败,数据会按原样写入。表和索引都会被压缩,因为索引通常是数据库总大小中占比很大的一部分,压缩可以显着节约内存,I/O或处理时间,这样就达到了提高性能和伸缩性的目的。它还可以减少内存和磁盘之间传输的数据量。MySQL5.1及更高版本支持该功能。

    注意,页面压缩并不能支持共享表空间中的表。共享表空间包括系统表空间、临时表空间和常规表空间。

    使用批量数据导入

    在主键上使用已排序的数据源进行批量数据的导入可加快数据插入的过程。否则,可能需要在其他行之间插入行以维护排序,这会导致磁盘I/O变高,进而影响性能,增加页的拆分。关闭自动提交的模式也是有好处的,因为它会为每个插入执行日志刷新到磁盘。在批量插入期间临时转移唯一键和外键检查也可显着降低磁盘I/O。对于新建的表,最好的做法是在批量导入后创建外键/唯一键约束。

    一旦你的数据达到稳定的大小,或者增长的表增加了几十或几百兆字节,就应该考虑使用OPTIMIZETABLE语句重新组织表并压缩浪费的空间。对重新组织后的表进行全表扫描所需要的I/O会更少。

    优化InnoDB磁盘I/O

    增加InnoDB缓冲池大小可以让查询从缓冲池访问而不是通过磁盘I/O访问。通过调整系统变量innodb_flush_method来调整清除缓冲的指标使其达到最佳水平。

    MySQL的内存分配

    在为MySQL分配足够的内存之前,请考虑不同领域对MySQL的内存需求。要考虑的关键领域是:并发连接——对于大量并发连接,排序和临时表将需要大量内存。在撰写本文时,对于处理3000+并发连接的数据库,16GB到32GB的RAM是足够的。

    内存碎片可以消耗大约10%或更多的内存。像innodb_buffer_pool_size、key_buffer_size、query_cache_size等缓存和缓冲区要消耗大约80%的已分配内存。

    日常维护

    定期检查慢的查询日志并优化查询机制以有效使用缓存来减少磁盘I/O。优化它们,以扫描最少的行数,而不是进行全表扫描。

    其他可以帮助DBA检查和分析性能的日志包括:错误日志、常规查询日志、二进制日志、DDL日志(元数据日志)。

    定期刷新缓存和缓冲区以降低碎片化。使用OPTIMIZETABLE语句重新组织表并压缩任何可能被浪费的空间。

Ⅳ 编程高手帮我看下,我只要算法就行!

#include <stdio.h>
#include <conio.h>
#include <ctype.h>
#include <string.h>
#define MAX 1000
#define MARK ('0'-1)

//The Prototypes of the functions
char* Initialiaze(char [],int);
char* Addition(char[],char[]);
char* Substraction(char[],char[]);
char* Multiplication(char[],char[]);
char* Division(char[],char[]);
char Div_per_bit(char [],int , char []);
int Sub_per_bit(char [],char [],int *);
int Copy(char [],int ,char []);
int Compare(char [],char []);
int Data_Process(char []);
int Value(char);
int Compare(char [],char []);
int Judge(int);
int Convert(char [],char [],int);

int main()
{ char a[MAX],b[MAX];
printf("a(length<%d):",MAX);
gets(a);
printf("b(length<%d):",MAX);
gets(b);
printf("\n");
printf("a+b=%s\n",Addition(a,b));
printf("a-b=%s\n",Substraction(a,b));
printf("a*b=%s\n",Multiplication(a,b));
printf("a/b=%s\n",Division(a,b));
return 0;
}
//The Iniatilize function ,initialize the result number before calculation
char* Initialize(char s[],int length)
{ int i;
for (i=0; i<length; i++)
s[i]=MARK;
return s;

}
//The Addition function , add two operands and return the result
char* Addition(char a[],char b[])
{ char c[2*MAX],d[2*MAX];
int i,j,k,a_length,b_length;
Initialize(c,2*MAX);
a_length=strlen(a);
b_length=strlen(b);
for (i=a_length-1,j=b_length-1,k=2*MAX-1; ( i>=0 || j>=0 ) ; i--,j--,k--)
{ if ( i>=0 && j>=0 )
c[k]=Value(a[i])+Value(b[j])+'0';
else
if (i>=0 && j<0 )
c[k]=Value(a[i])+'0';
else
if ( i<0 && j>=0 )
c[k]=Value(b[j])+'0';
}
Data_Process(c);
Convert(c,d,2*MAX);
return d;
}
//The Substraction function , substract one operand from another operand , and return the result
char* Substraction(char a[],char b[])
{ char c[2*MAX],d[2*MAX];
int i,j,k,a_length,b_length,sub_result,symbol,flag[2*MAX]={0};
Initialize(c,2*MAX);
a_length=strlen(a);
b_length=strlen(b);
if (strcmp(a,b)==0)
return ("0");
for (i=a_length-1,j=b_length-1,k=2*MAX-1; ( i>=0 || j>=0 ) ; i--,j--,k--)
{ sub_result=a[i]-b[j];
symbol=Judge(sub_result);
if (i>=1 && j>=0)
{ if (flag[k]==0)
{ if (a[i]>=b[j])
c[k]=sub_result+'0';
else
{ c[k]=sub_result+10+'0';
flag[k-1]=1;
}
}
else
{ if (a[i]-b[j]>=1)
c[k]=sub_result-1+'0';
else
{ c[k]=sub_result+9+'0';
flag[k-1]=1;
}
}
}
else
if (i==0 && j<0)
{
if (flag[k]==0)
c[k]=a[i];
else
{ if (a[i]==1)
;
else
c[k]=a[i]-1;
}
}
else
{ if ((i==0) && (j==0))
{ if (flag[k]==0)
{ switch (symbol)
{ case 0: ;
break;
case 1: c[k]=sub_result+'0';
break;
case -1: return NULL;
break;
}
}
else
{ switch (Judge(sub_result-1))
{ case 0: ;
break;
case 1: c[k]=sub_result-1+'0';
break;
case -1: return NULL;
break;
}
}
}
else
if ((i<0) && (j>=0))
return NULL;
else
if ((i>0) && (j<0))
{ if (flag[k]==0)
c[k]=a[i];
else
{ if (a[i]>'0')
c[k]=a[i]-1;
else
{ c[k]='9';
flag[k-1]=1;
}
}
}
}
}
Convert(c,d,2*MAX);
return d;
}
//The Multiplication function,multipy two operands and return the result
char* Multiplication(char a[],char b[])
{ char c[2*MAX],d[2*MAX];
int i,j,k,p,a_length,b_length;
Initialize(c,2*MAX);
a_length=strlen(a);
b_length=strlen(b);
for (j=b_length-1; j>=0 ; j--)
{ k=2*MAX-(b_length-j);
for (i=a_length-1,p=k; i>=0; i--,p--)
if (c[p]==MARK)
{ c[p]=(Value(a[i]))*(Value(b[j]))%10+'0';
if (c[p-1]==MARK)
c[p-1]=(Value(a[i]))*(Value(b[j]))/10+'0';
else
c[p-1]+=(Value(a[i]))*(Value(b[j]))/10;
}
else
{ c[p]+=(Value(a[i]))*(Value(b[j]))%10;
if (c[p-1]==MARK)
c[p-1]=(Value(a[i]))*(Value(b[j]))/10+'0';
else
c[p-1]+=(Value(a[i]))*(Value(b[j]))/10;
}
Data_Process(c);
}
Convert(c,d,2*MAX);
return d;

}
//The Division function,divise one operand from another operand, and return the result
char* Division(char a[],char b[])
{ char a1[MAX],c[MAX],d[MAX];
strcpy(a1,a);
int i,k,a_length=strlen(a1),b_length=strlen(b);
for (i=0; b[i]; i++)
if (b[i]!='0')
break;
if ((unsigned int)i==strlen(b))

{ printf("Error!\nIf you do division,the dividend must not equal to zero!\n");
return 0;
}
if (Compare(a,b)==-1)
{ printf("Error!\nIf you do division, A must bigger than B!\n");
return 0;
}
for ( i=0,k=0; k<a_length-b_length+1; i++,k++)
c[k]=Div_per_bit(a1,b_length+i,b);
c[k]='\0';
Convert(c,d,MAX);
return d;

}
//The Div_per_bit function , calculate quotient per digit ,and return the result to Division function
char Div_per_bit(char a[],int a_l,char b[])
{ int i,j;
char c[MAX];
for (i=0,j=0; i<a_l; i++)
if ( a[i]!=MARK)
{ c[j]=a[i];
j++;
}
c[j]='\0';
for (i=0; c[i]; i++)
if (c[i]!='0')
break;
if ((unsigned int)i==strlen(c))
return '0';
if (Compare(c,b)<0)
return '0';
if (Compare(c,b)==0)
{ for ( i=0; i<a_l; i++)
a[i]=MARK;
return '1';
}
i=0;
while (Compare(c,b)>=0)
Sub_per_bit(c,b,&i);
Copy(a,a_l,c);
return ('0'+i);

}
//The Sub_per_bit function, do the division by using substraction time after time
int Sub_per_bit(char a[],char b[],int *count)
{ char c[MAX],d[MAX];
int i,j,k,a_length,b_length,sub_result,symbol,flag[MAX]={0};
Initialize(c,MAX);
a_length=strlen(a);
b_length=strlen(b);
if (strcmp(a,b)==0)
strcpy(c,"0");
for (i=a_length-1,j=b_length-1,k=MAX-1; ( i>=0 || j>=0 ) ; i--,j--,k--)
{ sub_result=a[i]-b[j];
symbol=Judge(sub_result);
if (i>=1 && j>=0)
{ if (flag[k]==0)
{ if (a[i]>=b[j])
c[k]=sub_result+'0';
else
{ c[k]=sub_result+10+'0';
flag[k-1]=1;
}
}
else
{ if (a[i]-b[j]>=1)
c[k]=sub_result-1+'0';
else
{ c[k]=sub_result+9+'0';
flag[k-1]=1;
}
}
}
else
if (i==0 && j<0)
{
if (flag[k]==0)
c[k]=a[i];
else
{ if (a[i]==1)
;
else
c[k]=a[i]-1;
}
}
else
{ if ((i==0) && (j==0))
{ if (flag[k]==0)
{ switch (symbol)
{ case 0: ;
break;
case 1: c[k]=sub_result+'0';
break;
case -1: return 0;
break;
}
}
else
{ switch (Judge(sub_result-1))
{ case 0: ;
break;
case 1: c[k]=sub_result-1+'0';
break;
case -1: return 0;
break;
}
}
}
else
if ((i<0) && (j>=0))
{ return 0;
}
else
if ((i>0) && (j<0))
{ if (flag[k]==0)
c[k]=a[i];
else
{ if (a[i]>'0')
c[k]=a[i]-1;
else
{ c[k]='9';
flag[k-1]=1;
}
}
}
}
}
Convert(c,d,MAX);
strcpy(a,d);
(*count)++;
return 1;
}
//The Copy function , a number_string to another , wipe off the inutility symbol
int Copy(char a[],int a_l,char c[])
{ int i,j,c_l=strlen(c);
for (i=0; i<a_l-c_l; i++)
a[i]=MARK;
for (i,j=0; j<c_l; i++,j++)
a[i]=c[j];
return 1;
}
//The Compare function ,compare two numbers and return the result
int Compare(char a[],char b[])
{// char c[MAX];
if ((strlen(a))>(strlen(b)))
return 1;
if ((strlen(a))==(strlen(b)))
return (strcmp(a,b));
//if ((strlen(a))<(strlen(b)))
return -1;
}

//The Value function , receiver a digit_char, and return the number
int Value(char c)
{ if (isdigit(c))
return (c-'0');
else return 0;
}
//The Data_Process function,
int Data_Process(char s[])
{ int p,head,tail=2*MAX-1;
for (head=0; s[head]==MARK ; head++)
;
for (p=tail; p>=head ; p--)
if (!isdigit(s[p]))
if (s[p-1]!=MARK)
{ s[p-1]+=(s[p]-'0')/10;
s[p]=(s[p]-'0')%10+'0';
}
else
{ s[p-1]=(s[p]-'0')/10+'0';
s[p]=(s[p]-'0')%10+'0';
}
return 1;
}
//The Judeg function , judge the symbol of the number
int Judge(int i)
{ if (i==0)
return 0;
else
if (i>0)
return 1;
else
return -1;
}
//The Convert function , convert the original result to the final result ,wipe off the inuility symbol and number
int Convert(char c[],char d[],int length)
{ int i,j;
for (i=0; i<length; i++)
if (c[i]==MARK || c[i]=='0')
;
else
break;
for (i,j=0; i<length; i++,j++)
d[j]=c[i];
d[j]='\0';
return 1;
}

Ⅳ 算法案例(一)(V2.0)种子下载地址有么好人一生平安

算法案例(一)(V2.0)种子下载地址:

Ⅵ 求解码!!!

你脑残。

Ⅶ LAMP环境下,mysql是一台单独的的机器只用来提供数据库服务。如何在web的机器设置数据库的访问路径

MySQL名字的来历
MySQL最初的开发者的意图是用mSQL和他们自己的快速低级例程(ISAM)去连接表格。不管怎样,在经过一些测试后,开发者得出结论:mSQL并没有他们需要的那么快和灵活。这导致了一个使用几乎和mSQL一样的API接口的用于他们的数据库的新的SQL接口的产生,这样,这个API被设计成允许为用于mSQL而写的第三方代码更容易移植到MySQL。
MySQL这个名字是怎么来的已经不清楚了。基本指南和大量的库和工具带有前缀“my”已经有10年以上,而且不管怎样,MySQL AB创始人之一的Monty Widenius的女儿也叫My。这两个到底是哪一个给出了MySQL这个名字至今依然是个迷,包括开发者在内也不知道。
MySQL的海豚标志的名字叫“sakila”,它是由MySQL AB的创始人从用户在“海豚命名”的竞赛中建议的大量的名字表中选出的。获胜的名字是由来自非洲斯威士兰的开源软件开发者Ambrose Twebaze提供。根据Ambrose所说,Sakila来自一种叫SiSwati的斯威士兰方言,也是在Ambrose的家乡乌干达附近的坦桑尼亚的Arusha的一个小镇的名字。
[编辑本段]MySQL的概述
MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。MySQL的官方网站的网址是:
[编辑本段]MySQL的特性
1.使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性
2.支持AIX、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统
3.为多种编程语言提供了API。这些编程语言包括C、C++、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等。
4.支持多线程,充分利用CPU资源
5.优化的SQL查询算法,有效地提高查询速度
6.既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的编码如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名
7.提供TCP/IP、ODBC和JDBC等多种数据库连接途径
8.提供用于管理、检查、优化数据库操作的管理工具
9.可以处理拥有上千万条记录的大型数据库
[编辑本段]MySQL的应用
与其他的大型数据库例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之处,如规模小、功能有限(MySQL Cluster的功能和效率都相对比较差)等,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。
目前Internet上流行的网站构架方式是LAMP(Linux+Apache+MySQL+PHP),即使用Linux作为操作系统,Apache作为Web服务器,MySQL作为数据库,PHP作为服务器端脚本解释器。由于这四个软件都是遵循GPL的开放源码软件,因此使用这种方式不用花一分钱就可以建立起一个稳定、免费的网站系统。
[编辑本段]MySQL管理
可以使用命令行工具管理MySQL数据库(命令mysql 和 mysqladmin),也可以从MySQL的网站下载图形管理工具MySQL Administrator和MySQL Query Browser。
phpMyAdmin是由php写成的MySQL资料库系统管理程式,让管理者可用Web接口管理MySQL资料库。
phpMyBackupPro也是由PHP写成的,可以透过Web接口创建和管理数据库。它可以创建伪cronjobs,可以用来自动在某个时间或周期备份MySQL 数据库。
另外,还有其他的GUI管理工具,例如早先的mysql-front 以及 ems mysql manager,navicat 等等。
[编辑本段]Mysql存储引擎
MyISAM Mysql的默认数据库,最为常用。拥有较高的插入,查询速度,但不支持事务
InnoDB 事务型数据库的首选引擎,支持ACID事务,支持行级锁定
BDB 源自Berkeley DB,事务型数据库的另一种选择,支持COMMIT和ROLLBACK等其他事务特性
Memory 所有数据置于内存的存储引擎,拥有极高的插入,更新和查询效率。但是会占用和数据量成正比的内存空间。并且其内容会在Mysql重新启动时丢失
Merge 将一定数量的MyISAM表联合而成一个整体,在超大规模数据存储时很有用
Archive 非常适合存储大量的独立的,作为历史记录的数据。因为它们不经常被读取。Archive拥有高效的插入速度,但其对查询的支持相对较差
Federated 将不同的Mysql服务器联合起来,逻辑上组成一个完整的数据库。非常适合分布式应用
Cluster/NDB 高冗余的存储引擎,用多台数据机器联合提供服务以提高整体性能和安全性。适合数据量大,安全和性能要求高的应用
CSV 逻辑上由逗号分割数据的存储引擎
BlackHole 黑洞引擎,写入的任何数据都会消失,一般用于记录binlog做复制的中继
另外,Mysql的存储引擎接口定义良好。有兴趣的开发者通过阅读文档编写自己的存储引擎。
[编辑本段]Mysql最常见的应用架构
单点(Single),适合小规模应用
复制(Replication),适合中小规模应用
集群(Cluster),适合大规模应用
[编辑本段]mysql历史版本
MySQL公司目前在同时开发两个版本的软件,4.1版以及5.0版。4.1版本的代码已经发布并有望在8个月后公布最终代码。而5.0版本的最后产品将在6个月后发布。
MySQL4.1版本中增加了不少新的性能,包括对主键的更高速度的缓存,对子查询的更好的支持,以及应网络约会网站所要求的,基于地理信息的查询。
而其同步开发的5.0版本则把目标对准了企业用户,对于4.1版本中的所有新特性,5.0版本悉数收入囊中,并且独具以下特点:对外键的良好支持;系统自动报错机制以及对存储过程的充分支持。

Mysql现在现已开发出5.1版本支持视图!
[编辑本段]Mysql中文视频教学

左光华的mysql网络数据库开发教学视频
Mysql6.0的alpha版于2007年初发布,新版增加了对falcon存储引擎的支持。Falcon是Mysql社区自主开发的引擎,支持ACID特性事务,支持行锁,拥有高性能的并发性。Mysql AB公司想用Falcon替代已经非常流行的InnoDB引擎,因为拥有后者技术的InnoBase已经被竞争对手Oracle所收购。
2008年1月16日,Sun Microsystems宣布收购MySQL AB,出价约10亿美元现金包括期权。
[编辑本段]MySQL的基本命令
[ ]中的内容为可选项
--创建数据库
mysql> create database 数据库名称
--创建表
mysql> create table 表名 (
列的名字(id)类型(int(4))primary key(定义主键) auto_increment(描述 自增),
……,
);
--查看所有数据库
mysql> show databases 数据库名称;
--使用某个数据库
mysql> use database 数据库名称;
--查看所使用数据库下所有的表
mysql> show tables;
--显示表的属性结构
mysql> desc 表名;
--选择表中数据的显示
--* 代表选择所有列 ,
mysql> select * from 表名 where id=?[and name=?] [or name=?];
mysql> select id,name from 表名order by 某一列的名称 desc(降序,asc为升序)
--删除表中的数据
mysql> delete from table where id=?[or name=? (and name=?)];
--删除表
mysql> drop table;
--删除数据库
mysql> drop database;
索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。
注:[1]索引不是万能的!索引可以加快数据检索操作,但会使数据修改操作变慢。每修改数据记录,索引就必须刷新一次。为了在某种程序上弥补这一缺陷,许多SQL命令都有一个DELAY_KEY_WRITE项。这个选项的作用是暂时制止 MySQL在该命令每插入一条新记录和每修改一条现有之后立刻对索引进行刷新,对索引的刷新将等到全部记录插入/修改完毕之后再进行。在需要把许多新记录插入某个数据表的场合,DELAY_KEY_WRITE选项的作用将非常明显。[2]另外,索引还会在硬盘上占用相当大的空间。因此应该只为最经常查询和最经常排序的数据列建立索引。注意,如果某个数据列包含许多重复的内容,为它建立索引就没有太大的实际效果。
从理论上讲,完全可以为数据表里的每个字段分别建一个索引,但MySQL把同一个数据表里的索引总数限制为16个。
1. InnoDB数据表的索引
与MyISAM数据表相比,在 InnoDB数据表上,索引对InnoDB数据表的重要性要在得多。在InnoDB数据表上,索引不仅会在搜索数据记录时发挥作用,还是数据行级锁定机制的苊、基础。"数据行级锁定"的意思是指在事务操作的执行过程中锁定正在被处理的个别记录,不让其他用户进行访问。这种锁定将影响到(但不限于)SELECT...LOCK IN SHARE MODE、SELECT...FOR UPDATE命令以及INSERT、UPDATE和DELETE命令。
出于效率方面的考虑,InnoDB数据表的数据行级锁定实际发生在它们的索引上,而不是数据表自身上。显然,数据行级锁定机制只有在有关的数据表有一个合适的索引可供锁定的时候才能发挥效力。
2. 限制
如果WEHERE子句的查询条件里有不等号(WHERE coloum != ...),MySQL将无法使用索引。
类似地,如果WHERE子句的查询条件里使用了函数(WHERE DAY(column) = ...),MySQL也将无法使用索引。
在JOIN操作中(需要从多个数据表提取数据时),MySQL只有在主键和外键的数据类型相同时才能使用索引。
如果WHERE子句的查询条件里使用比较操作符LIKE和REGEXP,MySQL 只有在搜索模板的第一个字符不是通配符的情况下才能使用索引。比如说,如果查询条件是LIKE 'abc%',MySQL将使用索引;如果查询条件是LIKE '%abc',MySQL将不使用索引。
在ORDER BY操作中,MySQL只有在排序条件不是一个查询条件表达式的情况下才使用索引。(虽然如此,在涉及多个数据表查询里,即使有索引可用,那些索引在加快ORDER BY方面也没什么作用)
如果某个数据列里包含许多重复的值,就算为它建立了索引也不会有很好的效果。比如说,如果某个数据列里包含的净是些诸如"0/1"或"Y/N"等值,就没有必要为它创建一个索引。
普通索引、唯一索引和主索引
1. 普通索引
普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度。因此,应该只为那些最经常出现在查询条件(WHERE column = ...)或排序条件(ORDER BY column)中的数据列创建索引。只要有可能,就应该选择一个数据最整齐、最紧凑的数据列(如一个整数类型的数据列)来创建索引。
2. 唯一索引
普通索引允许被索引的数据列包含重复的值。比如说,因为人有可能同名,所以同一个姓名在同一个"员工个人资料"数据表里可能出现两次或更多次。
如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据列创建索引的时候就应该用关键字UNIQUE把它定义为一个唯一索引。这么做的好处:一是简化了MySQL对这个索引的管理工作,这个索引也因此而变得更有效率;二是 MySQL会在有新记录插入数据表时,自动检查新记录的这个字段的值是否已经在某个记录的这个字段里出现过了;如果是,MySQL将拒绝插入那条新记录。也就是说,唯一索引可以保证数据记录的唯一性。事实上,在许多场合,人们创建唯一索引的目的往往不是为了提高访问速度,而只是为了避免数据出现重复。
3. 主索引
在前面已经反复多次强调过:必须为主键字段创建一个索引,这个索引就是所谓的"主索引"。主索引与唯一索引的唯一区别是:前者在定义时使用的关键字是PRIMARY而不是UNIQUE。
4. 外键索引
如果为某个外键字段定义了一个外键约束条件,MySQL就会定义一个内部索引来帮助自己以最有效率的方式去管理和使用外键约束条件。
5. 复合索引
索引可以覆盖多个数据列,如像INDEX(columnA, columnB)索引。这种索引的特点是MySQL可以有选择地使用一个这样的索引。如果查询操作只需要用到columnA数据列上的一个索引,就可以使用复合索引INDEX(columnA, columnB)。不过,这种用法仅适用于在复合索引中排列在前的数据列组合。比如说,INDEX(A, B, C)可以当做A或(A, B)的索引来使用,但不能当做B、C或(B, C)的索引来使用。
6. 索引的长度
在为CHAR和VARCHAR类型的数据列定义索引时,可以把索引的长度限制为一个给定的字符个数(这个数字必须小于这个字段所允许的最大字符个数)。这么做的好处是可以生成一个尺寸比较小、检索速度却比较快的索引文件。在绝大多数应用里,数据库中的字符串数据大都以各种各样的名字为主,把索引的长度设置为10~15个字符已经足以把搜索范围缩小到很少的几条数据记录了。
在为BLOB和TEXT类型的数据列创建索引时,必须对索引的长度做出限制;MySQL所允许的最大索引jlkjljkjlj全文索引
文本字段上的普通索引只能加快对出现在字段内容最前面的字符串(也就是字段内容开头的字符)进行检索操作。如果字段里存放的是由几个、甚至是多个单词构成的较大段文字,普通索引就没什么作用了。这种检索往往以LIKE %word%的形式出现,这对MySQL来说很复杂,如果需要处理的数据量很大,响应时间就会很长。
这类场合正是全文索引(full-text index)可以大显身手的地方。在生成这种类型的索引时,MySQL将把在文本中出现的所有单词创建为一份清单,查询操作将根据这份清单去检索有关的数据记录。全文索引即可以随数据表一同创建,也可以等日后有必要时再使用下面这条命令添加:
ALTER TABLE tablename ADD FULLTEXT(column1, column2)
有了全文索引,就可以用SELECT查询命令去检索那些包含着一个或多个给定单词的数据记录了。下面是这类查询命令的基本语法:
SELECT * FROM tablename
WHERE MATCH(column1, column2) AGAINST('word1', 'word2', 'word3')
上面这条命令将把column1和column2字段里有word1、word2和word3的数据记录全部查询出来。
注解:InnoDB数据表不支持全文索引。
查询和索引的优化
只有当数据库里已经有了足够多的测试数据时,它的性能测试结果才有实际参考价值。如果在测试数据库里只有几百条数据记录,它们往往在执行完第一条查询命令之后就被全部加载到内存里,这将使后续的查询命令都执行得非常快--不管有没有使用索引。只有当数据库里的记录超过了1000条、数据总量也超过了MySQL服务器上的内存总量时,数据库的性能测试结果才有意义。
在不确定应该在哪些数据列上创建索引的时候,人们从EXPLAIN SELECT命令那里往往可以获得一些帮助。这其实只是简单地给一条普通的SELECT命令加一个EXPLAIN关键字作为前缀而已。有了这个关键字,MySQL将不是去执行那条SELECT命令,而是去对它进行分析。MySQL将以表格的形式把查询的执行过程和用到的索引(如果有的话)等信息列出来。
在EXPLAIN命令的输出结果里,第1列是从数据库读取的数据表的名字,它们按被读取的先后顺序排列。type列指定了本数据表与其它数据表之间的关联关系(JOIN)。在各种类型的关联关系当中,效率最高的是system,然后依次是const、eq_ref、ref、range、index和All(All的意思是:对应于上一级数据表里的每一条记录,这个数据表里的所有记录都必须被读取一遍--这种情况往往可以用一索引来避免)。
possible_keys数据列给出了MySQL在搜索数据记录时可选用的各个索引。key数据列是MySQL实际选用的索引,这个索引按字节计算的长度在key_len数据列里给出。比如说,对于一个INTEGER数据列的索引,这个字节长度将是4。如果用到了复合索引,在key_len数据列里还可以看到MySQL具体使用了它的哪些部分。作为一般规律,key_len数据列里的值越小越好(意思是更快)。
ref数据列给出了关联关系中另一个数据表里的数据列的名字。row数据列是MySQL在执行这个查询时预计会从这个数据表里读出的数据行的个数。row数据列里的所有数字的乘积可以让我们大致了解这个查询需要处理多少组合。
最后,extra数据列提供了与JOIN操作有关的更多信息,比如说,如果MySQL在执行这个查询时必须创建一个临时数据表,就会在extra列看到using temporary字样
[编辑本段]安装MySQL时候的注意事项
1、如果您是用MySQL+Apache,使用的又是FreeBSD网路操作系统的话,安装时候你应按注意到FreeBSD的版本问题,在FreeBSD的3.0以下版本来说,MySQL Source内含的MIT-pthread运行是正常的,但在这版本以上,你必须使用native threads,也就是加入一个with-named-thread-libs=-lc_r的选项。
2、如果您在COMPILE过程中出了问题,请先检查你的gcc版本是否在2.81版本以上,gmake版本是否在3.75以上。
3、如果不是版本的问题,那可能是你的内存不足,请使用./configure -- with-low-memory来加入。
4、如果您要重新做你的configure,那么你可以键入rm config.cache和make clean来清除记录。
5、我们一般把MySQL安装在/usr/local目录下,这是缺省值,您也可以按照你的需要设定你所安装的目录。

Ⅷ MYSQL是怎样的一个数据库

MySQL最初的开发者的意图是用mSQL和他们自己的快速低级例程(ISAM)去连接表格。不管怎样,在经过一些测试后,开发者得出结论:mSQL并没有他们需要的那么快和灵活。这导致了一个使用几乎和mSQL一样的API接口的用于他们的数据库的新的SQL接口的产生,这样,这个API被设计成允许为用于mSQL而写的第三方代码更容易移植到MySQL。 MySQL这个名字是怎么来的已经不清楚了。基本指南和大量的库和工具带有前缀“my”已经有10年以上,而且不管怎样,MySQL AB创始人之一的Monty Widenius的女儿也叫My。这两个到底是哪一个给出了MySQL这个名字至今依然是个密,包括开发者在内也不知道。 MySQL的海豚标志的名字叫“sakila”,它是由MySQL AB的创始人从用户在“海豚命名”的竞赛中建议的大量的名字表中选出的。获胜的名字是由来自非洲斯威士兰的开源软件开发者Ambrose Twebaze提供。根据Ambrose所说,Sakila来自一种叫SiSwati的斯威士兰方言,也是在Ambrose的家乡乌干达附近的坦桑尼亚的Arusha的一个小镇的名字。编辑本段MySQL的概述 MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。MySQL的官方网站的网址是: www.mysql.com 编辑本段MySQL的特性 1.使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性 2.支持AIX、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统 3.为多种编程语言提供了API。这些编程语言包括C、C++、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等。 4.支持多线程,充分利用CPU资源 5.优化的SQL查询算法,有效地提高查询速度 6.既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的编码如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名 7.提供TCP/IP、ODBC和JDBC等多种数据库连接途径 8.提供用于管理、检查、优化数据库操作的管理工具 9.可以处理拥有上千万条记录的大型数据库编辑本段MySQL的应用 与其他的大型数据库例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之处,如规模小、功能有限(MySQL Cluster的功能和效率都相对比较差)等,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。 目前Internet上流行的网站构架方式是LAMP(Linux+Apache+MySQL+PHP),即使用Linux作为操作系统,Apache作为Web服务器,MySQL作为数据库,PHP作为服务器端脚本解释器。由于这四个软件都是遵循GPL的开放源码软件,因此使用这种方式不用花一分钱就可以建立起一个稳定、免费的网站系统。编辑本段MySQL管理 可以使用命令行工具管理MySQL数据库(命令mysql 和 mysqladmin),也可以从MySQL的网站下载图形管理工具MySQL Administrator和MySQL Query Browser。 phpMyAdmin是由php写成的MySQL资料库系统管理程式,让管理者可用Web接口管理MySQL资料库。 phpMyBackupPro也是由PHP写成的,可以透过Web接口创建和管理数据库。它可以创建伪cronjobs,可以用来自动在某个时间或周期备份MySQL 数据库。 另外,还有其他的GUI管理工具,例如早先的mysql-front 以及 ems mysql manager,navicat 等等。

Ⅸ 求2010年初级会计实务和经济法基础的习题班mp3课件和讲义,中华和东奥的都可以,谢谢了

你是要考2011年的吧?
虽然变化不大,但变化的都是要点,尤其是税务部分,改了几个关键的地方。
所以你如果是要考试的话,不要用2010年的教材了。
发点经验给你吧。
首先说说初级吧,初级考《初级会计实务》、《经济法基础》两科,并且必须一次通过。

我很久以前就把初级考下来了,那时候有计算大题,综合题,貌似2010年开始有不定项选择代替了计算,我不知道是不是,建议大家找找历年题。

《初级会计实务》,个人感觉《初级会计实务》比《中级会计实务》详细一些,初级会计实务的主要内容是在企业中,一般会计业务中出现的,就是经常出现的一些经济业务的会计处理,比如资产,负债,所有者权益,收入,成本,利润等问题。其中资产涉及到应收应付,交易性金融资产,(好像2010年增加了投资性房地产)。不会涉及到非货币性资产交换,不会涉及到债务重组,长期股权投资等中级的知识。

从整体上说,初级会计实务不难,如果你的会计证是湖南,广东,上海,北京这些地方考的,那么初级对你来说重点就是经济法基础。如果你的会计证是河北,江苏,陕西,河南,广西等地考的,那么初级会有难度,因为这些地方的会计证的账务处理知识太少,我看过这些地方的教材,就一章涉及到账务处理。

好了,说主题,初级会计实务的方法。

首先这本书分为两大块,前面是实务,后面是成本会计(以前还带基础,基础所指的是比如凭证,账簿,账务处理程序,现在没有这些了,直接从资产,负债开始。)

学会计常说的是归纳对比记特殊,

归纳,比如说资产,资产里面的应收账款,应收票据,其他应收款,其账务处理差不多的,差别在于核算内容的不同。(说到这里我想起来,实务部分的编写,大家拿到书,每章的黑体字都是从意义,账务处理都是从初始计量----减值---处置这么写下来的,大家也可以这么去归纳)

对比就是说,资产和负债可以对比,比如应收账款与应付账款,应收票据与应付票据,其他应收款与其他应付款,都是可以对比的。你在学负债的时候,你要去联想资产是怎么处理的。一笔经济业务,你不仅要熟悉例如中本企业的账务处理,还要想着对方企业的账务处理,这样能加深你的印象。

特殊,你比如交易性金融资产,没什么可以对比的,大体上按照资产的处理方式,这里我说几点。这里要以公允价值后续计量,就会遇到“公允价值变动的问题”。尤其是会计账务处理没学过的。还不知道“交易性金融资产--公允价值变动”和“公允价值变动损益”的区别。注意,这里同投资性房地产一样的,都涉及到二级科目。在这里,你关键是看一级科目,不要去死记。比如说,初始入账成本100股的股票,成本为100,到了月底100股涨到了110.这就是说,交易性金融资产的公允价值上升,言外之意,就是资产增加了,资产增加记借方,借:交易性金融资产--公允价值变动,贷:公允价值变动。

上面的这个例子,就是对分录的一种记忆,叫做“记一半”,就是说当你知道记什么科目,而分不清记借方还是贷方的时候,你要逻辑判断是什么要素增加,什么要素减少。

交易性金融资产还一个问题是投资收益问题,注意转让的投资收益(不包括收到股利或者利息),转让的投资收益有一种验算,就是最终处置也就是卖出去的价格减去买进来的成本的数字,要等于处置时投资收益的数字(如果投资收益分两步做,就注意投资收益加起来),不要去管中间的数字是如何变动的,因为中间的数字只涉及公允价值变动损益。

投资性房地产,这里我觉得考难题的可能性小,毕竟初级不是注册会计师那么强的综合性。投资性房地产,你注意成本法和权益法的运用要求,还一个转换问题,书上很详细的,没多少技术性的东西。核算范围可能是选择题考到的,注意一个产权来判断投资性房地产。然后自用的转为投资性房地产,和投资性房地产转为自用的,这里有些麻烦。

然后是固定资产,无形资产,要注意了,这里最好放一起学,因为都涉及到初始计量,初始计量又都包括购买和自建/自创,后续计量都包括折旧或者摊销,都包括处置。看书的时候在一起注意联系区别。

再然后就是负债了,负债的难点我个人觉得是应付职工薪酬,尤其是物品的发放是个难点的地方,这里注意如果是商品就要视同销售,注意视同销售按照销售价格来算,还是按照成本来算应付职工薪酬。注意一个税。如果是固定资产,比如租用车或者房子给管理人员,注意折旧。然后应交税费绕口,应交消费税,注意是连续生产还是收回后直接对外出售。哪些是算营业税金及附加科目,哪些是算入管理费用,这里一定要注意,也是选择爱考的。

接下来是所有者权益,这里内容也少,好理解,没多少可讲的地方,注意利润分配和资本公积吧。注意资本公积涉及到还挺多,你比如投资性房地产的某类经济业务,与资本公积有联系,注意核算范围。然后利润分配和未分配利润吧,这里也有点特殊,没什么对比的。

收入,注意代销,在做代销的时候,注意是买断的还是代理的,这里两种情况。还有建造合同。注意销售收入确认的时间,一定要注意,比如广告收入,会员收入的确认时间,是比较重要的。

成本费用,记少不记多,记住财务费用的核算内容吧。其他的销售费用是与销售有关的。除开财务费用和销售费用,其他都是管理费用了。

利润,记住分布式利润表,书上会给一张表,不要去死记公式,把表,表上每一步都有黑体字,记住黑体字,按照顺序最后算到净利润,每一步计算包括什么,不包括什么。

财务报表,注意,这个年年考,到底是考资产负债表,还是考利润表,还是考现金流量表,要注意。

资产负债表,如果考这个,那么你发了,财务报表肯定考的,重点是些对分录。财务报表也会考客观。

注意按照什么数字,到底是根据科目合计呢,还是要减,还是根据明细记,还是计算分析填列。建议大家仔细看看,你比如货币资金要根据银行存款,三个月内到期的,现金等合计填列。当然不只这一个。

主要注意应收账款,应付账款,预收账款,预付账款的填列。这里你记的时候也有一个方法,就是前面所说的4个科目外。其他科目填列的方式都根据类型的,比如某一类的相似的科目就去记。

关于后面的成本,这里不难,不复杂,注意借贷会就一般会,成本要计算的有。

辅助成本分配问题,在产品与完工产品(尤其是约当产量的问题),品种法,分批法,分步法(三种主要方法),然后副产品和联产品。

成本的算法关键是分配率,分配率就是说几种产品耗用,要计算出分配率就是关键问题。只要你算出是个整数,就对了。

辅助成本分配的问题,注意是顺序分配还是交互分配。

在产品完工产品约当产量注意,约当产量的问题,注意书上原材料是一次投入,还是每一步开始一次投入,还是随着进度陆续投入,这个就注意了。还要注意一种方法就是消耗定额。

品种法,一般不会考,把分录全部写出来,然后成本费用类科目归集。

分批法注意表,最重要的是简化的分批法,就是完工了才归集。

分步法注意还原。

这里说说成本看表的问题吧。

一定要注意,一张表,竖着看是加法减法的问题,一定要按照 月初+本月=在产+完工。

斜着看,就是算分配率的问题,是除法。

经济法基础:

2010年与2009年比,改了一章。

准确的说经济法基础是包括了税,这里没啥说的。

学税,一定要注意,计税基础,初级的经济法基础的税,大题出起来肯定不复杂。与注册会计师的税法比,判断的东西部多。

学税好归纳的地方是,税是按照定义,征收对象,纳税范围,纳税义务人,计税基础,纳税时间,纳税地点,税收优惠,这么一个顺序这么列下来的。

所以你有空的话,自己罗列一下。

热点内容
随机启动脚本 发布:2025-07-05 16:10:30 浏览:535
微博数据库设计 发布:2025-07-05 15:30:55 浏览:31
linux485 发布:2025-07-05 14:38:28 浏览:310
php用的软件 发布:2025-07-05 14:06:22 浏览:760
没有权限访问计算机 发布:2025-07-05 13:29:11 浏览:436
javaweb开发教程视频教程 发布:2025-07-05 13:24:41 浏览:723
康师傅控流脚本破解 发布:2025-07-05 13:17:27 浏览:246
java的开发流程 发布:2025-07-05 12:45:11 浏览:696
怎么看内存卡配置 发布:2025-07-05 12:29:19 浏览:288
访问学者英文个人简历 发布:2025-07-05 12:29:17 浏览:837