数据库基础知识

关系模型:结构化数据模型
实体-关系模型
对象关系模型:基于对象的数据模型
半结构化数据模型: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

相关推荐

  • shell脚本编写规范

    1 脚本名以.sh结尾,名称尽量见名之意,比如ClearLog.sh Clear_Log.sh clearlog.sh SerRestart.sh Ser_Restart.sh;2 尽量使用UTF-8编码,注释及输出尽量使用英文;3 一般给到执行权限,但一些关于变量的配置文件不用加执行权限;4 执行的时候可以使用bash 执行,或者使用bash -x执行,可…

    Linux干货 2017-04-16
  • 何为正则表达式?

    何为正则表达式?   UNIX/Linux上有许多文本处理工具,其中最主要最重要要属grep、sed、和awk三种了,被称为文本处理三剑客。但是要完全认识他们的各种功能,则必须现在正则表达式及其元字符的使用上打好基础。 什么是正则表达式呢?正则表达式(regular expression,RE)是一种字符模式,用于在查找过程中匹配指定的字符。正则表…

    Linux干货 2016-08-16
  • 多实例

    多实例

    Linux干货 2018-01-29
  • N25第1周作业

    1.计算机的组成及功能 地址:博客园http://www.cnblogs.com/qingyangzi/p/6133274.html 2.linux主要的发行版及其区别和联系 地址:博客园http://www.cnblogs.com/qingyangzi/p/6135801.html 3.linux哲学思想 地址:博客园http://www.cnblogs.…

    Linux干货 2016-12-05
  • 一键搭建mysql集群系列二

    mysql 5.7  主从复制 本节是在上一节的基础之上做的操作,上节我们通过脚本实现了一键自动化安装mysql5.7,这次我们要在三台机器上部署msyql5.7,并实现主从复制,实现的宗旨是,能自动化,就尽量自动化,实在不能自动化,那就手工化 用的脚本和文件说明1.install_mysql.sh 自动化安装mysql脚本2.ntpdate.sh 时间同步…

    2017-05-21
  • 每日一练–8.10 脚本

    1、编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小。 2、编写脚本/root/bin/backup.sh,可实现每日将/etc/目录备份到/root/etcYYYY-mm-dd中 3、编写脚本/root/bin/disk.sh,显示当前硬盘分区中空…

    Linux干货 2016-08-15