MySQL数据库概念
(1) MySQL是关系型数据库,各种关系依赖。特点:数据以表格的形式存储,由无数的表,组成一个库,每张表包含无数的行和列,每行记录数据的真实内容,每列记录数据内容的真实数据段
(2)关系型数据库,用于存放用户信息、员工姓名、银行卡信息、工资单、WEB网站订单、购物车信息、考试成绩等;
(3) MySQL数据库不是单独存在的,位置在web后端,用户通过web网站交互,产生的数据,存储到MySQL中,典型架构LAMP LNMP tomcat +MySQL Java+MySQL
(4) MySQL 分为社区版和商业版 ,MySQL社区版是免费的,Mariadb是免费开源的,Centos7默认安装的是Mariadb
MySQL数据库原理
(1) MySQL 数据库在运行时,会选择工作引擎,常见的工作引擎有Myisam, Innodb
(2) Myisam 强调的是数据库的性能,其执行速度比Innodb类型更快,但不提供事物支持,不提供外键。如果是大量的查询工作,Myissam性能更好些
(3)Innondb提供事物支持,外部键,行级锁等高级功能 ,如果是执行插入,更新操作,出于性能方面的考虑,选择Innondb。
MySQL数据库安装配置
1> 软件安装的2种方式,二进制方式,源代码方式
2> rpm包结尾的二进制文件,rpm,yum直接安装
rpm -ivh mysql-server-xxx.rpm mysql-devel-xxx.rpm xxx;(不推荐)
yum install mysql mysql-server mysql-devel -y
3>源码安装方式,基于./configure make make install 但从MySQL5.5X开始后,MySQL预编译变成了cmkae,不再支持.configure
4> 实战源码安装MySQL
(1) 安装编译环境
yum install ncurses-devel perl gcc gcc-c++ wget cmake nurses make
(2) 下载MySQL源码包 wget http://down1.chinaunix.net/distfiles/mysql-5.5.20.tar.gz
(3) tar -xzvf mysql-5.5.20.tar.gz
(4) 进入mysql -5.5.20目录里,执行
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql/ \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306 \
-DWITH_XTRADB_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EXTRA_CHARSETS=1 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DWITH_BIG_TABLES=1 \
-DWITH_DEBUG=0
make
make install
(5) 将MySQL设置为系统服务
cd /usr/local/mysql
cp support-files /my-large.cnf /etc/my.cnf
cp mysql.server /etc/init.d/mysqld
useradd mysql
mkdir -p /data/mysql
/usr/local/mysql/scripts/mysql_install_db --user=mysql--datadir=/data/mysql/ --basedir=/usr/local/mysql/ 对mysql进行初始化
(6) 启动MySQL数据库
/etc/init.d/mysqld start
MySQL报错解决方案:
1> 检查MySQL数据库是否存在或者数据目录是否完整
2> 检查selinux是否关闭,生产环境建议关闭
3> 检查MySQL服务器的磁盘空间,查看MySQL错误日志信息
4> 检查MySQL数据mysql用户是否有权限
5> 检查MySQL是否已经启动 ps -ef | grep mysql,3306已经存在
6> 检查MySQL配置目录是否存在/etc/my.cnf
7> 确保my.cnf文件中,[mysqld]字段上存在datadir=/data/mysql
(7) 进入数据库
/usr/local/mysql/bin/mysql
SQL语句学习
(1) show databases; 查看所有的数据库
(2) create database jfedu; 创建jfedu数据库
(3) use jfedu; 进入jfedu数据库
(4) show tables; 查看数据库中的表
(5) create table t1(id vchar(10),name vchar(20)); 创建t1这个表,这个表上有id和name2个字段
(6) insert into t1 values (20,'zhangsan'); 向t1这张表中插入数据
(7)
seletct * from t1; 查看t1这张表的内容;
select name from t1; 查看t1这张表name字段内容
select name from t1 where id=2; 查看t1这张表id=2的name字段
(8) desc user; 查看表的字段
(9) select host,user,password from mysql.user; 不进入user这张表中,也可以user表内容
(10) mysql -e "select host,user,password from mysql.user"; 在mysql命令行外也可以查看user表内容
(11) update test001 set age=26 and where name='wanger'and id=2;
注释:
更新test001这张表 把name=‘wanger’id=2 这个字段上,age设置为26
(12) select count(*)from test001; 查看表有多少字段
(13) flush privileges; 刷新权限
(14) delete from t1 清空表的内容
(15) drop table t1; 删除表
(16) drop database jfedu; 删除数据库
(17) show engines; 查看数据库默认的引擎