MySql高级一


一、关系型数据库三范式:


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< /path/to/mysql_script.sql


五、mysql的初始化


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.cnf

(1.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.cnf

(1.3)、mysql使用配置文件的方式:

(1.3.1)、它依次查找每个需要查找的文件,结果是所有文件的并集。

(1.3.2)、如果某参数在多个文件中出现多次,那么后读取的有效。

2、处理匿名用户件:

/usr/local/mysql/scripts/mysql_install_db --datadir=/data/mydata --user=mysql

删除匿名用户:

mysql> drop user ''@'localhost'或者 delete from  user where user='' and host='localhost'

3、给所有的root用户设置密码

(3.1)、第一种方式:

mysql> SET PASSWORD FOR username@host =PASSWORD('your_password');

mysql> FLUSH PRIVILEGES;

(3.2)、第二种方式:

   mysql> update user set password =PASSWORD('your_password') where user='root';

   mysql> FLUSH PRIVILEGES;


六、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中。

(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支持的排序规则:mysql>show collation;

结果如下:

+--------------------------+----------+---------+----------+---------+

| Collation           | Charset  | Default | Compiled | Sortlen |

+--------------------------+----------+---------+----------+---------+

| latin1_german1_ci     | latin1   |      | Yes  |     1 |

| gb2312_chinese_ci    | gb2312   | Yes     | Yes      |       1 |

| gb2312_bin         | gb2312   |         | Yes      |      1 |

| gbk_chinese_ci      | gbk      | Yes     | Yes      |      1 |

| gbk_bin           | gbk      |         | Yes      |     1

| latin5_turkish_ci    | latin5    | Yes     | Yes       |     1 |

| latin5_bin         | latin5    |         | Yes      |    1 |

| utf8_general_ci      | utf8     | Yes     | Yes      |      1 |

| utf8_bin          | utf8     |         | Yes     |    1 |

| utf8_unicode_ci      | utf8     |         | Yes      |     8 |

| utf8_icelandic_ci     | utf8     |         | Yes      |     8 |

| utf8_latvian_ci      | utf8     |         | Yes      |     8 |

| utf8_romanian_ci     | utf8     |         | Yes      |      8 |

| utf8_slovenian_ci    | utf8     |         | Yes      |     8 |

| utf8_polish_ci      | utf8     |         | Yes      |      8 |

| utf8_estonian_ci     | utf8     |         | Yes      |      8 |

| utf8_spanish_ci     | utf8     |         | Yes      |       8 |

| utf8_swedish_ci     | utf8     |         | Yes      |       8 |

| utf8_turkish_ci     | utf8     |         | Yes      |       8 |

| utf8_czech_ci      | utf8     |         | Yes      |       8 |

| utf8_danish_ci     | utf8     |         | Yes      |       8 |

| utf8_lithuanian_ci   | utf8     |         | Yes      |       8 |

| utf8_slovak_ci     | utf8    |        | Yes        |     8 |

| utf8_spanish2_ci     | utf8     |         | Yes      |      8 |

| utf8_roman_ci      | utf8     |         | Yes      |       8 |

| utf8_persian_ci     | utf8     |         | Yes      |       8 |

| utf8_esperanto_ci    | utf8     |         | Yes      |      8 |

| utf8_hungarian_ci    | utf8     |         | Yes      |      8 |

| utf8_sinhala_ci     | utf8     |         | Yes      |       8 |

+--------------------------+----------+-----+---------+----------+------------|

十、查看mysql支持的字符集:mysql>show character set;

结果如下:

+----------+-----------------------------+---------------------+--------+

| Charset  | Description           | Default collation   | Maxlen |

+----------+-----------------------------+---------------------+--------+

| big5     | Big5 Traditional Chinese  | big5_chinese_ci     |      2 |

| dec8     | DEC West European      | dec8_swedish_ci     |      1 |

| cp850    | DOS West European       | cp850_general_ci    |      1 |

| hp8      | HP West European       | hp8_english_ci      |      1 |

| koi8r    | KOI8-R Relcom Russian     | koi8r_general_ci    |      1 |

| latin1   | cp1252 West European      | latin1_swedish_ci   |      1 |

| latin2   | ISO 8859-2 Central European | latin2_general_ci   |      1 |

| swe7     | 7bit Swedish           | swe7_swedish_ci     |      1 |

| ascii    | US ASCII              | ascii_general_ci    |      1 |

| ujis     | EUC-JP Japanese          | ujis_japanese_ci    |      3 |

| sjis     | Shift-JIS Japanese        | sjis_japanese_ci    |      2 |

| hebrew   | ISO 8859-8 Hebrew         | hebrew_general_ci   |      1 |

| tis620   | TIS620 Thai             | tis620_thai_ci      |      1 |

| euckr    | EUC-KR Korean          | euckr_korean_ci     |      2 |

| koi8u    | KOI8-U Ukrainian        | koi8u_general_ci    |      1 |

| gb2312   | GB2312 Simplified Chinese   | gb2312_chinese_ci   |      2 |

| greek    | ISO 8859-7 Greek         | greek_general_ci    |      1 |

| cp1250   | Windows Central European    | cp1250_general_ci   |      1 |

| gbk      | GBK Simplified Chinese    | gbk_chinese_ci      |      2 |

| latin5   | ISO 8859-9 Turkish        | latin5_turkish_ci   |      1 |

| armscii8 | ARMSCII-8 Armenian         | armscii8_general_ci |      1 |

| utf8     | UTF-8 Unicode          | utf8_general_ci     |      3 |

| ucs2     | UCS-2 Unicode          | ucs2_general_ci     |      2 |

| cp866    | DOS Russian           | cp866_general_ci    |      1 |

| keybcs2  | DOS Kamenicky Czech-Slovak  | keybcs2_general_ci  |      1 |

| macce    | Mac Central European     | macce_general_ci    |      1 |

| macroman | Mac West European         | macroman_general_ci |      1 |

| cp852    | DOS Central European     | cp852_general_ci    |      1 |

| latin7   | ISO 8859-13 Baltic       | latin7_general_ci   |      1 |

| utf8mb4  | UTF-8 Unicode           | utf8mb4_general_ci  |      4 |

| cp1251   | Windows Cyrillic         | cp1251_general_ci   |      1 |

| utf16    | UTF-16 Unicode         | utf16_general_ci    |      4 |

| cp1256   | Windows Arabic          | cp1256_general_ci   |      1 |

| cp1257   | Windows Baltic          | cp1257_general_ci   |      1 |

| utf32    | UTF-32 Unicode         | utf32_general_ci    |      4 |

| binary   | Binary pseudo charset     | binary          |      1 |

| geostd8  | GEOSTD8 Georgian        | geostd8_general_ci  |      1 |

| cp932    | SJIS for Windows Japanese  | cp932_japanese_ci   |      2 |

| eucjpms  | UJIS for Windows Japanese  | eucjpms_japanese_ci |      3 |

+----------+-----------------------------+---------------------+--------+


十一、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.

如果空模式,则可以插入成功(但会截取),如果使用严格模式则添加失败。


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


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高级)