一、关系型数据库三范式:
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';