数据库基础知识

关系模型:结构化数据模型
实体-关系模型
对象关系模型:基于对象的数据模型
半结构化数据模型:XML(扩展标记语言)

SQL:Structure Query Language结构化查询语言
DML:数据操作语言
INSERT DELETE SELECT UPDATE
DDL:数据定义语言
CREATE DROP ALTER
DCL: 数据控制语言
GRANT REVOKE

RDB对象:
数据库、表、索引、视图、用户、存储过程、存储函数、触发器、事件调度器
约束: 域约束:数据类型约束
外键约束:引用完整性约束
主键约束:某字段能惟一标识此字段所属的实体,并且不允许为空
一张表中只能有一个主键
惟一性约束:每一行的某字段都不允许出现相同值,可以为空
一张表中可以有多个
检查性约束: check

关系运算:
投影:只输出指定属性
选择:只输出符合条件的行
自然连接:具有相同名字的属性上所有取值相同的行;
笛卡尔积:(a+b)*(c+d)=ac+ad+bc+bd
并:集合运算

SQL语言的组成部分:
DDL
DML
完整性定义语言:DDL的一部分功能
视图定义:
事务控制:
授权:DCL

使用程序设计语言和RDBMS交互:
动态SQL:程序设计语言使用函数(MySQL_connect())或者方法与RDBMS服务器建立连接,并进行交互;通过建立连接向SQL服务器发送查询语句,并将结果保存至变量中而后进行处理;

行:定长,变长
文件中记录组织
表结构定义文件,表数据文件
表空间:table space
数据字典:Data Dictionary

MariaDB:
特性:存储引擎Aria XtraDB
更多的扩展
更多的测试工具

用户密码修改:
# mysqladmin -u USERNAME -h HOSTNAME password ‘NEW_PASS’ -p
SET PASSWORD FOR ‘USERNAME’@’HOST’=PASSWORD(‘new_pass’);
UPDATE MySQL.user SET PASSWORD=PASSWORD(‘new_pass’) WHERE CONDITION;

源码安装MariaDB
groupadd useradd mysql
tar xf mariadb-xx.tar.gz -C /usr/local
cd /usr/local/mariadb-xx
兼容性考虑 ln -sv mariadb-xx mysql
修改属组chown -R root:mysql
目录文件夹 建议逻辑卷
mariadb文件夹目录scripts/mysql_install_db –user=mysql –datadir=/pathfile 元数据
服务启动文件

MySQL客户端工具:
MySQL
mysqldump
mysqladmin
mysqlcheck
mysqlimport

配置文件my.cnf及配置文件的查找次序 /etc/my.cnf –> /etc/MySQL/my.cnf –> $MySQL_HOME/my.cnf –> –default-extra-file=/path/to/somefile –> ~/.my.cnf
[mysqld]

数据类型:
数值型
精确数值 int
近似数值 float double
字符型
定长:CHAR(#)、BINARY
变长:VARCHAR(#)、VARBINARY
text, blob
ENUM, SET
日期时间型
date, time, datetime, timestamp
数据类型:
1、存入的值类型;
2、占据的存储空间;
3、定长还变长;
4、如何比较及排序;
5、是否能够索引;

MySQL> SHOW CHARACTER SET;
MySQL> SHOW COLLATION;
ag:CREATE TABLE test(ID INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, Name CHAR(20))
MySQL> SELECT LAST_INSERT_ID();

SQL语句:数据库 表 索引 视图 DML
数据库语法:
CREATE DATABASE|SCHEMA [IF NOT EXISTS] db_name [CHARACTER SET=] [COLLATE=]
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name                                                                                        1、直接定义一张空表;
2、从其它表中查询出数据,并以之创建新表;
3、以其它表为模板创建一个空表;
语法:CREATE TABLE [IF NOT EXISTS] tb_name (col_name col_defination, constraint )

CREATE TABLE tb1 (id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, Name CHAR(20) NOT NULL, Age TINYINT NOT NULL) ENGINE [=] engine_name

单字段:
PRIMARY KEY
UNIQUE KEY

单或多字段:
PRAMARY KEY (col,…)
UNIQUE KEY (col,…)
INDEX (col,…)
键也称作约束,可用作索引,属于特殊索引(有特殊限定):B+Tree

修改表定义:
ALTER TABLE
添加、删除、修改字段
添加、删除、修改索引
改表名
修改表属性

删除表:DELETE * FROM TABLE;

查询语句类型:简单查询 多表查询 子查询
SELECT list FROM tb WHERE ID=X
SELECT * FROM tb_name;
SELECT [DISTINCT] * FROM tb_name WHERE ; 选择

FROM子句: 要查询的关系 表、多个表、其它SELECT语句
WHERE子句:关系表达式
逻辑关系:AND OR NOT
BETWEEN … AND …
LIKE ‘’
%: 任意长度任意字符
_:任意单个字符
REGEXP, RLIKE
IN
IS NULL
IS NOT NULL

ORDER BY field_name {ASC|DESC} 排序
LIMIT子句:LIMIT [offset,]Count
聚合函数:SUM(), MIN(), MAX(), AVG(), COUNT()
GROUP BY: 分组
HAVING qualification

视图VIEW: 存储下来的SELECT语句,是一张虚表;
基于基表的查询结果
CREATE VIEW
物化视图:SELECT

通过JDBC与Mysql数据库交互:
更新操作:增 删 改 。
Statement statement = null;
conn=getConnection();获取连接
String sql = null;准备sql语句
sql = “insert update delete…”;
System.out.println(sql);
statement = conn.createStatement();获取操作sql的createStatement对象
statement.executeUpdate();具体执行
statement!=null;
statement.close();
conn!=null
conn.close();关闭连接                                                                                                                                                     查询操作:
Connection conn = null;
Statement statement = null;
ResultSet rs = null;
conn=getConnection();获取连接
statement = conn.createStatement();获取操作sql的createStatement对象
String sql = null;
sql = “select…”;准备sql
rs = statement.executeQuery();执行查询 得到ResultSet
处理ResultSet
while(rs.next()){
int id = rs.getInt(1);
String name = rs.getStirng(“name”);
}

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/87561

(0)
cuicui
上一篇 2017-09-25 09:42
下一篇 2017-09-25 14:25

相关推荐

  • web服务及常见配置

    一次HTTP请求过程1、建立连接:接收或拒绝连接请求2、接收请求:接收客户端请求报文中对某资源的一次请求的过程Web访问响应模型(Web I/O)单进程I/O模型:启动一个进程处理用户请求,而且一次只处理一个,多个请求被串行响应多进程I/O模型:并行启动多个进程,每个进程响应一个连接请求复用I/O结构:启动一个进程,同时响应N个连接请求实现方法:多线程模型和…

    Linux干货 2017-10-09
  • Linux系统的基础命令及事例讲解

    Linux操作系统是系统运维领域里逐步强大,逐步受到关注的一款开源系统,它包含里大量的命令及程序,以下是我在这一周内学到的几种命令及获取帮助命令的方法: 1  tty    tty是查看终端设备的一个命令,输入之后系统会提示如下:    /dev/pts/1   其中pts代表是在命令行接口下终端类…

    Linux干货 2016-10-30
  • VIM 文 本 编 辑 工 具-20160808

    VIM 文 本 编 辑 工 具 §·学习大纲   一·使用vi和vim的三种主要模式 二·扩展模式下基本操作 三·命令模式下基本操作 四·编辑模式下基本操作 五·VIM寄存器 六·编辑二进制文件 七·可视化模式 八·多文件模式 九·使用多个“窗口” 十·定制vim的工作特性 十一·VIM了解更多 十二·练习题     §·使用v…

    Linux干货 2016-08-10
  • DNS转发、ACL以及VIEW

    DNS全称是Domain Name System的简称,即域名系统。因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP/TCP协议之上,使用端口号53。 DNS转发、ACL以及VIEW…

    Linux干货 2016-12-08
  • 总考十分的学习宣言

    目标:按照学习线路图完成所有视频的学习,完成每一次的博客作业及云学堂考试,成功转型互联网运维。 宣言:我一定要转型互联网运维工程师,并在这个领域不断坚持耕耘下去,成为行业的专家,拿高薪,挣so much money,可以有钱去看看世界,去台湾环岛,去日本爬天空树,去北欧看极光,去南极看企鹅,去看盐湖和大象,去非洲看动物迁徙。一生的时间是有限的,在有限的时间里…

    Linux干货 2016-10-24