免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2929 | 回复: 0
打印 上一主题 下一主题

MySQL 基础学习 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-24 20:18 |只看该作者 |倒序浏览

1、MySQL 如何导入导出个别需要数据记录?
-- 先导出数据所在的表结构:
mysql> show create table CHARBASE into outfile "/db/mysql/RS.sql" ;
-- 将需要单独导出的内容存放在文本文件里,这里一定要注意存放的位置必须是mysql用户有权限的位置:
mysql> select * from CHARBASE order by CHARID desc limit 15 into outfile "/db/mysql/record.sql" ;
-- (注意 into outfile 只能用于 select 语句)
-- 创建同样的表结构:
mysql> create database test;
mysql> source RS.sql;
-- 将文件数据导入新的数据库:
mysql> LOAD DATA INFILE '/db/mysql/record.sql' INTO TABLE CHARBASE;

2、如何导入导出一个表的内容?
-- 可以select整个表的内容,用load导入!
-- mysqldump
-- mysqldump -h127.0.0.1 -uroot -p DBNAME TableName > table.sql

3、如何备份还原整个数据库?
-- 备份还原整个MySQL数据库其实是最最简单的一件事情,通常我们不需要任何工具,而是把整个目录拷贝出来即可!(注意,如果是迁移服务器最好把mysql数据库也一起拷贝过去。)
-- 在拷贝完毕之后我们只要将权限做一简单设置即可:
-- chown mysql.mysql /db -R
-- mysql.server restart
-- 也可以用 mysqldump 来备份整个数据库.
-- mysqldump -h127.0.0.1 -uroot -p DBNAME > table.sql

4、如何用mysql命令来备份mysql数据库?
-- 如果是比较小的mysql数据库,当然也可以将整个数据库备份成一个标准的SQL脚本文件,然后还原.
-- mysqldump -h127.0.0.1 -uroot -p test > /db/mysql/test.sql;
-- create database test02;
-- use test02;
-- source /db/mysql/test.sql;

5、如何导出一个数据库结构,但不导出任何数据?
-- mysqldump -h127.0.0.1 -uroot -p -d RecordServer > /db/mysql/RecordServer.sql;

6、如何查看数据库、表、表结构、建表、建库SQL脚本?
mysql> show databases;
mysql> show tables;
mysql> desc CHARBASE;
mysql> show create table CHARBASE;
-- mysqldump -h127.0.0.1 -uroot -p -d RecordServer > /db/mysql/RecordServer.sql;

7、MySQL里边存放时间和存放IP地址的字段通常都是转换过的写法,请问如何查看他们本来的格式?
mysql> select CHARID,CREATEIP,CREATETIME,MAC,INET_NTOA(CREATEIP) AS IP,FROM_UNIXTIME(CREATETIME) AS TIME FROM CREATEIP WHERE CHARID=13566952;
+----------+------------+------------+-----------------+----------------+---------------------+
| CHARID   | CREATEIP   | CREATETIME | MAC             | IP             | TIME                |
+----------+------------+------------+-----------------+----------------+---------------------+
| 13566952 | 2329037786 | 1208804488 | 176940240538368 | 138.210.75.218 | 2008-04-22 03:01:28 |
+----------+------------+------------+-----------------+----------------+---------------------+
[注意]:这里得出的IP地址是不对的,正确的应该是反向的,比如上边正确的应该是 218.75.210.138 .

8、请举例说明如何在一个表中插入,修改或删除一个字段?
-- 在某个字段后插入:
mysql> ALTER TABLE `RELATION` ADD `COUNTRYWARKILL` int(10) unsigned NOT NULL default '0' after `ZEROCLEAR`;
-- 在最后一个字段后面插入:
mysql> ALTER TABLE `RELATION` ADD `COUNTRYWARKILL` int(10) unsigned NOT NULL default '0';
-- 删除一个字段:
mysql> alter table CHARBASE drop ZONE;    或:
mysql> alter table CHARBASE drop COLUMN ZONE;
-- 重命名字段:
mysql> alter table CHARBASE change ZONE ZONE01 integer not null default '0';
-- 如何重命名表
mysql> ALTER TABLE CHARBASE RENAME CHARNAME;

9、Linux 终端不支持在 MySQL 命令模式下写中文,如何解决?
-- 直接在命令中执行:
mysql -e "use RecordServer;select CHARBASE.NAME,RELATION.COUNTRYWARKILL FROM CHARBASE,RELATION WHERE CHARBASE.COUNTRY=4 AND CHARBASE.NAME LIKE '豪MeN%'"
-- 将 update 的更新中文名字的语句写入到文本文件,用source来执行:
mysql> source /db/mysql/test.sql;
-- 写成shell脚本执行:
#/bin/bash
mysql -e "use RecordServer;UPDATE RELATION SET NAME='最不厉害2' WHERE CHARID=15292694;UPDATE RELATION SET NAME='旺角口水文2' WHERE CHARID=14771293;"
-- 直接执行:
mysql -umysql -p123456 -h192.168.1.50 RecordServer -e "INSERT INTO CHARBASE (ACCID,NAME) VALUES(85164210,'Droney.zhao');"

10、如何对表进行插入,修改,删除的操作?
-- 对表格的插入操作:
mysql> INSERT INTO CHARBASE (ACCID,NAME) VALUES(85164210,'Droney');
-- 清空这个表:
mysql> delete from COUNTRY;
-- 删除表中的某些记录:
mysql> DELETE FROM COUNTRY WHERE ID NOT IN(2,3,4,5,6);
mysql> DELETE FROM COUNTRY WHERE NAME = 'Droney';
mysql> DELETE FROM COUNTRY WHERE NAME like '%三秦浪子%';
-- 更新表中的某些记录:
mysql> UPDATE COUNTRY SET EXP=500 WHERE ID IN(2,3,4,5,6);
11、如何重命名表?
mysql> ALTER TABLE CHARBASE RENAME CHARNAME;
12、怎么查询字段值为1的记录中相同用户的个数,只将拥有这样的记录的个数 >9 的字段显示出来?
SELECT CHARID,COUNT(*) FROM FRIEND WHERE WHICH=1 GROUP BY CHARID HAVING COUNT(WHICH)>9;
13、如何修改mysql用户密码?
mysql> use mysql;
mysql> update user set password=password('123456') where user='mysql';
mysql> FLUSH PRIVILEGES;
或者:
mysqladmin -h192.168.1.1 -uusername -poldpassword password newpassword
-- 如何添加、删除一个MySQL用户?
-- 可以用以下方法添加,建议还是用上边设置权限的方式去添加新的用户.
mysql> INSERT INTO `user` VALUES ('192.168.76.250', 'Droney', PASSWORD( '123456' ) , 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', '', '', '', '', '0', '0', '0');
mysql> FLUSH PRIVILEGES;
14、mysql用户密码忘记或者IP限制登录怎么办?
-- 需要重新初始化数据库.
su - dbadmin -c "/usr/local/mysql/bin/mysql_db_install"
mv /db/mysql/mysql /db/mysql/mysql_bak  &&  /usr/local/mysql/bin/mysql_db_install
chown mysql.mysql /db/ -R  &&  mysql.server restart
15、如何查看mysql数据库编码?
mysql> show variables like 'character_set_%';
16、如何建立一个表,并插入一条记录?
mysql> CREATE TABLE `SERVERLIST` (
      `ID` int(10) unsigned NOT NULL auto_increment,
      `NAME` varchar(32) NOT NULL default '',
      PRIMARY KEY  (`ID`)
      ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
mysql> INSERT INTO `SERVERLIST` VALUES (1,'Droney’);
17、如何为MySQL设置访问权限?
-- 下面设置了只允许 192.168.1.0 网段连接,且添加dbadmin用户,密码123456,并删除所有密码为空的mysql用户.
mysql> GRANT ALL PRIVILEGES ON *.* TO
[email=dbadmin@%27192.168.1.%%27]dbadmin@'192.168.1.%'[/email]
IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql> delete from mysql.user where password="";
mysql> flush privileges;
-- 其他设置示范:
mysql> grant all on *.* to
[email=dbadmin@localhost]dbadmin@localhost[/email]
identified by 'password';
mysql> grant all on dbname.* to
[email=dbadmin@%]dbadmin@%[/email]
identified by 'password';
mysql> grant select,insert on dbname.tablename to
[email=dbadmin@192.168.1.%]dbadmin@192.168.1.%[/email]
identified by 'password';
18、如何添加、删除一个MySQL用户?
-- 可以用以下方法添加,建议还是用上边设置权限的方式去添加新的用户.
mysql> INSERT INTO `user` VALUES ('192.168.76.250', 'Droney', PASSWORD( '123456' ) , 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', '', '', '', '', '0', '0', '0');
mysql> FLUSH PRIVILEGES;

19、如果用mysqldump导出的数据出现了乱码怎么办?
iconv -c -f UTF-8 -t GB2312 库文件名 > 新的库文件名
20、忘记了mysql 密码,我不想重新初始mysql数据库,我该怎么办?
-- 杀掉原来mysql进程,用如下命令来启动mysql,这样mysql就可以不需要密码,也没有IP限制的轻松登陆了!
mysql> /usr/local/mysql/bin/mysqld_safe --skip-grant-tables &

21、如何查看mysql建立的线程:
mysql> show processlist;

22、其它常用语句:
mysql> status   可以查看mysql的状态信息
mysql> tee history.txt 以后在mysql中操作的所有指令将被存储在history.txt文件中;
mysql> notee;   取消将指令存入文件的操作;
mysql> system clear;  可以在mysql shell下临时调用系统命令对系统文件进行操作;
-- 备份整个数据库(用cp要简单快捷一些)
mysqldump -h192.168.1.1 -uroot -p SuperServer > /SuperServer.sql;
-- 导出整个数据库结构
mysqldump -h192.168.1.1 -uroot -p -d SuperServer > /SuperServer.sql;
-- 导出表结构
mysql> show create table CHARBASE;
-- 导出表结构及内容
mysqldump -h192.168.1.1 -uroot -p -d SuperServer CHARBASE > /SuperServer.sql;
-- 导出建表结构的脚本
mysql> show create table CHARBASE;
-- 将查询的结果直接保存到文件
mysql> select * from mysql.user into outfile 'aaa.sql';

23 修改表结构:
-- 创建字段 NAME51 ,将该字段的位置移至 DSTZONE 之后
SQL> ALTER TABLE `CHARBASE` add `NAME51` varchar(33) NOT NULL default '';
SQL> ALTER TABLE `CHARBASE` change `NAME51` `NAME51` varchar(33) NOT NULL default '' AFTER `DSTZONE`;

24 创建索引:
create index ID on TEMP(CHARID);

25 高级查询:
CREATE TABLE `C` (
  `ID` varchar(100) NOT NULL default '',
  `NAME` varchar(100) NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
update A,B set B.ID=A.ID where A.name=B.name;
insert into B(ID,NAME) select ID,NAME from A;
insert into B(ID,NAME,AGE) select ID,NAME,25 from A;
insert into C(NAME) VALUES ('zhaohang'),('zhouzhou'),('xiaoxiao');

26 设置自增字段的自增起始值:
Alter tableName auto_increment = 4000;


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/108923/showart_2130119.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP