您的位置:首页 > 数据库 > MySQL

MySql高级一

2015-12-17 13:26 483 查看
一、关系型数据库三范式:

1、第一范式--原子性:所有属性都应该是原子性的,即数据库表的每一列都是不可分割的原子数据项。
2、第二范式--完全依赖:非主属性必须完全依赖于主键。
3、第三范式--不传递依赖,非主属性不可传递依赖于主键,即任何非主属性不能依赖于其它非主属性。

二、MySql常用的产品家族:

1、MySql Server(mysqld ,mysql)
2、MySql Proxy
3、MySql Drivers and Connectors
注:2007年8月开始,MySql分为两种类型的版本:Community(社区版)和Enterprise(企业版)

三、MySQL客户端工具:

1、mysql
2、mysqladmin
3、mysqldump
4、mysqlcheck

四、MySQL工作模式:

1、交互式模式:
mysql>select user,host,password from mysql where user='root';
2、脚本模式:
#mysql -uroot -h172.30.100.100 -p </home/zhangsan/test.sql
<==>
mysql> \. /home/zhangsan/test.sql

五、[b]mysql的初始化[/b]

1、处理配置文件:

cp /usr/local/mysql/support-files/my-large.cnf /etc/my.cnf因在安装时,datadir进行了调整,所以/etc/my.cnf的[mysqld]段要加上=/data/mydata说明:/usr/local/mysql/support-files/下可用的mysql配置文件有很多,如my-large.cnf 、my-innodb-heavy-4G.cnf、my-medium.cnf、my-small.cnf1.1通过/usr/local/mysql/bin/mysqld --help --verbose作用:(1.1.1)、显示mysqld程序启动时可用的选项,通常都是长选项。(1.1.2)、显示mysqld的配置文件中可用的服务器变量命令。 mysql> show GOLBAL VARIABLES; mysql> show SESSION VARIABLES;1.2、mysql读取配置文件的顺序(注意不同的安装方式,读取顺序会略有不同):通过/usr/local/mysql/bin/mysqld --help --verbose | head -20命令,可以找到:Default options are read from the following files in the given order:/etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf1.3、mysql使用配置文件的方式:(1.3.1)、它依次查找每个需要查找的文件,结果是所有文件的并集。(1.3.2)、如果某参数在多个文件中出现多次,那么后读取的有效。2、执行初始化脚本:
[b][b]/usr/local/mysql/scripts/mysql_install_db --datadir=/data/mydata --user=mysql[/b][/b]
[b]3、处理匿名用户件:[/b]
删除匿名用户:
mysql> drop user ''@'localhost'或者 delete from user where user='' and host='localhost'[b][b][b]4、[b][b][b][b]给所有的root用户设置密码[/b][/b][/b]:[/b][/b][/b][/b]
[b][/b]
4.1、第一种方式: mysql> SET PASSWORD FOR username@host =PASSWORD('your_password'); mysql> FLUSH PRIVILEGES; 4.2、第二种方式: mysql> update user set password =PASSWORD('your_password') where user='root'; mysql> FLUSH PRIVILEGES;[b][b][b][b][b][b][b]5、[b][b][b][b]mysql用户账户[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]:
5.1、用户账户由两部分组成:用户名@主机名
5.2、主机名可以使用通配符:
%:任意长度的任意字符

_:任意字符单个字符[b][/b]

六、MySql客户端命令以及服务器端帮助:

1、help获取客户端命令:

mysql>help显示mysql的命令。
如:\G:是结果集不在以行展示。
\c:取消当前sql的语句的执行。
\q:退出mysql

2、help keyword 获取服务器端帮助:

如:mysql>help create database 获取创建库的帮助
mysql>help create table 获取创建表的帮助

七、Mysql常用的命令选项:

1、-V:显示mysql的版本。
#mysql -V,
结果如下:mysql Ver 14.14 Distrib 5.5.33, for linux2.6 (x86_64) using readline 5.1

2、--database= 或者-D 默认打开某个数据库。
#mysql -p -D mysql或者#mysql -p --database=mysql

3、-H 或者--html:数据结果为html格式的文档,如:
# mysql -H -p
# mysql>select user,host from mysql.user;
<TABLE BORDER=1>
<TR><TH>user</TH><TH>host</TH></TR>
<TR><TD>root</TD><TD>127.0.0.1</TD></TR>
<TR><TD>root</TD><TD>localhost</TD></TR>
</TABLE>

4、-X 或者--xml:数据结果为xml格式的文档,如:
# mysql -X -p
# mysql>select user,host from mysql.user;
<?xml version="1.0"?>

<resultset statement="select user,host,password from mysql.user;" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<row>
<field name="user">root</field>
<field name="host">localhost</field>
</row>

<row>
<field name="user">root</field>
<field name="host">127.0.0.1</field>
</row>
</resultset>

5、--safe-updates:拒绝使用无where的update或者delete命令。
# mysql --safe-updates -p

6、-e:不用登录,直接执行sql
如:#mysql -uroot -p -e 'show databases;'

八、mysqladmin工具:
Mysqladmin的命令格式:mysqladmin [options] command [arg] [command [arg]]...

1、options选项同mysql

2、command:

2.1、create dbName:不用登录,直接创建数据库,如:
#mysqladmin -uroot -p create testdb
#mysql -uroot -p -e 'show databases'
2.2、drop dbName:不用登录,直接删除数据库,如:
#mysqladmin -uroot -p drop testdb
#mysql -uroot -p -e 'show databases;'
2.3、debug:打开调试日志并记录于myqsl的error_log中。
#mysqladmin -uroot -p debug

2.4、status:显示mysql的简要状态信息。
--sleep #:间隔时长
--count #:显示的次数。
如: #mysqladmin -uroot -p status --sleep 1 --count 5,间隔1秒,共显示5次status信息。

2.5、extended-status:输出mysql的各状态变量以及其值,相当于执行"mysql> show global status"

如: #mysqladmin -uroot -p extended-status。

2.6、flush-hosts:清空主机相关的缓存,DNS解析缓存。

如: #mysqladmin -uroot -p flush-hosts。

2.7、flush-logs:主要完成日志滚动。
如: #mysqladmin -uroot -p flush-logs。

2.8、flush-status:重置状态变量。
如: #mysqladmin -uroot -p flush-status。

2.9、flush-privileges:重读授权信息。
如: #mysqladmin -uroot -p flush-privileges。

2.10、flush-tables:关闭当前打开的表文件句柄。
如: #mysqladmin -uroot -p flush-tables。

2.11、flush-threads:清空线程缓存。
如: #mysqladmin -uroot -p flush-threads。

2.12、kill:杀死指定的线程。
如: #mysqladmin -uroot -p kill。

2.13、processlist:显示mysql线程列表。
如: #mysqladmin -uroot -p processlist。

2.14、shutdown:关闭mysqld进程
如: #mysqladmin -uroot -p shutdown。

2.15、start-slave/stop-slave:启动/关闭从服务器线程。

九、mysql数据类型属性修饰符:

1、char/varchar/text的常见的几种修饰符
not null
null
default 'string',不适用于text类型
character set '字符集'
collatioin '排序规则'

2、binary/varbinary/blob的常见的几种修饰符
not null
null
default 不适用于blob

3、整型常用的属性修饰符:
null
not null
default
auto_increment
primary key
unsigned 无符号

4、浮点型常用的属性修饰符:
null
not null
default
unsigned 无符号

5、日期时间型常用的属性修饰符:
null
not null
default

十、mysql的sql模式(sql_mode):

空模式:mysql默认使用空模式。
traditional:传统模式。
strict_trans_tables仅对事务表严格模式。
strict_all_tables对所有表严格模式。
使用场景:比如定义一个字段的长度为2,在插入数据时,内容长度>2.
如果空模式,则可以插入成功(但会截取),如果使用严格模式则添加失败。

十[b]一、mysql服务器的工作特性的是通过服务器变量实现的,那么查看服务器变量的方法有:[/b]

1、mysql> show {global 全局的|session 会话的} variables [like clause];
而mysql服务器运行中的状态是通过状态变量输出的。
show {global 全局的|session 会话的} status [like clause];

2、mysql> select @@{global|session}.variable_name

3、 select * from information_schema.{global|session}_variables where variable_name='some_variable_name';
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  MySql高级