Mysql复制表结构,学习mysql的一些记录

SHOW VARIABLES;/**查看服务器实际运行参数值**/
02     /*查询是否存在  此存储过程。如果存在则删除*/
03     DROP PROCEDURE IF EXISTS helloword
04     /*测试存储过程*/
05     DELIMITER //
06     CREATE PROCEDURE helloword()
07     BEGIN
08         SELECT ‘hellor word’;
09     END
10     /*调用存储过程*/
11     CALL helloword
12    
13     DROP PROCEDURE IF EXISTS pr_add
14     /*测试在存储过程中选择语句*/
15     DELIMITER //
16     CREATE PROCEDURE pr_add(
17     a INT,
18     b INT)
19     BEGIN
20     IF a IS NULL THEN
21     SET a=0;
22     END IF;
23     SELECT a+b;
24     END
25     /*调用*/
26     CALL pr_add(NULL,1);
27     /*删除存储过程*/
28     DROP PROCEDURE pr_add;
29     /*创建视图*/
30     CREATE VIEW teabc AS SELECT * FROM abcd WHERE abc=’aa’
31     SELECT * FROM teabc
32     /*查询用户名权限*/
33     SHOW GRANTS FOR
[email protected]
34     /*创建视图  触发器支持事件  insert update delete*/
35     /*此含义:如果abcd这张表插入记录时 运行begin内语句SetUserHome
为触发品名称*/
36     DELIMITER //
37     CREATE TRIGGER SetUserHome BEFORE INSERT ON abcd
38     FOR EACH ROW 
39     BEGIN 
40     INSERT INTO stime VALUE(NOW(),’hello word’);
41     END
42    
43     /*操作用户相关*/
44    
/*权限:select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file
45     如果允许全部权限,可以用all或者all privileges代替以上权限。*/
46     /*alter 修改表和索引create 创建数据库和表delete
删除表中已有的记录drop 抛弃(删除)数据库和表index 创建或抛弃索引
47     insert 向表中插入新行reference 未用select 检索表中的记录update
修改现存表记录file 读或写服务器上的文件
48     process 查看服务器中执行的线程信息或杀死线程reload
重载授权表或清空日志、主机缓存或表缓存。shutdown 关闭服务器
49     all 所有;all privileges同义词usage 特殊的“无权限”权限*/
50     /*修改用户密码 需要重启服务*/
51     UPDATE USER SET PASSWORD=PASSWORD(‘zhouhui’) WHERE USER=’root’;
52     /*创建用户  大意:可以操作test数据库的所有表 
mfkwfc只能由127.0.0.1登录  密码是123*/
53     GRANT ALL PRIVILEGES ON test.* TO
[email protected]
IDENTIFIED BY ‘123’;
54     /*取消用户此权力*/
55     REVOKE INSERT ON test.* FROM
[email protected];
56     /*添加用户此权力*/
57     GRANT INSERT ON test.* TO
[email protected]
58     /*修改密码  USAGE无权限的意思*/
59     GRANT USAGE ON test.* TO
[email protected]
IDENTIFIED BY ‘mfkwfc’;
60     /*刷新权限*/
61     FLUSH PRIVILEGES;
 

以下是安装MySQL源码分发版的更详细的描述:
1.    为mysqld增加一个登录用户和组:
2.            shell> groupadd mysql3.            shell> useradd -g
mysql mysql这些命令将增加MySQL组和MySQL用户。不同版本的Unix中,useradd
和groupadd的语法可能会稍有不同。还可以称为adduser和addgroup。
你可能会将这些用户和组命名为mysql之外的名称。如果是这样,在下面的步骤中替换为相应的名称。
4.    挑选一个你想解开分发包的目录,进入该目录。
5.    从2.1.3节,”怎样获得MySQL”中列出的站点之一获得一个分发文件。
6.    在当前目录下解包分发版:
7.            shell> gunzip < /path/to/mysql-VERSION.tar.gz | tar
xvf -该命令创建mysql-VERSION 目录。
使用GNU tar,则不再需要gunzip。你可以用下面的命令来解包和提取分发:
shell> tar zxvf /path/to/mysql-VERSION-OS.tar.gz8.   
进入解包分发版的顶级目录:
9.            shell> cd 
mysql-VERSION请注意目前必须从顶级目录配置和构建MySQL。你不能在其它目录中构建。
10.配置发布版并且编译:
11.        shell> ./configure –prefix=/usr/local/mysql12.       
shell>
make当你运行configure时,你可能想要指定一些选项,运行./configure
–help得到一个选项列表。2.8.2节,”典型配置选项”讨论一些很有用的选项。
如果configure失败,你将向MySQL邮件目录发送包含你认为能帮你解决该问题的包含”config.log”中所有行的邮件,也要包括configure的最后几行输出。用mysqlbug脚本邮寄错误报告。请参见1.7.1.3节,”如何通报缺陷和问题”。
如果编译失败,参见2.8.4节,”处理MySQL编译问题”寻求帮助。
13.安装分发版:
14.        shell> make
install如果你想要设置一个选项文件,使用support-files目录中的一个作为模板。例如:
shell> cp support-files/my-medium.cnf
/etc/my.cnf可能你需要用root用户运行这些命令。
如果想要配置为支持InnoDB表,应当编辑/etc/my.cnf文件,去掉innodb_…开始选项行前面的#符,并将选项值改为你想要的。请参见4.3.2节,”使用选项文件”和15.2.3节,”InnoDB配置”。
15.进入安装目录:
16.        shell> cd
/usr/local/mysql17.如果还没有安装的MySQL,必须创建MySQL授权表:
18.        shell> bin/mysql_install_db
–user=mysql如果用root运行命令,应当使用–user选项。选项的值应与你在第一步为运行服务器所创建的登录账户相同。如果用该用户登录来运行命令,可以省略–user选项。
用mysql_install_db创建MySQL授权表后,需要手动重新启动服务器
19.将程序二进制的所有权改为root,数据目录的所有权改为你运行mysqld的用户。如果位于安装目录(/usr/local/mysql)下,命令应为:
20.        shell> chown -R root  .21.        shell> chown -R mysql
var22.        shell> chgrp -R mysql
.第一个命令将文件的所有属性改为root用户。第二个命令将数据目录的所有属性改为mysql用户。第三个命令将组属性改为mysql组。
23.如果你喜欢在引导机器时自动启动MySQL,你可以拷贝support-files/mysql.server文件到你系统有启动文件的地方。更多的信息可以在support-files/mysql.server脚本中和2.9.2.2节,”自动启动和停止MySQL”中找到。
24.如果安装了DBI和DBD::mysql
Perl模块,可以使用bin/mysql_setpermission脚本增加新账户。关于说明,参见2.13节,”Perl安装注意事项”。
在所有东西被安装以后,你应当使用该命令初始化并且测试你的分发版:
shell> /usr/local/mysql/bin/mysqld_safe –user=mysql
&如果这个命令提示mysqld daemon
ended并马上失败,那么你能在数据目录中的文件”hostname’.err”找到一些信息。
关于mysqld_safe的详细信息参见5.1.3节,”mysqld_safe:MySQL服务器启动脚本”。
注释:MySQL授权表中的账户开始没有密码。启动服务器后,你应当使用2.9节,”安装后的设置和测试”中的说明来设置密码。
2.8.2.
典型配置选项configure脚本给你一个很大的控制权来控制如何配置MySQL源码分发版。一般使用configure命令行的选项来进行。你也可以用某些环境变量作用于configure。请参见附录F:环境变量。要查看configure支持的选择列表,可以运行命令:
shell> ./configure
–help如果只编译MySQL客户端库和客户端程序而不是服务器,使用–without-server选项:
shell> ./configure –without-server
如果你没有C++编译器,则不能编译mysql(有一个客户端程序需要C++)。在这种情况下,你可以去掉configure里面测试C++编译器的代码,然后运行带有–without-server选项的./configure。编译步骤步将仍然尝试构造mysql,但是你可以忽略任何关于”mysql.cc”的警告。(如果make停止,试试make
-k告诉它即使出错继续剩下的构造步骤)。
·        
如果你想要构建嵌入式MySQL库(libmysqld.a),你应当使用–with-embedded-server选项。
如果你不想要位于”/usr/local/var”目录下面的日志(log)文件和数据库,使用类似于下列configure命令的一个:
shell>./configure–prefix=/usr/local/mysql
shell>./configure–prefix=/usr/local –
       localstatedir=/usr/local/mysql/data
第一个命令改变安装前缀以便将所有内容安装到”/usr/local/mysql”下面而非
默认的”/usr/local”。第二个命令保留默认安装前缀,但是覆盖了数据库目录默认目录(通常是”/usr/local/var”)并且把它改为/usr/local/mysql/data。编译完MySQL后,可以通过选项文件更改这些选项。请参见4.3.2节,”使用选项文件”。
如果你正在使用Unix并且你想要MySQL的套接字位于
默认位置以外的某个地方(通常在目录”/tmp”或”/var/run”,使用象这样的configure的命令:
shell> ./configure\– with-unix-socket-
path=/usr/local/mysql/tmp/mysql.sock
注意给出的文件名必须是一个绝对路径。你还可以在以后使用MySQL选项文件更改mysql.sock的位置。请参见A.4.5节,”如何保护或更改MySQL套接字文件/tmp/mysql.sock”。
如果你想编译静态链接程序(例如,制作二进制分发版、获得更快的速度或与解决与RedHat分发版的一些问题),像这样运行configure:
·                shell>./configure
–with-client-ldflags=-all-static\
·                        –with-mysqld-ldflags=-all-static
如果你正在使用gcc并且没有安装libg++或libstdc++,你可以告诉configure使用gcc作为C++编译器:
shell> CC=gcc  CXX=gcc  ./configure
当你使用gcc作为C++编译器用时,它将不试图链接libg++或libstdc++。即使你安装了这些库,这样也很好,因为过去使用MySQL时,它们的部分版本会出现一些奇怪的问题。
下面列出了一些经常使用的编译器和环境变量设定值。
o        gcc 2.7.2:
o                     CC=gcc CXX=gcc CXXFLAGS=”-O3
-felide-constructors”o        egcs 1.0.3a:
o                     CC=gcc CXX=gcc CXXFLAGS=”-O3 -felide-constructors
\o                     -fno-exceptions -fno-rtti”o        gcc
2.95.2:
o                     CFLAGS=”-O3 -mpentiumpro” CXX=gcc CXXFLAGS=”-O3
-mpentiumpro \o                     -felide-constructors
-fno-exceptions -fno-rtti”o        pgcc 2.90.29 或更新版:
o                     CFLAGS=”-O3 -mpentiumpro -mstack-align-double”
CXX=gcc \o                     CXXFLAGS=”-O3 -mpentiumpro
-mstack-align-double \o                     -felide-constructors -fno-
exceptions
-fno-rtti”在大多数情况,在configure行使用前面列出的选项并加入下面的选项,可以得到合理的优化的MySQL二进制:
–prefix=/usr/local/mysql –enable-assembler
\–with-mysqld-ldflags=-all-static换句话说,对于所有最近的gcc版,整个configure行应为:
CFLAGS=”-O3 -mpentiumpro” CXX=gcc CXXFLAGS=”-O3 -mpentiumpro
\-felide-constructors -fno- exceptions -fno-rtti” ./ configure
\–prefix=/usr/local/mysql –enable-assembler
\–with-mysqld-ldflags=-all-static我们在MySQL网址
AB编译的MySQL二进制版本”。其中有一些配置设定值,可以选用来构建更快的二进制,但是只适用高级用户。请参见7.5.4节,”编译和链接怎样影响MySQL的速度”。
如果构造失败并且产生有关编译器或链接器的错误,不能创建共享库”libmysqlclient.so.#”(“#”是一个版本号),
你可以通过为configure指定–disable-shared选项来解决此问题。在这种情况下,configure将不构造一个共享libmysqlclient.so.#库。
默认地,MySQL使用latin1(cp1252)字符集。为了改变
默认设置,使用–with-charset选项:
shell> ./configure — with-charset=CHARSET
CHARSET可以是big5、cp1251、cp1257、czech、danish、dec8、dos、euc_kr、gb2312、gbk、german1、hebrew、hp8、hungarian、koi8_ru、koi8_ukr、latin1、latin2、sjis、swe7、tis620、ujis、usa7或win1251ukr。请参见5.10.1节,”数据和排序用字符集”。
可以指定默认校对规则。MySQL默认使用latin1_swedish_ci校对规则。要想更改,使用–with-collation选项:
shell> ./configure
–with-collation=COLLATION要想更改字符集和校对规则,要同时使用–with-charset和–with-collation选项。
校对规则必须是字符集的合法校对规则。(使用SHOW
COLLATION语句来确定每个字符集使用哪个校对规则)。
如果想在服务器和客户端之间变换字符,你应该看一下SET OPTION CHARACTER
SET命令。请参见13.5.3节,”SET语法”。
警告:如果你在创建了任何数据库表之后改变字符集,你将必须对每个表运行myisamchk
-r -q
–set-character-set=charset,否则索引可能不正确地排序。(如果安装了MySQL,创建一些表,然后重新配置MySQL使用一个不同的字符集并且重新安装它,这时就可能发生这种情况。)
通过configure选项–with-extra-charsets=LIST,你可以定义在服务器中再定义哪些字符集。LIST
指下面任何一项:
o        空格间隔的一系列字符集名
o        complex -,以包括不能动态装载的所有字符集
o        all –,以将所有字符集包括进二进制
为了配置MySQL带有调试代码,使用–with-debug选项:
shell> ./configure –with-debug
这导致包含一个安全的内存分配器,能发现一些错误和并提供关于正在发生的事情的输出。请参见E.1节,”调试MySQL服务器”。
·        
如果客户端程序使用线程,还必须使用–enable-thread-safe-client配置选项来编译线程安全版的MySQL客户端库。将创建一个libmysqlclient_r库,可以用来连接应用程序线程。请参见25.2.15节,”如何生成线程式客户端”。
·         可以使用–with-big-tables选项构建支持大数据库表的MySQL。
该选项使变量用来将表行数保存到unsigned long long中而不是unsigned
long。结果是允许表有大约1.844E+19 ((232)2)行而不是232 (~4.295E+09)
行。在以前,要完成该功能必须手动将-DBIG_TABLES传递给编译器。
属于特定系统的选项可在本章特定系统的小节里找到。请参见2.12节,”具体操作系统相关的注意事项”

1、复制表结构及数据到新表
CREATE TABLE 新表SELECT * FROM 旧表
这种方法会将oldtable中所有的内容都拷贝过来,当然我们可以用delete from
newtable;来删除。
不过这种方法的一个最不好的地方就是新表中没有了旧表的primary
key、Extra(auto_increment)等属性。需要自己用"alter"添加,而且容易搞错。
 
 
2、只复制表结构到新表
CREATE TABLE 新表SELECT * FROM 旧表WHERE 1=2
或CREATE TABLE 新表LIKE 旧表
 
 
3、复制旧表的数据到新表(假设两个表结构一样)
INSERT INTO 新表SELECT * FROM 旧表
 
 
4、复制旧表的数据到新表(假设两个表结构不一样)
INSERT INTO 新表(字段1,字段2,…….) SELECT 字段1,字段2,…… FROM
旧表
 
 
5、可以将表1结构复制到表2
SELECT * INTO 表2 FROM 表1 WHERE 1=2
 
 
6、可以将表1内容全部复制到表2
SELECT * INTO 表2 FROM 表1
 
 
7、 show create table 旧表;
这样会将旧表的创建命令列出。我们只需要将该命令拷贝出来,更改table的名字,就可以建立一个完全一样的表
 
 
8、mysqldump
用mysqldump将表dump出来,改名字后再导回去或者直接在命令行中运行

发表评论

电子邮件地址不会被公开。 必填项已用*标注

标签:
网站地图xml地图