大纲
1、安装 MySQL
2、检索数据
3、数据过滤
一、安装环境
CentOS-6.5-i386
mysql 5.1.73
为了方便,这里采用yum方式安装,对于学习实验环境完全没问题,注意下面的操作都以root身份操作。
除非对MySQL需要定制化或者安装多个实例,建议使用YUM/RPM包安装 或者 通用二进制格式安装。源码也有30多M,如果编译安装需要花费大量的时间。
MySQL被Oracle收购以后,分为了以下两个版本
Community Edtion (MySQL Community Server)
Enterprise Edtion (MySQL Enterprise Server)
MySQL 官方网站提供三种软件包格式:
软件包管理特有的格式(RPM包, DEP包,MSI 格式)
通用二进制格式(不需要安装,解压并简单配置即可)
源码文件(Source Code)
二、安装MySQL
a、检查系统是否已经安装mysql,如果存在,则卸载然后重新安装
# rpm -qa | grep -i mysql## 查看MySQL相关的安装包 # yum search mysql
b、安装mysql服务器端
# yum -y install mysql-server
c、安装mysql客户端程序
# yum -y install mysql
d、如果需要开发程序,那么需要安装mysql开发库。建议安装它
# yum -y install mysql-devel
e、默认情况下,MySQL的几个目录
数据文件: /var/lib/mysql 可执行文件: /usr/bin (mysql, mysqldump, mysqladmin等命令) 服务启动脚本:/etc/init.d/mysqld 配置文件: /etc/my.cnf
安装
mysqld MySQL服务器端的二进制可执行文件
mysql MySQL客户端程序
MySQL启动后,默认情况下监听在 3306 端口。
三、修改配置文件
默认情况下,mysql是不支持中文字符的。因为其默认的字符集latin1,我们可以通过修改其配置文件,来更改默认的字符集设置。默认情况下的字符集如下:
mysql> SHOW VARIABLES LIKE '%char%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+
设置字符集为UTF-8, 编辑配置文件/etc/my.cnf, 在[mysqld]下添加如下一行:default-character-set=utf8
四、启动 && 停止 MySQL 服务
a、设置mysql开机启动
# chkconfig --add mysqld # chkconfig mysqld on # chkconfig --list | grep mysql
b、启动mysql服务
mysq l服务的启动脚本位于 /etc/init.d/mysqld,我们可以通过以下方式启动
# service mysqld start or # /etc/init.d/mysqld start
c、进行必要的安全性设置
# /usr/bin/mysql_secure_installation
然后根据提示,回答yes/no即可。
d、重启或停止mysql服务
# service mysqld restart # 重启 # service mysqld stop # 停止
五、连接到 MySQL 服务
MySQL与所有其他客户机-服务器DBMS一样,要求在能够执行命令之前登录到DBMS。为了连接到MySQL,需要以下信息:
主机名(如果是连接到本地mysql服务器,为localhost)
端口号(默认为3306)
一个合法的mysql用户名
用户口令(如果需要)
## 连接 # mysql -h localhost -P 3306 -u root -p -h:host指定主机 -P:Port指定端口 -u:user指定用户名 -p:password## 退出 mysql> quit
在连接登录之后,就可以访问该用户有权限访问的任意数据库和表了。
MySQL 数据库的用户与操作系统用户无关, 其用户定义比较特殊: username@host , 由 用户名 以及 允许该用户登录的源主机 组合而成。
a、选择数据库
在最初连接到mysql时,没有任何数据库打开供你使用。在你能执行任意数据库操作前,需要选择一个数据库。为此,可使用USE关键字。例如,为了使用test数据库
mysql> USE test;
记住,必须先使用USE选择数据库后,才能读取其中的数据。
b、了解数据库和表
想一想,如果你不知道可以使用的数据库名时怎么办?数据库、表、用户权限等信息被存储在数据库mysql表中。不过,内部的表一般不能直接访问,可以mysql的SHOW命令来显示这些信息。
查询可用的数据库:
mysql> SHOW DATABASES;
获取数据库表的列表:
mysql> USE mysql; mysql> SHOW TABLES;
查看表结构:
mysql> DESC user;
显示授予用户的权限:
mysql> SHOW GRANTS;
更多的SHOW命令, 请
mysql> ? SHOW;mysql> help contents;
六、MySQL客户端工具
1)MySQL
MySQL是一个简单的SQL外壳(有GNU readline功能)。它支持交互式和非交互式使用。当交互使用时,查询结果采用ASCII表格式。当采用非交互式(例如,用作过滤器)模式时,结果为tab分割符格式。可以使用命令行选项更改输出格式。如果由于结果较大而内存不足遇到问题,使用--quick选项。这样可以强制MySQL从服务器每次一行搜索结果,而不是检索整个结果集并在显示之前不得不将它保存到内存中。
2)MySQLAdmin
MySQLAdmin是一个执行管理操作的客户程序。可以用它来检查服务器的配置和当前的状态,创建并删除数据库等等。
3) MySQLBinLog
服务器生成的二进制日志文件写成二进制格式。要想检查这些文本格式的文件,应使用MySQLBinLog实用工具。
4) MySQLDump
MySQLDump客户端可用来转储数据库或搜集数据库进行备份或将数据转移到另一个SQL服务器。转储包含创建表和/或装载表的SQL语句。
5) MySQLImport
MySQLImport实用程序是一个批量加载器,它将文本文件的内容读到已有表中。
6) MySQLShow
MySQLShow,客户可用来很快地查找存在哪些数据库,数据库中的表,表中的列或索引。
7) Perror
Perror为系统错误代码或存储引擎(表处理)错误代码打印其描述信息。
8) Replace
Replace实用工具可以及时更改文件或标准输入中的字符串。它首先使用有限状态机来匹配长的字符串。该工具可以用来交换字符串。
所有客户端工具,都受my.cnf配置文件中 [client] 的影响, [mysql] 只会影响mysql客户端工具。
所有客户端工具,都支持一些通用的选项,比如以下这些:
--user, -u
--host, -h
--password, -p
--port, -P
--protocol
--database DATABASE , -D
MySQL
MySQL客户端提供两种工作模式:
交互式模式(这种模式下又可以执行两类命令)
客户端命令(help, 可以查看)
服务器端命令(需要服务端响应的命令,必须使用语句结束符,默认为 ;)
批处理模式(执行 mysql 脚本)
# mysql < init.sql (输入重定向方式)
mysql> source /path/to/your.sql (\.)
-------------------让mysql从文件中读取语句-----------------
--命令行从sql文件中读取
# mysql dbname < filename.sql
--mysql会话内从sql文件读取
source /path/to/filename.sql
\. /path/to/filename.sql
1、我们首先看一下mysql 命令的常见选项
[root@mysql ~]# mysql --help ... Usage: mysql [OPTIONS] [database]-?, --help Display this help and exit.-I, --help Synonym for -?--auto-rehash Enable automatic rehashing. One doesn't need to use'rehash' to get table and field completion, but startupand reconnecting may take a longer time. Disable with--disable-auto-rehash.(Defaults to on; use --skip-auto-rehash to disable.)-A, --no-auto-rehash No automatic rehashing. One has to use 'rehash' to gettable and field completion. This gives a quicker start ofmysql and disables rehashing on reconnect.--auto-vertical-output Automatically switch to vertical output mode if theresult is wider than the terminal width.-B, --batch Don't use history file. Disable interactive behavior.(Enables --silent.)-C, --compress Use compression in server/client protocol.-D, --database=name Database to use.--default-character-set=name Set the default character set.--delimiter=name Delimiter to be used.-e, --execute=name Execute command and quit. (Disables --force and historyfile.)-E, --vertical Print the output of a query (rows) vertically.-f, --force Continue even if we get an SQL error.-G, --named-commands Enable named commands. Named commands mean this program'sinternal commands; see mysql> help . When enabled, thenamed commands can be used from any line of the query,otherwise only from the first line, before an enter.Disable with --disable-named-commands. This option isdisabled by default.--local-infile Enable/disable LOAD DATA LOCAL INFILE.-h, --host=name Connect to host.-H, --html Produce HTML output.-X, --xml Produce XML output.--line-numbers Write line numbers for errors.(Defaults to on; use --skip-line-numbers to disable.)-L, --skip-line-numbers Don't write line number for errors.-n, --unbuffered Flush buffer after each query.-N, --skip-column-names Don't write column names in results.--sigint-ignore Ignore SIGINT (CTRL-C).--pager[=name] Pager to use to display results. If you don't supply anoption, the default pager is taken from your ENV variablePAGER. Valid pagers are less, more, cat [> filename],etc. See interactive help (\h) also. This option does notwork in batch mode. Disable with --disable-pager. Thisoption is disabled by default.-p, --password[=name] Password to use when connecting to server. If password isnot given it's asked from the tty.-P, --port=# Port number to use for connection or 0 for default to, inorder of preference, my.cnf, $MYSQL_TCP_PORT,/etc/services, built-in default (3306).--prompt=name Set the mysql prompt to this value.--protocol=name The protocol to use for connection (tcp, socket, pipe,memory).-S, --socket=name The socket file to use for connection.-t, --table Output in table format.--tee=name Append everything into outfile. See interactive help (\h)also. Does not work in batch mode. Disable with--disable-tee. This option is disabled by default.-u, --user=name User for login if not current user.--connect-timeout=# Number of seconds before connection timeout.Default options are read from the following files in the given order: /etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf The following groups are read: mysql client The following options may be given as the first argument: --print-defaults Print the program argument list and exit. 查看从配置文件读取哪些选项 --no-defaults Don't read default options from any option file,except for login file. --defaults-file=# Only read default options from the given file #. --defaults-extra-file=# Read this file after the global files are read. --defaults-group-suffix=#Also read groups with concat(group, suffix) --login-path=# Read this path from the login file.
2、常用客户端命令
mysql> ?For information about MySQL products and services, visit:http://www.mysql.com/ For developer information, including the MySQL Reference Manual, visit:http://dev.mysql.com/ To buy MySQL Enterprise support, training, or other products, visit:https://shop.mysql.com/List of all MySQL commands: Note that all text commands must be first on line and end with ';' ? (\?) Synonym for `help'. clear (\c) Clear the current input statement. connect (\r) Reconnect to the server. Optional arguments are db and host. delimiter (\d) Set statement delimiter. edit (\e) Edit command with $EDITOR. ego (\G) Send command to mysql server, display result vertically. exit (\q) Exit mysql. Same as quit. go (\g) Send command to mysql server. help (\h) Display this help. nopager (\n) Disable pager, print to stdout. notee (\t) Don't write into outfile. pager (\P) Set PAGER [to_pager]. Print the query results via PAGER. print (\p) Print current command. prompt (\R) Change your mysql prompt. quit (\q) Quit mysql. rehash (\#) Rebuild completion hash. source (\.) Execute an SQL script file. Takes a file name as an argument. status (\s) Get status information from the server. system (\!) Execute a system shell command. tee (\T) Set outfile [to_outfile]. Append everything into given outfile. use (\u) Use another database. Takes database name as argument. charset (\C) Switch to another charset. Might be needed for processing binlog with multi-byte charsets. warnings (\W) Show warnings after every statement. nowarning (\w) Don't show warnings after every statement.For server side help, type 'help contents'
\c : 清除当前输入的语句,提前终止、取消语句执行。前提是 \c 之前没有语句结束符。
delimiter : 设置语句结束符
\g : 无论语句结束符是什么,直接将此语句发送至服务器执行。
\G : 无论语句结束符是什么,直接将此语句发送至服务器执行,并且结果以竖排方式显示。
pager : 通过 PAGER 打印查询结果
source \. : 执行SQL 脚本
status \s :获取服务器状态
system \! : 执行系统shell 命令
rehash \# : 对新建的对象(table name, colume name),支持补齐功能
命令补齐功能:
名称(table name, colume name)补齐
prompt
如果有很多mysql数据库管理,有时会发生自己忘记了在那台服务器,那台数据库上,毋庸多说,谁都知道这有多危险。可以使用prompt来重写mysql客户端提示符。
mysql>prompt \u@\h(\d) \r:\m:\s>
\u:连接用户
\h:连接主机
\d:连接数据库
\r:\m:\s:显示当前时间如果嫌每次都在命令行修改麻烦,直接修改my.cnf参数
[mysql] #这是不是[mysqld]
prompt=\\u@\\d \\R:\\m>root@localhost((none)) 06:57:39> prompt
Returning to default PROMPT of mysql>
mysql>
pager
如果select出来的结果集超过几个屏幕,那么前面的结果一晃而过无法看到。使用pager可以设置调用os的more或者less等显示查询结果,和在os中使用more或者less查看大文件的效果和使用方式都一样。
pager [cmd] cmd 是标准linux命令
mysql> pager more
PAGER set to 'more'
mysql> \P more
PAGER set to 'more'
mysql> pager less
PAGER set to 'less'
mysql> \P less
PAGER set to 'less'// 回到标准输出stdout
mysql> pager
PAGER set to stdout
delimiter
delimiter就是告诉MySQL解释器,命令的结束符是什么。
默认情况下MySQL命令结束是以分号(;),在写过程或者函数等情况下,这会产生不少问题,因为存储过程中有许多语句,所以每一个都需要一个分号。因此你需要选择一个不太可能出现在你的语句或程序中的字符串作为分隔符。
mysql> delimiter //
mysql> SELECT host,user FROM user//mysql> delimiter ;
3、服务器端命令
For server side help, type 'help contents'mysql> help contentsmysql> help KEYWORD
mysqladmin
用于执行管理性操作。语法是:
shell> mysqladmin [OPTIONS] command [command-option] command ...
通过执行mysqladmin --help,你可以得到你mysqladmin的版本所支持的一个选项列表。目前mysqladmin支持下列命令:
create databasename //创建一个新数据库
drop databasename //删除一个数据库及其所有表
extended-status //给出服务器的一个扩展状态变量
flush-hosts //刷新所有缓存的主机
flush-logs //刷新所有日志
flush-tables //刷新所有表
flush-privileges //再次装载授权表(同reload)
kill id,id,... //杀死mysql线程
password //新口令,将老口令改为新口令
ping //检查mysqld是否活着
processlist //显示服务其中活跃线程列表
reload //重载授权表
refresh //洗掉所有表并关闭和打开日志文件
shutdown //关掉服务器
status //给出服务器的简短状态消息--sleep N--count N
variables //打印出服务器变量
version //得到服务器的版本信息所有命令可以被缩短为其唯一的前缀。
非客户端工具
myisamchk # isam 表检查工具
myisampack # isam 表压缩工具
转载于:https://blog.51cto.com/skypegnu1/1421777