Mysqlday01(Mysql简介,sql简介,分类)
一、數(shù)據(jù)庫分類
數(shù)據(jù)庫通常分為層次式數(shù)據(jù)庫、網(wǎng)絡式數(shù)據(jù)庫和關系式數(shù)據(jù)庫。
現(xiàn)在最常用的兩種數(shù)據(jù)庫:關系型數(shù)據(jù)庫、非關系型數(shù)據(jù)庫。
關系型數(shù)據(jù)庫:Oracle和MySql
非關系型數(shù)據(jù)庫:
鍵值存儲數(shù)據(jù)庫:Redis
列存儲數(shù)據(jù)庫:HBase
面向文檔數(shù)據(jù)庫:MongoDB
圖形數(shù)據(jù)庫:Neo4J
MySQL發(fā)展歷程
1996年:MySQL 1.0版本正式發(fā)布;
1999-2000年:Monty團隊成立MySQL AB公司,并將MySQL支持事務處理;
2001年:InnoDB存儲引擎集成到MySQL中;
2004年:MySQL發(fā)布4.1版本,新增子查詢;
2005年:MySQL發(fā)布5.0版本,增加存儲過程、觸發(fā)器、視圖等功能;
2008年:1月份被Sun公司收購;
2009年:Oracle公司收購了Sun公司,MySQL轉(zhuǎn)入Oracle旗下;
2010年:MySQL5.5版本發(fā)布;
2015年:MySQL5.7 GA版本發(fā)布;
2018年:MySQL8.0 GA版本發(fā)布;
MySQL不同版本的重要改進
4.1:增加子查詢的支持;字符集中增加了對UTF-8的支持;
5.0:增加了視圖、過程、觸發(fā)器的支持,增加了information_schema系統(tǒng)數(shù)據(jù)庫;
5.1:增加了表分區(qū)的支持;支持基于行的復制(row-based-replication);
5.5:InnoDB成為默認存儲引擎;支持半同步復制;引入performance_schema動態(tài)性能視圖;
5.6:支持部分Online DDL操作;支持ICP/BKA/MRR等優(yōu)化器改進;引入GTID;支持多庫并行復制;
5.7:密碼安全性提高;支持多線程并行復制、多源復制;支持JSON;引入sys系統(tǒng)庫;引入MGR;
8.0:在線持久化全局參數(shù);大幅提高數(shù)據(jù)字典性能;引入窗口函數(shù)、ROLE、直方圖、降序索引、不可見索引;修復自增列重啟BUG。
二、SQL簡介
什么是SQL:
結(jié)構(gòu)化查詢語言
使我們有訪問數(shù)據(jù)庫的能力
是一種ANSI的標準計算機語言
SQL能做什么:
SQL面向數(shù)據(jù)庫執(zhí)行查詢
SQL可在數(shù)據(jù)庫中插入新的記錄
SQL可更新數(shù)據(jù)庫中的數(shù)據(jù)
SQL可從數(shù)據(jù)庫刪除記錄
SQL可創(chuàng)建新數(shù)據(jù)庫
SQL可在數(shù)據(jù)庫中創(chuàng)建新表
SQL可在數(shù)據(jù)庫中創(chuàng)建存儲過程
SQL可在數(shù)據(jù)庫中創(chuàng)建視圖
SQL可以設置表、存儲過程和視圖的權限
SQL是一種標準,但是:
SQL是一門ANSI的標準計算機語言,用來訪問和操作數(shù)據(jù)庫系統(tǒng)。SQL語句用于查詢和更新數(shù)據(jù)庫中的數(shù)據(jù)。SQL可與數(shù)據(jù)庫程序協(xié)同工作,比如MS-Access、DB2、MS SQL Server、Oracle、MySQL以及其他數(shù)據(jù)庫系統(tǒng)。
不幸地是,存在著很多不同版本的SQL語言,但是為了與ANSI標準相兼容,它們必須以相似的方式共同地來支持一些主要的關鍵詞(比如SELECT、UPDATE、INSERT、DELETE、WHERE等)。
注釋:除了SQL標準以外,大部分SQL數(shù)據(jù)庫程序都擁有它們自己私有的擴展。
分類:
DDL(Data Definition Language):數(shù)據(jù)定義語言,定義了對不同數(shù)據(jù)段,數(shù)據(jù)庫,列,表,索引,等數(shù)據(jù)庫對象。常用關鍵詞:creare、alter、drop。
DCL(Data Control Language):數(shù)據(jù)控制語言,用于控制不同數(shù)據(jù)段直接的許可和訪問級別的語句,這些語句定義了數(shù)據(jù)庫、表、字段、用戶的訪問權限和安全級別。常用的關鍵字是:grant,revoke等。
DML(Data Manipulation Language):數(shù)據(jù)操作語言,用于增刪改查數(shù)據(jù)庫記錄,并檢查數(shù)據(jù)庫完整性。常用的關鍵字是:insert、delete、update、select。
三、DDL
語法:
CREATE DATABASE dbname
例:創(chuàng)建數(shù)據(jù)庫test1,命令如下:
create database test1;
執(zhí)行結(jié)果如下圖所示:
Query OK, 1 row affected (0.24 sec) 可以分為3個部分
Query OK:表示上面的命令執(zhí)行成功
1 row affected:表示操作只影響了數(shù)據(jù)庫中一行的記錄
0.24 sec:記錄了操作執(zhí)行的時間
查看系統(tǒng)中有哪些數(shù)據(jù)庫: show databases;
information_schema:主要存儲系統(tǒng)中的一些數(shù)據(jù)庫對象信息,比如用戶表信息、列信息、權限信息、字符集信息、分區(qū)信息等。每個用戶都可以查看這個數(shù)據(jù)庫,但根據(jù)權限的不同看到的內(nèi)容不同。
performance_schema:MySQL5.5引入的系統(tǒng)庫,用于存儲系統(tǒng)性能相關的動態(tài)參數(shù)表。
sys:MySQL5.7引入的系統(tǒng)庫,本身不記錄系統(tǒng)數(shù)據(jù),基于information_schema和performance_schema之上,封裝了一層更加易于調(diào)優(yōu)和診斷的系統(tǒng)視圖。
mysql:存儲系統(tǒng)的用戶權限信息。
sakila和world:兩個為樣例數(shù)據(jù)庫。
選擇數(shù)據(jù)庫:use dbname;
查看數(shù)據(jù)庫下的表:show tables;
刪除數(shù)據(jù)庫:drop dbname;
創(chuàng)建表
基本語法:
1 CREATE TABLE tablename( 2 column_name_1 column_type_1 constraints, 3 4 column_name_2 column_type_2 constraints, 5 6 ... ... 7 8 column_name_n column_type_n constraints); 9 ) 10 11 中文翻譯: 12 13 create table +自己的表名( 14 15 字段名稱 字段數(shù)據(jù)類型 約束, 16 17 字段名稱 字段數(shù)據(jù)類型 約束, 18 19 字段名稱 字段數(shù)據(jù)類型 約束 20 21 )
primary key :主鍵約束 不能為空并且唯一
not null :不能為空
varchar():可變的字符串
date :日期 年月日
decimal :數(shù) (10,2) 保留幾位小數(shù)點
int 整型
例:創(chuàng)建一個名稱為emp的表。表中包括ename(姓名)、hiredate(雇用日期)、sal(薪水)和deptno(部門編號)4個字段,字段類型分別為varchar(10)、date、decimal(10,2)、int(2)。
查看表:desc tablename;
查看創(chuàng)建表的sql語句:show create tablename /G; (/G使得記錄能夠按照字段豎向排列)
刪除表:drop table tablename;
修改表:alter table 表名 modify 字段名 數(shù)據(jù)類型;
增加表字段:alter table 表名 add 字段名 數(shù)據(jù)類型 約束;
刪除表字段:alter table 表名 drop 字段名;
修改表中字段名:alter table 表名 change 舊字段名 新字段名 數(shù)據(jù)類型;
修改表中字段排列順序:alter table 表名 add|modify 字段名 數(shù)據(jù)類型 after 已有字段名; (修改或添加字段到指定字段的下面位置)
修改表名:alter table tablename rename to 新表名;
四、DML
1.增(insert):
基本語法:insert into 表名(字段名1,字段名2,......) values(值1,值2) ;
INSERT INTO tablename(field1,field2,...fieldn) VALUES(value1,value2,...,valuen);
注意事項:
可以不用指定列名,但是values后面應該和字段順序一致。
含可空的字段,非空但含有默認值的字段以及自增字段,可以不在insert后的字段列表里出現(xiàn),values后面對應字段的值。
2.改(update):
基本語法:update 表名 set 字段名1=值1,字段名2=值2 where條件
UPDATE tablename SET field1=value1,field2=value2,...fieldn=valuen [WHERE CONDITION];
同時更新多個表中數(shù)據(jù)
UPDATE t1,t2,...tn set t1.field1=expr1,tn.fieldn=exprn [WHERE CONDITION]
注意:多表更新的語法更多地用于根據(jù)一個表的字段來動態(tài)地更新另一個表的字段。
3.查(select):
基本語法:
SELECT * FROM tablename [WHERE CONDITION];
select 字段名,字段名.... from 表名 可以添加where+條件
其中”*“表示要將所有的記錄都選也來,也可以用逗號分割所有字段來代替。
查詢不重復的記錄
distinct關鍵字
條件查詢
where關鍵字
=、>、<、<=、>=、!=
and、or
總結(jié)
以上是生活随笔為你收集整理的Mysqlday01(Mysql简介,sql简介,分类)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 十二个生活习惯,增加你的心灵压力
- 下一篇: 优秀程序员必备的15大技能