关系型数据库
SQL:
mysql
oracle
db2
sysbaes
access
vfor
非关系型数据库
NoSQL
memorycache
redis
mongodb
mysql:
mysql是一个开源的关系型数据库
1.安装mysql
软件分类
服务端:mysql-server x86,x86_64
客户端:mysql-client x86,x86_64
2.安装方式:
rpm:
源码
二进制包
3.mysql下载地址
http://dev.mysql.com/downloads/mysql/
4.系统原生的mysql
rhel6及rhel6以下的版本都叫mysql
rhel7里面mysql叫做mariadb
安装原生mysql:
yum install mysql mysql-server
使用的是光盘镜像中的mysql
5.使用源码安装mysql
准备cmake软件包
准备mysql源码包
准备一台虚拟机,添加一块20G的硬盘
源码安装mysql需要cmake的支持
所以需要先安装cmake
还需要检测系统是否支持编译安装
yum groupinstall “Development tools”
还需要一些特殊依赖关系
yum install openssl openssl-devel zlib zlib-devel ncurses-devel ncurses readline readline-devel
安装之前还需要把硬盘做成lvm进行管理以方便后期进行磁盘扩容
pvcreate /dev/sdb1
vgcreate myvg /dev/sdb1
lvcreate -L 10G -n mydata myvg
mke2fs -j /dev/myvg/mydata
mkdir /mydata
vim /etc/fstab
/dev/myvg/mydtata /mydata ext4 defaults 0 0
准备用户:
groupadd -r mysql
useradd -r -g mysql -s /sbin/nologin mysql
mkdir /mydata/data保存mysql数据的目录
chown mysql.mysql /mydata/data -R修改权限让mysql用户和mysql组对其拥有相应权限
cd mysql-5.6.20
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/mydata/data -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_LIBWRAP=0 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
make
make install
cd /usr/local/mysql
scripts/mysql_install_db –user=mysql –datadir=/mydata/data/
vim /etc/profile.d/mysql.sh
export PATH=$PATH:/usr/local/mysql/bin
cp support-files/mysql.server /etc/init.d/mysqld56
cp support-files/my-default.cnf /etc/my.cnf记住备份以下my.cnf
需要对/etc/my.cnf进行配置添加
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
port = 3306
socket = /tmp/mysql.sock
skip-external-locking
key_buffer_size = 256M
max_allowed_packe = 1M
table_open_cache = 256
sort_buffer_size = 1M
read_buffer_size = 1M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 16M
thread_concurrency = 4
datadir = /mydata/data
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
/etc/ini.d/mysql56 restart
为root用户设置密码
mysqladmin -uroot password ‘new_pass’
链接mysql服务器
本机:
mysql -uroot -p
输入密码:
推荐使用上面的方式
mysql -uroot -p123456
rpm:
rpm -Uvh MySQL-shared-*
rpm -Uvh MySQL-devel-5.6.21-1.el6.x86_64.rpm
rpm -Uvh MySQL-client-5.6.21-1.el6.x86_64.rpm
yum localinstall MySQL-server-5.6.21-1.el6.x86_64.rpm
mysql基础操作指令
1.mysqladmin -uroot password ‘new_pass’为root用户设置密码
2.进入mysql交互式环境
mysql>update user set Password=password(‘new_pass’) where User=’root’
也是为root用户设置密码
3.例外也可以使用mysql_secure_installation指令去初始化数据库并设置root密码
4.链接mysql
mysql指令
mysql
mysql -uusername -ppassword
mysql -uusername -ppassword -h host
另外对于设置了密码的又不想登录的时候输入密码可以在用户家目录下编写.my.cnf
[client]
user=root
password=123456
host=127.0.0.1
mysql mysql -uusername -ppassword -h host -P port -D db_name
5.mysql交互式基本指令
;mysql交互式默认的语句结束符,
如果没有结束会出现‘->’这个符号来告知你语句没有结束
show databases;查看有那些数据库存在
use db_name;选择使用那个数据库
show tables;查看db_name下的表有那些
?,\?,help:查看帮助信息
\q,quit推出mysql交换环境
\c;提前结束语句,如果前面有分号的将提前结束失败
\d,设置语句结束符
\G,显示方式设置
\.,source 执行sql脚本
\s,查看mysql系统相关信息
存储引擎:
非事务:
MyISAM
对于读性能有要求,中小型企业使用
事务:
innodb
默认所有表共享一个表空间
innodb_file_per_table| ON 最好把新建一个表就分配一个表空间的功能打开
事务提交:
commit
事务回滚:
rollback
具体选择需要根据业务情况决定
存储引擎是针对于表来说的
mysql> show variables like ‘%eng%’;查看系统默认存储引擎
mysql> show variables like ‘%innodb%’;查看innodb参数
mysql> show table status like ‘user’\G;查看表的属性
mysql> desc user;查看表结构
mysql> set global innodb_file_per_table=1 设置变量的开启或关闭情况
DBA:
开发DBA:
数据库设计,sql语句,存储过程,触发器
管理DBA:
安装,升级,备份,恢复,用户管理,权限管理,监控,性能分析,基准测试
数据类型:
数值型:
int
decimal
float,double,real
字符型:
char
varchar
text
blob
时间类型:
date
time
datetime
字符集:
utf8国际标准,对于有国外信息的存储的时候可以使用
gbk中国标准
mysql> show character set;查看mysql支持的字符集和排序规则
mysql> show collation;查看排序规则
查看当前选择了什么数据库
mysql> select database();
+————+
| database() |
+————+
| uplooking |
+————+
1 row in set (0.00 sec)
查看最后一条insert语句的id
mysql> select last_insert_id();
+——————+
| last_insert_id() |
+——————+
| 0 |
+——————+
1 row in set (0.00 sec)
SQL:
DML:数据修改语句
update
insert
delete
select
DDL:数据定义语句
create:
创建数据库
CREATE DATABASE db_name;
CREATE DATABASE db_name CHARACTER SET [=] charset_name COLLATE [=] collation_name;
创建表
CREATE TABLE up01(id int not null primary key,name varchar(20));创建表并自定义表的字段(结构)
CREATE TABLE up02 select * from up01;创建表,并把up01的数据也一并复制到新表当中,但是表的属性复制可能会有遗漏
CREATE TABLE up03 like up01;创建新表,并把up01的表的属性也一并复制过来,但是数据不会进行复制
engine = Myisam|innodb 创建表的时候可以选择存储引擎
auto_increment创建字段的时候可以使用自动增长规则(字段必须primary key(非空唯一字段))
SHOW CREATE DATABASESHOW db_name打印创建数据库的指令
SHOW CREATE TABLE table_name 打印创建表的指令
alter:修改表属性
alter database db_name character set gbk collate gbk_chinese_ci;修改数据库的字符集和排序规则
alter table up06 add(age int);给表添加一个字段
alter table up06 change age age2 varchar(20);修改表字段的名字和属性
alter table up06 modify age int(16);修改表字段的属性
alter table up06 drop age;删除表的字段
alter table up06 rename up111;给表重命名
drop:删除
drop database db_name删除数据库
drop table table_name删除表