Day1-mysql
- 搭建数据库服务器
- 数据库的基本使用
- 表的基本操作
- 表记录的基本操作
- 用户授权与权限撤销
- 数据备份与恢复
- Mysql主从同步
- Mysql读写分离
- Mysql高可用集群
- Mysql性能调优
Mysql数据库服务器 存储的数据
1搭建数据库服务器
商业软件 开源软件 是否跨平台
在生产环境中通宵和网站服务一起使用 LAMP LNMP
Mysql历史与优点
关系型数据库 非关系型数据NOSQL
把不同的数据,使用不同表存储,表与表之间是有关联的
支持多个编程语言 php .net java asp api mysql
DB——database 数据库
数据库:依照某种数据模型进行组织并存放到存储器的数据集合
DBMS——database management system
数据库管理系统:用来操纵和管理数据库的大型服务软件
DBS——database system
数据库系统:即DB+DBMS,指带有数据库并整合了数据库管理软件的计算机系统
实体—关系模型 entity-relationship model
安装rpm格式软件包
使用RPM包安装初始密码在
cat /root/.mysql_secret
mysql>SET PASSWORD FOR 'root'@'localhost'=PASSWORD('1234567');
安装 源码包 配置 编译 安装
[root@localhost ~]# yum install mysql-server mysql –y
[root@localhost ~]# /etc/init.d/mysqld start
初始化 MySQL 数据库: Installing MySQL system tables...
OK
Filling help tables...
OK
To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h localhost.localdomain password 'new-password'
Alternatively you can run:
/usr/bin/mysql_secure_installation
which will also give you the option of removing the test
databases and anonymous user created by default. This is
strongly recommended for production servers.
See the manual for more instructions.
You can start the MySQL daemon with:
cd /usr ; /usr/bin/mysqld_safe &
You can test the MySQL daemon with mysql-test-run.pl
cd /usr/mysql-test ; perl mysql-test-run.pl
Please report any problems with the /usr/bin/mysqlbug script!
[确定]
正在启动 mysqld: [确定]
端口号
[root@localhost ~]# netstat -untlap |grep :3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 11671/mysqld
mysql pid号
[root@localhost ~]# ps aux |grep mysqld
root 11582 0.0 0.5 106092 1352 pts/0 S 11:51 0:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql
mysql 11671 0.0 9.1 367516 20868 pts/0 Sl 11:51 0:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
root 11739 0.0 0.3 103248 832 pts/0 S+ 12:07 0:00 grep mysqld
[root@localhost ~]# cat /var/run/mysqld/mysqld.pid
11671
进程所有者/组 都 是mysql
数据库目录 /var/lib/mysql/
主配置文件 /etc/my.cnf
Mysql-share 共享库
Mysql-shared-compat 兼容包
Mysql-server 服务端程序
Mysql-client 客户端程序
Mysql-devel 库和头文件
Mysql-embedded 嵌入式版本
Mysql-test 测试包
Sql命令不区分字母大小写
每条SQL命令必须以;结尾
\c 不执行SQL命令
设置登录用户和密码
mysql> set password for root@'localhost'=password('1');
存放在数据库服务上库和表,是以文件的形式保存在数据库目录下
[root@localhost ~]# mysql -uroot -p1 mysql
mysql> show databases; 查询数据库
mysql> select database(); 查看当前所在的库
mysql> use mysql; 切换数据库(打开数据库)
mysql> create database 数据库名; 创建数据库
mysql> create drop 数据库名; 删除数据库
mysql> desc 表名; 查看表结构
mysql> select 字段 from 表名; 查询表记录
数据库的命名规则
数字、字母、下划线 ————注——但不能使用纯数字命名
数据库名具有唯一性
区分字母大小写
尽量不要使用特殊符号 和 关键字
information_schema //信息概要库(虚拟库) 此里的数据;不占有系统磁盘空间 数据存储在系统内存里
保存当前数据库服务器已有库和表的信息
mysql 授权库 保存用户的授权信息 占有系统磁盘空间
performation_schema 性能结构库 数据服务器运行时的参数信息 占有系统磁盘空间
test 公共库(空库-测试库) 任意一个能够连接数据库服务器用户,就对此库拥有完全权限 占有系统磁盘空间
表的基本操作----表存放在数据库里
mysql> create table 数据库名.表名(
-> 字段名 类型(宽度) 约束条件,
-> 字段名 类型(宽度) 约束条件,
……
);
>insert into 表名 values("字段内容", "字段内容", "…");
>delete from 表名; 删除表里所有记录
>drop table 表名; 删除表
>drop database 数据库; 删除数据库
Mysql数据库类型
1数值类型
整数类型
类 型 大小 范围(有符号) 范围(无符号) 说明
TINYINT 1字节 -128~127 0-255 微小整数
SMALLINT 2字节 -32768~32767 0-65535 小整数
MEDIUMINT 3字节 -223~223-1 0~224-1 中整数
INT 4字节 -231~231-1 0~232-1 大整数
BIGINT 8字节 -263~263-1 0~264-1 极大整数
无符号 unsigned
>create table t1(name varchare(5),age int(4) zerofill); 补0
注:数值类型的宽度是显示宽度,当字段的值不够显示宽度时,默认使用空格在数字前,补足显示宽度位数显示
Int默认为11位,若不指定——浪费内存空间
浮点型
FLOAT 4字节 单精度浮点数
DOUBLE 8字节 双精度浮点数
2字符类型
Char 定长(固定长度) 默认为1(0-255)
Varchar 变长(长度可定义) (255-65535)
Text、blob 大文本类型
3日期时间类型
Year 年 yyyy 2016
Date 日期 yyyy-mm-dd 2016-09-01
Time 时间 hh:mm:ss 22:00:00
Mysql 获取时间的函数
Now() year() day() month() time()
Select now()
Select year(20160901)
Select year( now() )
Mysql数据类型
日期时间类型
Datetime 8字节 范围:1000-01-01 00:00:00.000000~9999-12-31 23:59:59.999999
timestamp 4字节 范围:1970-01-01 00:00:00.000000~2038-01-19 03:14:07.999999
1存储时间范围不一样、赋值方式不一样 若不给timestampe赋值,默认是当前系统时间
Year 年 yyyy
输入两位数显示 01-69 20xx
70-99 19xx
00 0000
4枚举类型 字段的值只能在列举的范围内选择
Enum(值1,"值2",值n)选择列举范围内一个 可以用编号给他赋值
set(值1,"值2",值n)选择列举范围内一个或多个