数据库基础知识

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

相关推荐

  • 8.1作业

    创建用户gentoo,附加组为bin和root,默认shell为/bin/csh,注释信息为“Gentoo Distribution” [root@localhost wang]# useradd -G bin,root -s /bin/csh -c "Gentoo&n…

    Linux干货 2016-08-02
  • CentOS计划任务详解

    一、计划任务应用场景:        需要每天对服务器上的数据进行备份,但是白天服务器的访问量较大,服务器承受着较大的压力,备份任务只能在夜晚服务器较空闲时才能进行。或者需要临时在某时间点执行一个任务等,都需要用到计划任务的功能。 二、计划任务分类:    &…

    Linux干货 2016-09-09
  • linux 文本处理工具 grep cut sort等

    linux day 7 间歇性回忆 自动属于这个组 是  SGID 的功能 chmod g+s /data/testdir setfacl —m g:g2:rwx /data/testdir setfacl -m b:g:g2:rwx /data/testdir setfacl -m d:g:g3:r testdir chmod o= testdi…

    Linux干货 2016-08-08
  • Linux发行版之间的联系与区别及其哲学思想。

    一、Linux发行版之间的联系与区别。 随着Linux不断发展,Linux所支持的文件系统类型也在迅速扩充。很多的数据中心服务器上都运行着Linux,可以节省大量的许可证费用及维护费用。但伴随着Linux新版本的发行,其中每一个不同版本的Linux所支持的文件系统类型都有所不同。Linux的发行版有数百种之多。 1、Debian:是指一个致力于创建自由操作系…

    Linux干货 2016-10-30
  • 使用 nice、cpulimit 和 cgroups 限制 cpu 占用率

    Linux内核是一名了不起的马戏表演者,它在进程和系统资源间小心地玩着杂耍,并保持系统的正常运转。 同时,内核也很公正:它将资源公平地分配给各个进程。 但是,如果你需要给一个重要进程提高优先级时,该怎么做呢? 或者是,如何降低一个进程的优先级? 又或者,如何限制一组进程所使用的资源呢? 答案是需要由用户来为内核指定进程的优先级 大部分进程启动时的优先级是相同…

    Linux干货 2015-02-14
  • if、case 语法

    1. 条件选择 if 语句         选择执行:              单分支      &nbs…

    Linux干货 2016-08-22