文章目录
一、数据库基本概念
数据库的基本概念1
1 数据(Data)
描述事物的符号记录
包括数字,文字、图形、图像、声音、档案记录等
以“记录"形式按统一的格式进行存储
2 表
将不同的记录组织在一起
用来存储具体数据
3 数据库
表的集合,是存储数据的仓库
以一定的组织方式存储的相互有关的数据集合
数据库的基本概念2
数据库管理系统(DBMS)
是实现对数据库资源有效组织、管理和存取的系统软件
数据库系统
是一个人机系统,由硬件、Os、数据库、DBMS、应用软件和数据库用户组成
用户可以通过DBMS或应用程序操作数据库
关系型数据库:
存储的是数值,字符,字符串,布尔值等
非关系型数据库:
存储的是图片,视频,语音等(对象)
数据库发展史
1960s,第一代数据库系统问世
1970s,第二代数据库-----关系型数据库出现 (MySQL,Oracle)
1980s,第三代数据库-----非关系型数据库出现,面向对象的数据库系统,实用性强,适应面广(Redis,maogodb,memcached,postgresql)
当今主流数据库介绍
SQL Server微软公司,面向Windows操作系统,简单易用。
DB2 IBM公司,面向所有主流平台,大型,安全,完善。
MySQL免费,开源,体积小,后被甲骨文收购。
Oracle甲骨文公司,面向所有主流平台,安全,完善,操作复杂。
关系型数据库
List item关系型数据库是基于关系模型的数据库系统。
List item关系模型的数据结构使用简单易懂的二维数据表
List item关系模型可用简单的“实体–关系”(E-R)图来表示
E-R图包含了实体(数据对象),关系和属性三个要素。
二、关系数据库应用
1 关系型数据库
Oracle、MySQL
SQServer、Sybase
Informix、access
DB2、FoxPRO
2 应用举例
12306用户信息系统
淘宝账号系统
联通手机号信息系统
银行用户账号系统
网站用户信息系统
三、非关系数据库介绍
非关系数据库也被称为NoSQL(Not Only SQL)
村塾数据不以关系模型为依据,不需要固定的表格式
非关系型数据库的优点
1 数据库可高并发读写
2 对海量数据高效率存储于访问
3 数据库具有高扩展性与高可用性
常用的非关系数据库:Redis、mongoDB等
四、MySQL数据库介绍
一款深受欢迎的开源关系型数据库
Oracle旗下的产品
遵守GPL协议,可以免费使用与修改
特点
新能卓越、服务稳定
开源、无版权限制、成本低
多线程、多用户
基于C/S(客户端/服务器)架构
安全可靠
五、MySQL商业版与社区版
MySQL商业版是由MySQL AB公司负责开发与维护,需要付费才能使用
MySQL社区版是由分散在世界各地的MySQL开发者、爱好者一起开发与维护,可以免费使用
两者区别
商业版组织管理与测试环节更加严格,会比社区版更稳定
商业版不遵守GPL,社区版遵从GPL可以免费使用
商业版可获得7*24小时的服务,社区版没有
六、MySQL产品阵营
第一阵营:5.0-5.1阵营,可以说是早期产品的延续
第二阵营:5.4-5.7阵营,整合了MySQL AB公司、社区和第三方公司开发的存储引擎,从而提高性能
第三阵营:6.0-7.1阵营,就是MySQL Cluster版本,为适应新时代对数据库的集群需求而开发
下载网址
http://www.dev.mysql.com/deownloads
七、编译安装MySQL
[root@localhost opt]# tar zxvf mysql-5.7.17.tar.gz 解压源码包
[root@localhost opt]# tar zxvf boost_1_59_0.tar.gz -C /usr/local/
[root@localhost opt]# cd /usr/local/
[root@localhost local]# ll
总用量 4
drwxr-xr-x. 2 root root 6 4月 11 2018 bin
drwx------. 8 501 games 4096 8月 12 2015 boost_1_59_0
drwxr-xr-x. 2 root root 6 4月 11 2018 etc
drwxr-xr-x. 2 root root 6 4月 11 2018 games
drwxr-xr-x. 2 root root 6 4月 11 2018 include
drwxr-xr-x. 2 root root 6 4月 11 2018 lib
drwxr-xr-x. 2 root root 6 4月 11 2018 lib64
drwxr-xr-x. 2 root root 6 4月 11 2018 libexec
drwxr-xr-x. 2 root root 6 4月 11 2018 sbin
drwxr-xr-x. 5 root root 49 7月 15 19:44 share
drwxr-xr-x. 2 root root 6 4月 11 2018 src
[root@localhost local]# mv boost_1_59_0/ boost
[root@localhost opt]# yum -y install ncurses ncurses-devel bison cmake gcc gcc-c++ 安装环境
[root@localhost local]# useradd -s /sbin/nologin mysql 创建用户
[root@localhost opt]# cd /opt/mysql-5.7.17/
[root@localhost mysql-5.7.17]# cmake \ 编译安装
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=/usr/local/boost \
-DWITH_SYSTEMD=1
[root@localhost mysql-5.7.17]# make && make install
[root@localhost mysql-5.7.17]# chown -R mysql.mysql /usr/local/mysql
[root@localhost opt]# vim /etc/my.cnf
[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock
[mysql]
port = 3306
default-character-set=utf8
socket=/usr/local/mysql/mysql.sock
[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir=/usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
[root@localhost opt]# echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH'>>/etc/profile
[root@localhost opt]# echo 'export PATH'>>/etc/profile
[root@localhost opt]# source /etc/profile
[root@localhost opt]# cd /usr/local/mysql/ 初始化数据库
[root@localhost mysql]# bin/mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
[root@localhost mysql]# cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
[root@localhost system]# systemctl start mysqld
[root@localhost system]# systemctl enable mysqld
[root@localhost system]# systemctl status mysqld
[root@localhost system]# netstat -antp | grep mysqld
tcp6 0 0 :::3306 :::* LISTEN 21684/mysqld
[root@localhost etc]# mysqladmin -u root -p password "abc123" 添加数据库的管理员密码
Enter password:
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
SQL语句
List item关系型数据库标准语言
用于维护管理数据库
包括增删改查
SQL分类
DDL:数据定义语言
DML:数据操纵语言
DQL:数据查询语言
DCL:数据控制语言
DDL:可用于创建数据库对象(库,表,索引等)
:删除数据库和表
//
mysql> create databases school; ##创建一个school库
//
mysql> use school; ##进入school的库
lmysql>create table ky11(id int not null,name varchar(20) not null,score decimal(5,2) not null,age int (5),address varchar(50) default 'KY11',primary key(id));
##创建一个名为ky11的表,id设为整数型且非空,姓名长度设为最大20个字符集且非空,分数位5位数精确到小数点后两位且非空,年龄为五位整数(不足5位前面加0补齐),地址为最大50位字符集,默认值是KY11,主键为id.
删除指定表
drop table school.ky11;
删除指定的数据库
drop batabase school;
DML数据操纵语言
insert: 插入新数据
update:更改原数据
delete:删除数据
insert: 插入新数据
//
mysql> insert into ky11 (id,name,score,age,address) values(2,'lisi',50.889,21,'南京'); ##插入新的表数据
//
mysql> insert into ky11 values(3,'wangwu',70.999,22,'上海'),(4,'chenliu',80.899,23,'苏州'); ##一次性添加多个表数据
//
mysql> update ky11 set score='100.00',age='99' where id=2; ##一次性修改多个字段
delete:删除数据
//
mysql> delete from ky11 where id='3';
DQL:数据查询语言
select : 查询数据语言
//
mysql> select id,name from ky11; ##只查看ky11表里的id和name字段的数据
//
mysql> select id,name from ky11 where age>30; ##只查看ky11表里的id和name字段的数据,同时age大于30的记录
//
mysql> mysql> * from ky11 limit 2; ##查看前三行
//
mysql> select * from ky11 limit 1,2; ##查看第一行后面的两行内容
DCL:数据控制语言
alter :修改表名和表结构
//
mysql> alter table ky11 rename ky12; ##把表名ky11改为ky12
alter 给表ky12添加hobid字段,整数值为5
//
mysql> alter table ky12 add hobid int(5); 给表ky12添加hobid字段。整数值为5
alter 更改字段名,并设置它为唯一键
唯一键(unique key):特性是唯一,可以为空,但只允许一次空值
//
mysql> alter table ky12 change address address_new varchar(50)unique key default '地址不详';
alter删除一个字段名
//
mysql> alter table ky12 drop hobid;