數據庫html
數據庫(Database)是按照數據結構來組織、存儲和管理數據的倉庫。簡而言之,數據庫就是存儲數據的倉庫。mysql
數據的發展sql
人工管理階段 | 文件管理階段 | 數據庫管理階段 | |
時間 | 20世紀50年代中期之前 | 20世紀50年代後期至60年代中期 | 60年代後期 |
領域 | 科學計算 | 科學計算、管理 | 大規模數據、分佈數據的管理 |
硬件 | 無直接存儲設備 | 磁鼓、磁盤 | 大容量磁盤、按需增容磁帶機 |
特色 | 數據不保存,數據無共享,數據不具備獨立性。 | 可長期保存、具備必定的獨立性,文件的形式已經多樣化。 | 採用複雜的結構化的數據模型,較高的數據獨立性,最低的冗餘度,數據控制功能。數據庫
|
管理者 | 用戶管理 | 文件系統管理 | DBMS管理 |
數據庫類型編程
數據庫一般分爲層次式數據庫、網絡式數據庫和關係式數據庫三種。而不一樣的數據庫是按不一樣的數據結構來聯繫和組織的。而在當今的互聯網中,最多見的數據庫模型主要是兩種,即關係型數據庫和非關係型數據庫。常見的關係型數據庫常見的有:Oracle、DB二、PostgreSQL、Microsoft SQL Server、Microsoft Access、MySQL、浪潮K-DB 等。網絡
數據庫之Mysql |
MySQL 是最流行的關係型數據庫管理系統,在 WEB 應用方面 MySQL 是最好的 RDBMS(Relational Database Management System:關係數據庫管理系統)應用軟件之一。數據結構
MySQL 是一個關係型數據庫管理系統,由瑞典 MySQL AB 公司開發,目前屬於 Oracle 公司。MySQL 是一種關聯數據庫管理系統,關聯數據庫將數據保存在不一樣的表中,而不是將全部數據放在一個大倉庫內,這樣就增長了速度並提升了靈活性。編程語言
SQL學習函數
SQL認識性能
結構化查詢語言(Structured Query Language)簡稱SQL,結構化查詢語言是一種數據庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關係型數據庫;
SQL 是用於訪問和處理數據庫的標準的計算機語言。
SQL的功能包括查詢(Query)、操縱(Manipulation)、定義(Definition)和控制(Control)四個方面。
數據庫操做(DDL)語句 |
數據庫操做
1.建立數據庫 create datebase <數據庫名>
create database [if not exists]<數據庫名>[character set xxx] (帶條件式建立) 2.修改數據庫 alter database<數據庫名>[character set xxx]
3.查看數據庫 show databases; 查看全部數據庫 show create database <數據庫名>; 查看數據庫的建立方式 4.刪除數據庫 drop database [if exists]<數據庫名>; 5.鏈接數據庫 切換數據庫 use<數據庫名>;
數據庫表操做
建立表Student
create table tab_name(
field1 type[完整性約束條件],
field2 type,
...
fieldn type
)[character set xxx];
建立一個學生表 create table student( id TINYINT PRIMARY KEY auto_increment,#PRIMARY KEY爲表主鍵,auto_increment設置自動編號。 name VARCHAR(25), gender boolean, age INT, bumen VARCHAR(20), salary DOUBLE(7,2) )
查看錶信息
查看錶結構
desc tab_name /show columns from tab_name
mysql> desc student;
+----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+----------------+
| id | tinyint(4) | NO | PRI | NULL | auto_increment |
| name | varchar(25) | YES | | NULL | |
| gender | tinyint(1) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
| bumen | varchar(20) | YES | | NULL | |
| salary | double(7,2) | YES | | NULL | |
| workdate | tinyint(1) | YES | | NULL | |
+----------+-------------+------+-----+---------+----------------+
7 rows in set (0.00 sec)
show tables 當前數據庫中全部的表
mysql> show tables;
+---------------+
| Tables_in_wjh |
+---------------+
| student |
+---------------+
1 row in set (0.00 sec)
show create table tab_name 查看當前數據庫表建表語句
修改表結構
主鍵設置:
單一主鍵
CREATE TABLE employee(
id INT primary key, (id爲該表的惟一主鍵)
name varchar(20),
age INT,
)
多主鍵(多個外鍵)
CREATE TABLE employee(
id INT,
book_id INT,
name varchar(20),
age INT,
primary kry(id,book_id) #id和book_id爲該的主鍵。
)
表記錄操做(DML語句)之增、刪除、改、查 |
增長記錄
增長一條記錄 insert [into] table_name(field1,filed2 ******) values(value1,value2,*****); 增長多條記錄 insert [into] table_name values(value1,value2,*****),(value10,value12,*****);
刪除記錄
delete from table_name [where ....] #where 後面檢索出要刪除的數據。若是where條件爲空,則是刪除表中全部記錄。 truncate table table_name;使用truncate刪除表中記錄。與delete刪除方式不同,truncate 是直接銷燬表,再建立一個新表。
修改記錄
update table_name set field1=value1,field2=value2,......[where 語句] #set是要修改的操做,where是檢索出要修改的記錄。
查詢記錄
基本查詢 select * from table_name;查詢表中全部字段和記錄。 select (field1,field2,field13,...) from table_name where .......; 若是要查找表中全部記錄,字段可用*代替;where查詢條件select * from table_name;表示全部記錄 select (field1,field2,field13,...) from table_name; 也能夠用逗號隔開的字段來選擇查詢 select distinct field from table_name; 查詢不重複的記錄 ORDER BY 排序 在不少查詢數據庫記錄需用到排序的用法。 desc和asc是排序關鍵字,desc是降序、asc是升序排列 ORDER BY 排序,默認是升序 select * from table_name order by (field);一個字段排序。 select * from table_name order by (field1,field2 .....) desc; 多個字段依次排序。 Limit 限制 限制可用到作分頁的用法。 select * from table_name order by (field) limit (起始值),(行數); 若是沒有設置初值則從第一條數據開始。、 Group by 分組 按分組條件分組後每一組只會顯示第一條記錄。 select * from table_name group by (field1) 按照字段1分組。 select * from table_name group by (2) 按照第二個字段分組。 聚合函數 sum(求和),count(*)(記錄數),max(最大值),min(最小值) having是在分組後進行數據過濾。而where不能在group by後使用。 Regexp正則 select * from table_name where name regexp ‘^ppy’; select * from table_name where name regexp ‘hap$’; select * from table_name where name regexp ‘p{2}$;
外鍵約束
外鍵操做
添加外鍵 alter table <表名> add constraint <外鍵名> foreign key<字段名> REFERENCES <外表表名><字段名>; 刪除外鍵 alter table <表名> drop foreign key <外鍵名>; innodb四種用法 1.cascade。從父表中刪除或更新對應的行,同時自動的刪除或更新子表中匹配的行。 eg 外鍵的級聯刪除: FOREIGN KEY (<父表主鍵>) REFERENCES <子表>(<主鍵>) ON DELETE CASCADE
2.set null。 從父表中刪除或更新對應的行,同時將子表中的外鍵列設爲空。 eg 刪除 FOREIGN KEY(<父表主鍵>)REFERENCES<子表>(<主鍵>) ON DELETE SET NULL
3.no cation: 拒絕刪除或者更新父表。 4.Restrict方式 :拒絕對父表進行刪除更新操做。
多表查詢
1.笛卡兒積查詢
SELECT * FROM <數據表1>,<數據庫表2>;
2.內鏈接
select * from <數據表1>,<數據庫表2> where <數據表1>.<主鍵> = <數據表2>.<主鍵>;
3.外鏈接
左外鏈接
select * from <數據庫1> left join <數據庫2> on <數據表1>.<主鍵> = <數據表2>.<主鍵>;
右外鏈接
select * from <數據庫1> right join <數據庫2> on <數據表1>.<主鍵> = <數據表2>.<主鍵>;
全外鏈接
select * from <數據庫1> left join <數據庫2> on <數據表1>.<主鍵> = <數據表2>.<主鍵>
UNION
select * from <數據庫1> right join <數據庫2> on <數據表1>.<主鍵> = <數據表2>.<主鍵>;
4.複合查詢
select * from <數據庫1>,<數據庫2> where <數據表1>.<主鍵> = <數據表2>.<主鍵> and <字段> + 條件;
5.子查詢(嵌套查詢)
帶有IN謂詞的子查詢
eg: select sno,sn
from student
where sno IN
(select son
from SC
where con IN
( select cno
from Course
where cn=‘數據結構’
)
)
mysql索引認識 |
什麼是索引?
索引(index)也叫作「鍵(key)」,它是是存儲引擎用於快速查找記錄的一種數據結構,經過合理的使用數據庫索引能夠大大提升系統的訪問性能。簡單來講,索引就是至關於一本書的目錄,方便讀者找到想要的章節和頁碼。一張表能夠存在多種和多個索引,能夠加快查詢效率,但建立索引和維護索引會耗費時間,隨着數據量的增長而增長。
索引類型
1.常規索引
常規索引,也叫普通索引(index或key)。一張數據表中能夠有多個常規索引。
ALTER TABLE <數據庫名> ADD INDEX <索引名> (字段名);
2.主鍵索引
主鍵索引(Primary Key),也簡稱主鍵。提供惟一性約束,而且一張表只有一個主鍵。
ALTER TABLE <數據庫名> ADD PRIMARY KEY <索引名> (字段名);
3.惟一索引
惟一索引(Unique Key),並提供惟一性約束。一張表中能夠有多個惟一索引
ALTER TABLE <數據庫名> ADD Unique <索引名> (字段名);
4.外鍵索引
外鍵索引(Foreign Key),簡稱外鍵。外鍵會自動和對應的其餘表的主鍵關聯。
ALTER TABLE <表名> ADD CONSTRAINT <外鍵名> foreign key<字段名> REFERENCES <外表表名><字段名>;
5.組合索引
組合索引(Combination Key),是經過表中多個字段組合而成的索引。
ALTER TABLE <數據庫名> ADD Index <索引名> (字段名,字段名.......);
6.全文索引.
全文索引(Full Text)提升全文搜索的查詢效率.
ALTER TABLE <數據庫名> ADD FULL TEXT <索引名> (字段名,字段名.......);