学习MySQL的一些体会
1.Window2000下的安装. A.安装目录最好(应该是一定要)是C:\, 以前有几次没看清楚说明,安装在D盘,结果启动不了。 B.安装成为启动服务:mysqld-nt --install 卸载服务:mysqld-nt --uninstall 移除服务:mysqld-nt --remove 启动服务:net start mysql 停止服务:net stop mysql
2.连接以及用户的管理 A.连接MySql数据库: mysql -h host -u user -p 比如用root登陆: mysql -h localhost -uroot -p B.断开连接:quit或exit C.新建用户(用户名为tom,密码为123): 用root连接到数据库,然后用以下的命令: grant all privileges on *.* to 'tom'@'localhost' identified by '123' with grant option; 或grant all privileges on *.* to 'tom'@'%' identified by '123' with grant option;
或insert into user
values('localhost','tom',password('123'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql 里创建自动编号字段: CREATE TABLE `table1` ( `id` int(6) unsigned NOT NULL auto_increment, PRIMARY KEY (`id`)) (int的一种,才可以,然auto_increment)
在一个MYSQL的表里面,如果原来已经有一万条记录了,清空后,怎么能让它从1开始,而不是从10001开始! TRUNCATE your_table; alter table your_table auto_increment = 1;
用文本方式将数据装入一个数据库表 如果一条一条地输入,很麻烦。我们可以用文本文件的方式将所有记录加入你的数据库表中。 创建一个文本文件“mysql.txt”,每行包含一个记录,用定位符(tab)把值分开,并且以在 CREATE TABLE语句中列出的列次序给出,例如:
abccs f 1977-07-07 china mary f 1978-12-12 usa tom m 1970-09-02 usa
使用下面命令将文本文件“mytable.txt”装载到mytable表中: mysql> LOAD DATA LOCAL INFILE "mytable.txt" INTO TABLE pet;
执行sql脚本: myql>source d:\aa.sql
mysql数据导出和导入: 参考文章:MySQL数据导入导出方法与工具介绍 http://blog.csdn.net/davidullua/archive/2004/04/26/21980.aspx http://blog.csdn.net/davidullua/archive/2004/04/26/21981.aspx http://blog.csdn.net/davidullua/archive/2004/04/26/21982.aspx 主要工具:mysqldump.exe、mysqlimport.exe和mysql.exe.三者均在mysql/bin目录下。 mysqlcc.exe 另外安装 2、用mysqldump工具备份数据时,备份文件中的中文无法显示: mysqldump -u root -p --all-databases > backup.sql 打开backup.sql后,发现数据部分中的中文全部 是????号。 此时加一个参数:--default-char-set=gbk,重新导出即可。 (一)导出 1、结构的导出 (1) 在mysqlcc中,选择某一表或者tables,按shift或者鼠标邮编,在弹出的快捷菜单中,选择"tool/show create".选择你要导出的表(可以多选,ctrl+a全选) 点击窗体下方的 execute.即可生成一个所选表结构的sql文件。 打开sql查询窗口,粘入上面生成的sql脚本。执行,即可在新位置生成所有的表结构。
(2)mysqldump.exe 具体参数很多,可查看--help 主要有 -h hostname -u username -p 密码 --add-drop-table 这个选项将会在每一个表的前面加上DROP TABLE IF EXISTS语句,这样可以保证导回MySQL数据库的时候不会出错,因为每次导回的时候,都会首先检查表是否存在,存在就删除 --add-locks 这个选项会在INSERT语句中捆上一个LOCK TABLE和UNLOCK TABLE语句。这就防止在这些记录被再次导入数据库时其他用户对表进行的操作
-c or - complete_insert 这个选项使得mysqldump命令给每一个产生INSERT语句加上(field)的名字。当把数据导出导另外一个数据库时这个选项很有用。
-f or -force 使用这个选项,即使有错误发生,仍然继续导出
-l or -lock-tables 使用这个选项,导出表的时候服务器将会给表加锁。 -t or -no-create- info 这个选项使的mysqldump命令不创建CREATE TABLE语句,这个选项在您只需要数据而不需要DDL(数据库定义语句)时很方便。
-d or -no-data 这个选项使的mysqldump命令不创建INSERT语句。 在您只需要DDL语句时,可以使用这个选项。
-T path or -tab = path
这个选项将会创建两个文件,一个文件包含DDL语句或者表创建语句,另一个文件包含数据。DDL文件被命名为table_name.sql,数据文件被命
名为table_name.txt.路径名是存放这两个文件的目录。目录必须已经存在,并且命令的使用者有对文件的特权。
-w "WHERE Clause" or -where = "Where clause " 可以使用这一选项来过筛选将要放到导出文件的数据。 (3) mysql.exe
利用SELECT INTO OUTFILE 语法可以将数据导出到一个外部文件。具体语法略。 (二)导入 1、结构 (1)mysqlCC 打开sql查询窗口,粘入上面生成的sql脚本。执行,即可在新位置生成所有的表结构。 (2)mysqlimport 可用于载入数据 (3)mysql.exe bin/mysql –p < /home/mark/New_Data.sql 可以运行/home/mark/New_Data.sql中指定的sql脚本 (三)例子 1、欲从//gezhi211上得到javatest数据库的数据表结构导出到本地。不需要数据 (1) 运行mysqlcc,连接到//gezhi211,选择javatest数据的某一表,选择"tool/show create",选择所有的表, 点"execute",得到一系列的sql create语句。复制,保存为e:\work\table.txt. (2) 在语句最前面加上 以下几句 drop database if exists javatest; create database javatest; use javatest; 用以创建数据库javatest (3) 连接到本地,在mysqlcc中打开一个sql查询窗口,粘进上面的sql语句,执行。则数据表结构成功导到本地。
或者打开一个cmd窗口,键入mysql <e:\work\table.txt,回车。 2、欲从//gezhi211上得到javatest数据库的数据表结构导出到本地。包括数据 方法: (1)导出数据 mysqldump -h gezhi211 -u root --add-drop-table javatest >e:\work\backup\gezhi211javatest.txt (2) 在语句最前面加上 以下几句 drop database if exists javatest; create database javatest; use javatest; 用以创建数据库javatest (3) 导入数据 mysql -p <e:\work\backup\gezhi211javatest.sql.txt 附:利用mysqldump导出数据的时候,有时定义的索引值不能为关键字,否则会报错。解决方法,业务应该利用--fields-enclosed-by参数将字段名包含起来。有待进一步尝试。
mysql更改到UTF8字符集,通过命名行参数启动: mysqld --default-character-set=utf8
|