關系模型:結構化數據模型
實體-關系模型
對象關系模型:基于對象的數據模型
半結構化數據模型: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.www58058.com/87561