create table emp(id int,dept_id int,mgr_id int,name char(20),post char(20),salary float,start_time date,birth date);
insert into emp values(2019003,1001,2019001,『hehe』,『p1』,5000,str_to_date(『2019-9-16』,』%y-%m-%d』),str_to_date(『1999-9-16』,』%y-%m-%d』));
insert into emp values(2019004,1001,2019003,『haha』,『p3』,5500,sysdate(),str_to_date(『1999-9-16』,』%y-%m-%d』));
13、日期資料
注意:資料庫中的日期是一種特殊型別,需要一些函式進行轉換。
oracle資料庫
to_date(date_str,format) 把字串按照一定的格式轉換成日期資料
to_char(date,format) 把日期資料按照一定的格式轉換成字串
yyyy 四位年份
yy 兩位年份
mm 整數月份
mon 月份簡拼
month 月份全拼
dd 整數天數
dy 週幾簡拼
day 週幾全拼
hh12 12小時制
hh24 24小時制
mi 分鐘
ss 秒
mysql資料庫
str_to_date(str,format) 字元轉日期
date_format(date,format) 日期轉字串
%y 四位年份
%y 兩位年份
%m 月份全拼
%m 整數月份
%d 帶英文本尾的天數
%d 整數天數
sysdate() 獲取當前系統時間
14、子查詢
把乙個查詢的結果當作另乙個查詢的資料來源。
例:查詢員工表中誰是領導
select empno,ename from emp where empno in (select distinct mgr from emp);
例:查詢普通員工資訊
select empno,ename from emp where empno not in (select distinct mgr from emp where mgr not is null);
注意:空值能和任意資料匹配
一、資料約束
約束:對錶中的資料加以限制,不允許非法資料插入。
注意:mysql資料庫不能很好的支援約束條件。
主鍵:非空且唯一
primary key
create table student(id int primary key,name char(20),*** char);
insert into student values(123,『hehe』,『m』);
唯一:資料不能重複
unique
create table student2(id int primary key,name char(20) unique,*** char);
insert into student2 values(123,'hehe','m');
非空:資料不能為空,插入時不能省略
not null
create table student3(id int primary key,name char(20) unique,*** char not null);
insert into student3(id,name) values(123,'hehe');
檢查:設定檢查條件
check
create table student4(id int primary key,name char(20) unique,*** char not null,age int check(age > 8));
insert into student4 values(124,'haha','w',6);
外來鍵:與主鍵配合使用,用於表連線,外來鍵的資料必須要在主鍵能夠找到。
先主鍵create table student(id int primary key,name char(20),*** char);
insert into student values(321,'xiaoming','m');
後外來鍵constraint 《外鍵名》 foreign key 欄位名
references 《主表名》 主鍵列;
create table report(id int,mr float,cr float,er float,constraint fk_id foreign key(id) references student(id));
insert into report values(123,80,90,100);
此時在插入資料時,必須要確定主外來鍵字段的值在主鍵中能夠找到。
注意:主鍵在刪除資料時,必須把外來鍵對應的資料先刪除,才能刪除主鍵。
級聯刪除 on delete cascade
create table report2(id int,mr float,cr float,er float,constraint fk_id foreign key(id) references student2(id) on delete cascade);
二、檢視
檢視就是一張虛擬的表,它的本質是乙個sql語句。
檢視的優點是使用方便,還不占用多餘儲存空間,缺點是效率低,不適合長期頻繁查詢。
create view 檢視名 as (select);
create view student_view as (select student.id,name,***,mr,cr,er from student,report);
三、索引
是資料庫為了提高查詢速度所建立的一種優化機制。
自動建立:當欄位具有唯一性結束時,系統會自動為此字段建立索引。
手動建立:
alter table 表名 add index index_name 欄位名;
建立索引時即耗費時間,又耗費空間。
四、關係型資料庫三正規化
1、字段不可再拆分(原子),所有的關聯式資料庫必須滿足第一正規化。
2、滿足第一正規化的前提下,當有重複列資料的前提下應該再拆分一張表。
3、資料之間不應該有依賴性。
五、使用c++語言連線mysql資料庫
1、安裝工具庫
sudo apt-get install libmysqlclient-dev
安裝完成後,需要的標頭檔案安裝在 /usr/include/mysql目錄下
2、開啟/usr/include/mysql/mysql.h標頭檔案,常用的函式介面都在此標頭檔案中。
--初始化mysql結構
mysql* mysql_init(null);
--連線到mysql伺服器
mysql* mysql_real_connect(mysql *mysql,
const char *host,主機名或ip位址
const char *user,使用者名稱
const char *passwd,密碼
const char *db,資料庫
unsigned int port,埠號
const char *unix_socket,null
unsigned long clientflag); 0
--設定字符集
int mysql_set_character_set(mysql *mysql, const char *csname);
--執行指定的sql查詢語句
int mysql_query(mysql *mysql, 'select * from student_view;');
--返回上次執行語句的結果列的數目
unsigned int mysql_field_count(mysql *mysql);
--檢索完整的結果集至客戶端
mysql_res* mysql_store_result(mysql *mysql);
--從結果集中獲取下一行
mysql_row mysql_fetch_row(mysql_res *result);
--釋放結果集使用的記憶體
void mysql_free_result(mysql_res *result);
--關閉伺服器連線
void mysql_close(mysql *sock);
資料庫 mysql(三)
檢索資料 select from table 表跟其他資料庫語法一般一樣 sql語句不區分大小寫 多條sql語句必須以分號 分隔 一定要認識到雖然sql是不區分大小寫的,但有些標識 符 如資料庫名 表名 列名 可能不同 在處理sql語時,其中所有空格都被忽略 分頁 select name from ...
MySQL資料庫(三)
資料庫表中資料進行的新增 刪除和修改操作均屬於資料庫操縱語言 dml 這類型別的 sql語句需要執行 commit 資料控制語言 dcl 才能使之起作用,執行 rollback 資料控制語言 dcl 才能撤銷 dml語言操作,mysql 資料庫執行 dml後預設自動執行 commit 操作 mysq...
mysql資料庫屬性 MySQL資料庫的三個屬性
mysql資料庫的三個屬性 閱讀 236 mysql資料庫的三個屬性是什麼?一般大家對mysql的了解可能停留在概念的層面上,而對於mysql資料庫三大屬性的了解相對較少。今天就跟大家聊聊mysql資料庫的三大屬性。1 原子性,要求屬性具有原子性,不可再分解。表 欄位1 欄位2 欄位2.1 欄位2....