wget http://repo.mysql.com//mysql57-community-release-el6-9.noarch.rpm使用yum安装rpm包
yum install mysql57-community-release-el6-9.noarch.rpm检测mysql yum源
yum repolist enabled | grep "mysql.*-community.*"二、从mysql yum源中选择mysql安装版本
yum repolist all | grep mysql2、修改msql yum源配置中的 enabled选项,如要安装mysql5.8,将mysql57-community中的enabled=1修改为enabled=0
[mysql57-community]name=MySQL 5.7 Community Serverbaseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/6/$basearch/enabled=1gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql将mysql80-community中enabled=0修改为enabled=1
# Enable to use MySQL 8.0[mysql80-community]name=MySQL 8.0 Community Serverbaseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/6/$basearch/enabled=1gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql3、查看当前yum源可以安装的版本
yum repolist enabled | grep mysql三、安装mysql
yum install mysql-community-server四、启动mysql服务器
shell> mysql -uroot -p mysql> ALTER USER "root"@"localhost" IDENTIFIED BY "MyNewPass4!";五、查看mysql启动状态
shell>service mysqld statusmysqld (pid 20726) is running...六、安装启动问题
rm /var/lib/mysqlservice mysqld start七、mysql常用命令
grant select,insert,update,delete on *.* to [email=test1@”%]test1@”%[/email]” Identified by “abc”;但增加的用户是十分危险的,你想如某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了,解决办法见2。
mysql> drop database drop_database; Query OK, 0 rows affected (0.00 sec)例子2:删除一个不确定存在的数据库
mysql> drop database drop_database; ERROR 1008 (HY000): Can"t drop database "drop_database"; database doesn"t exist //发生错误,不能删除"drop_database"数据库,该数据库不存在。 mysql> drop database if exists drop_database; Query OK, 0 rows affected, 1 warning (0.00 sec)//产生一个警告说明此数据库不存在 mysql> create database drop_database; Query OK, 1 row affected (0.00 sec) mysql> drop database if exists drop_database;//if exists 判断数据库是否存在,不存在也不产生错误 Query OK, 0 rows affected (0.00 sec)4.4 连接数据库
mysql> USE db1; mysql> SELECT COUNT(*) FROM mytable; # selects from db1.mytable mysql> USE db2; mysql> SELECT COUNT(*) FROM mytable; # selects from db2.mytable使用USE语句为一个特定的当前的数据库做标记,不会阻碍您访问其它数据库中的表。下面的例子可以从db1数据库访问作者表,并从db2数据库访问编辑表:
mysql> USE db1; mysql> SELECT author_name,editor_name FROM author,db2.editor -> WHERE author.editor_id = db2.editor.editor_id;USE语句被设立出来,用于与Sybase相兼容。
mysql> select version(); +-----------------------+ | version() | +-----------------------+ | 6.0.4-alpha-community | +-----------------------+ 1 row in set (0.02 sec)2. 显示当前时间
mysql> select now(); +---------------------+ | now() | +---------------------+ | 2009-09-15 22:35:32 | +---------------------+ 1 row in set (0.04 sec)3. 显示年月日
SELECT DAYOFMONTH(CURRENT_DATE); +--------------------------+ | DAYOFMONTH(CURRENT_DATE) | +--------------------------+ | 15 | +--------------------------+ 1 row in set (0.01 sec)SELECT MONTH(CURRENT_DATE); +---------------------+ | MONTH(CURRENT_DATE) | +---------------------+ | 9 | +---------------------+ 1 row in set (0.00 sec)SELECT YEAR(CURRENT_DATE); +--------------------+ | YEAR(CURRENT_DATE) | +--------------------+ | 2009 | +--------------------+ 1 row in set (0.00 sec)4. 显示字符串
mysql> SELECT "welecome to my blog!"; +----------------------+ | welecome to my blog! | +----------------------+ | welecome to my blog! | +----------------------+ 1 row in set (0.00 sec)5. 当计算器用
select ((4 * 4) / 10 ) + 25; +----------------------+ | ((4 * 4) / 10 ) + 25 | +----------------------+ | 26.60 | +----------------------+ 1 row in set (0.00 sec)6. 串接字符串
select CONCAT(f_name, " ", l_name) AS Name from employee_data where title = "Marketing Executive"; +---------------+ | Name | +---------------+ | Monica Sehgal | | Hal Simlai | | Joseph Irvine | +---------------+ 3 rows in set (0.00 sec)注意:这里用到CONCAT()函数,用来把字符串串接起来。另外,我们还用到以前学到的AS给结果列"CONCAT(f_name, " ", l_name)"起了个假名。
mysql> create table MyClass(> id int(4) not null primary key auto_increment,> name char(20) not null,> sex int(4) not null default "0",> degree double(16,2));5.2 删除数据表
下面以PHP代码为例删除 "Persons" 表中所有 LastName="Griffin" 的记录:
<?php$con = mysql_connect("localhost","peter","abc123");if (!$con){ die("Could not connect: " . mysql_error());}mysql_select_db("my_db", $con);mysql_query("DELETE FROM Persons WHERE LastName="Griffin""); mysql_close($con); ?>在这次删除之后,表是这样的:
5.6修改表中数据
语法:update 表名 set 字段=新值,… where 条件
mysql> update MyClass set name="Mary" where id=1;
例子1:单表的MySQL UPDATE语句:
UPDATE [LOW_PRIORITY] [IGNORE] tbl_name SET col_name1=expr1 [, col_name2=expr2 ...] [WHERE where_definition] [ORDER BY ...] [LIMIT row_count]
例子2:多表的UPDATE语句:
UPDATE [LOW_PRIORITY] [IGNORE] table_references SET col_name1=expr1 [, col_name2=expr2 ...] [WHERE where_definition]
UPDATE语法可以用新值更新原有表行中的各列。SET子句指示要修改哪些列和要给予哪些值。WHERE子句指定应更新哪些行。如果没有WHERE子句,则更新所有的行。如果指定了ORDER BY子句,则按照被指定的顺序对行进行更新。LIMIT子句用于给定一个限值,限制可以被更新的行的数目。
5.7增加字段
命令:alter table 表名 add字段 类型 其他;
例如:在表MyClass中添加了一个字段passtest,类型为int(4),默认值为0
mysql> alter table MyClass add passtest int(4) default "0"
加索引
mysql> alter table 表名 add index 索引名 (字段名1[,字段名2 …]);
例子: mysql> alter table employee add index emp_name (name);
加主关键字的索引
mysql> alter table 表名 add primary key (字段名);
例子: mysql> alter table employee add primary key(id);
加唯一限制条件的索引
mysql> alter table 表名 add unique 索引名 (字段名);
例子: mysql> alter table employee add unique emp_name2(cardnumber);
删除某个索引
mysql> alter table 表名 drop index 索引名;
例子: mysql>alter table employee drop index emp_name;
增加字段:
mysql> ALTER TABLE table_name ADD field_name field_type;
修改原字段名称及类型:
mysql> ALTER TABLE table_name CHANGE old_field_name new_field_name field_type;
删除字段:
MySQL ALTER TABLE table_name DROP field_name;
5.8修改表名
命令:rename table 原表名 to 新表名;
例如:在表MyClass名字更改为YouClass
mysql> rename table MyClass to YouClass;
当你执行 RENAME 时,你不能有任何锁定的表或活动的事务。你同样也必须有对原初表的 ALTER 和 DROP 权限,以及对新表的 CREATE 和 INSERT 权限。
如果在多表更名中,MySQL 遭遇到任何错误,它将对所有被更名的表进行倒退更名,将每件事物退回到最初状态。
RENAME TABLE 在 MySQL 3.23.23 中被加入。
6、备份数据库
命令在DOS的[url=file://\mysql\bin]\mysql\bin[/url]目录下执行
1.导出整个数据库
导出文件默认是存在mysqlin目录下
mysqldump -u 用户名 -p 数据库名 > 导出的文件名
mysqldump -u user_name -p123456 database_name > outfile_name.sql
2.导出一个表
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
mysqldump -u user_name -p database_name table_name > outfile_name.sql
3.导出一个数据库结构
mysqldump -u user_name -p -d –add-drop-table database_name > outfile_name.sql
-d 没有数据 –add-drop-table 在每个create语句之前增加一个drop table
4.带语言参数导出
mysqldump -uroot -p –default-character-set=latin1 –set-charset=gbk –skip-opt database_name > outfile_name.sql
例如,将aaa库备份到文件back_aaa中:
[root@test1 root]# cd /home/data/mysql
[root@test1 mysql]# mysqldump -u root -p --opt aaa > back_aaa
7.1 一个建库和建表的实例1
drop database if exists school; //如果存在SCHOOL则删除create database school; //建立库SCHOOLuse school; //打开库SCHOOLcreate table teacher //建立表TEACHER( id int(3) auto_increment not null primary key, name char(10) not null, address varchar(50) default ‘深圳", year date); //建表结束//以下为插入字段insert into teacher values(”,"allen","大连一中","1976-10-10′);insert into teacher values(”,"jack","大连二中","1975-12-23′);如果你在mysql提示符键入上面的命令也可以,但不方便调试。
drop database if exists school; //如果存在SCHOOL则删除create database school; //建立库SCHOOLuse school; //打开库SCHOOLcreate table teacher //建立表TEACHER( id int(3) auto_increment not null primary key, name char(10) not null, address varchar(50) default ""深圳"", year date); //建表结束//以下为插入字段insert into teacher values("""",""glchengang"",""深圳一中"",""1976-10-10"");insert into teacher values("""",""jack"",""深圳一中"",""1975-12-23"");注:在建表中