mysql
数据(data)
数据库(Database,DB)
数据库管理系统(Database Management System)
SQL(Structured Query Language)结构化查询语言
关系数据库
企业级:Oracle,SQL Server,Sybase,Informix,DB2
中小型:PostgreSQL,Mysql,Access,Dbase,Paradox
Linux下的数据库
Mysql,PostgreSQL,Oracle
MySQL的官方发音是“My Ess Que Ell”(不是 MY-SEQUEL )
MySQL网站( http://www.mysql.com)
作为当今最流行的开放源码数据库之一,MySQL数据库为用户提供了一个相对简单的解决方案,适
用于广泛的应用程序部署,能够降低用户的TCO。MySQL是一个多线程、结构化查询语言(SQL)数
据库服务器。MySQL的执行性能高,运行速度快,容易使用。
注:SQL类语句结尾必须是;或者\g
1.查看mysql软件包
rpm -qa | grep mysql
mysql-devel-3.23.54a-11
php-mysql-4.2.2-17
libdbi-dbd-mysql-0.6.5-5
mysql-server-3.23.54a-11
mysql-3.23.54a-11
mod_auth_mysql-1.11-12
2.安装mysql软件包
rpm -ivh mysql-* perl-DBI-1.32-5.i386.rpm perl-CGI-2.81-88.i386.rpm perl-DBD-MySQL-2.1021-3.i386.rpm
rpm �Civh perl-CGI-2.81-88.i386.rpm
rpm �Civh perl-DBI-1.32-5.i386.rpm
rpm �Civh mysql-3.23.54a-11.i386.rpm perl-DBD-MySQL-2.1021-3.i386.rpm
rpm �Civh mysql-server-3.23.54a-11.i386.rpm
3.启动|停止|重启mysql服务
service mysqld start|stop|restart
/etc/init.d/mysqld start|stop|restart
safe_mysqld& //安全后台启动mysql守护进程
service mysqld status //查看mysql守护进程状态
mysqladmin shutdown //关闭mysql
4.进入 mysql数据库
mysql 不用用户名密码登录//默认使用当前系统用户登录
mysql -u root 指定root用户登录
mysql -u root -p 输入root密码后登录
5.查看当前已有数据库
>SHOW databases;
mysqlshow
6.创建数据库
>CREATE DATABASE dbname;
mysqladmin create dbname
7.删除数据库
>DROP DATABASE dbname;
mysqladmin drop dbname
8.使用某一数据库
>USE dbname(;)
9.创建名为students的表(包括"name","sex","age"三个字段)
>CREATE TABLE students(name VARCHAR(20),sex ENUM("male","female"),age INT(3));
//////
常用字段类型:
varchar-变长字符型,
enum-枚举类型,
int-整数类型,
primary key-主键,
auto-increment-自增长,
not null-非空,
UNSIGNED-无符号,
char-字符型,
default-默认值,
unique-唯一键
注:汉字在MYSQL中占用3个字符
常见完整性约束:
•PRIMARY KEY 主码约束(主键)
•UNIQUE唯一性约束
•NOT NULL非空值约束
•AUTO_INCREMENT用于整数列默认自增1
•DEFAULT default_value默认值约束
•PRIMARY KEY 与UNIQUE 指定必须包含唯一值的索引。INDEX 和KEY 意义相同,它们都指定可以包含重复值的索引。
10.显示表
>show tables;
11.删除表
>drop table tablename;
12.查看表结构
>describe tablename;
13.向表中添加数据
>INSERT INTO tablename VALUES("","","");
>INSERT INTO tablename(name,age) VALUES("zhaopeng",17);
14.查看表中数据
>SELECT * FROM tablename;
查找姓王的记录:
>SELECT * FROM yuangong where 姓名 like '王%';
查找姓名中有五的记录:
>SELECT * FROM yuangong where 姓名 like '%王%';
查找以王结尾的记录:
>SELECT * FROM yuangong where 姓名 like '%王';
想显示第三条到第七条记录
>SELECT * from 表名 limit 2,5;
15.创建索引
>CREATE TABLE tablename{option}(建表的同时建索引);
>CREATE INDEX IDX_tablename ON tablename(vol列)为现存表某列创建索引;
>ALTER TABLE tablename ADD INDEX IDX_tablename(vol列)为现存表某列创建索引;
16.查看表中索引
>SHOW INDEX FROM tablename;
17.删除索引
>DROP INDEX IDX_tablename ON tablename;
>ALTER TABLE tablename DROP INDEX IDX_tablename;
18.数据目录的位置
/etc/my.cnf “datadir=/var/lib/mysql”
mysqladmin variables | more
数据目录的结构 /var/lib/mysql
日志文件 /etc/my.cnf
19.连接mysql服务器
mysql [-h hostname] [-u username] [-p[password]] [database]
20.授予/撤销用户权限
GRANT语句用于授予用户权限(mysql3.22.11)
语法:GRANT priv_type [(column_list)][,priv_type[(column_list)]…] ON {*.*|*|db_name * |db_name.tbl_name|db_name} TO user_name [IDENTIFIED BY ‘password’] [,user_name [IDENTIFIED BY’password’] …][WITH GRANT OPTION]
grant 权限 on 数据库/表 to 用户名 identified by ‘密码’ with 特殊权限;
例1:grant all on *.* to user1@localhost identified by '123' with grant option;
授予用户本地登录,对所有数据库有全部的权限,而且是超级用户
例2:grant all on *.* to
[email protected] identified by '123';
授予用户指定IP登录,对所有数据库有全部的权限
例3:grant all on *.* to user1@'%' identified by '123' with grant option;
授予用户登录,不限定主机,对所有数据库有全部的权限,而且是超级用户
REVOKE语句用于撤销用户权限
语法:REVOKE priv_type[(column_list)][,priv_type[(column_list)]…] ON {*.*|*|db_name.*|db_name.tbl_name|db_name} FROM user_name[,user_name…]
revoke 权限 on 数据库 from 用户名;
撤销指定用户的指定权限
revoke insert,delete on *.* from user1@localhost;
撤销指定用户的所有权限
revoke all on *.* from user1@localhost;
21.数据库的备份/恢复
mysqldump [OPTIONS] database [tables]
备份
mysqldump dbname > /path/bakname
同时备份一个以上的数据库,可以使用-B 选项
#mysqldump -B db1 db2
备份表结构
#mysqldump -d db table > table.str
恢复
mysql dbname < /path/bakname
或mysql> source 备份文件
22.怎样设置口令
如果你忘记这个事实,你可能会试图像这样设置口令:
# mysql -u root mysql
mysql> INSERT INTO user (Host,User,Password) VALUES('%','jerry','123456');
当你使用SET PASSWORD语句时,你也必须使用PASSWORD()函数:
mysql> SET PASSWORD FOR jerry@"%" = PASSWORD(‘123456');
mysql> FLUSH PRIVILEGES;
23.优化表
mysql>OPTIMIZE TABLE tablename;
24.如何修改表结构:增长一个字段:alter table 表名 add 新加字段字 类型(字段长度) first|after;
可以为表添加一列,如果没指定first或者after,则在列尾添加一列,否则在指定列添加新列
删除一个字段: alter table 表名 drop 字段名
修改一个字段的属性: alter table 表名 modify 字段 新属性
25.修改主键: 增加一个主键 alter table 表名 add primary key(字段名)
删除一个主键 alter table 表名 drop primary key(字段名)
26.表改名:RENAME TABLE 旧表中 TO 新表名
27.库改名:常用方法是把新库创建出来,然后把旧库里的数据导入进去.
28.记录排序
格式:mysql>SELECT 字段名列表 FROM 表名 [where 条件] ORDER BY 排序字段1 [asc ] [desc] [排序字段2……]
如:按年龄对yuangong表进行升序排列!
>SELECT * FROM yuangong ORDER BY 年龄 asc
或>SELECT * FROM yuangong order by 年龄
如:按年龄对yuangong表进行降序排列!
>SELECT * FROM yuangong ORDER BY 年龄 desc
对员工表先按性别升序排列,性别相同的再按年龄从大到小排序
>SELECT * FROM 员工表 ORDER BY 性别 asc,年龄 desc
29.原MS-SQL/ACCESS数据库通过文件导入mysql
mysql> load data infile 'c:\\sql.txt' into table abc fields terminated by ',';
30.原EXCEL表通过文件导入导到mysql
步骤同上。只是要注意的是:excel默认是以 TAB 分隔的所以应用以下的语句:
mysql> load data infile 'c:\\book1.txt' into table abc fields terminated by '\t';