sql是Structured Query Language(結構化查詢語言)的縮寫。sql是專為資料庫而建立的操作指令集,是一種功能齊全的資料庫語言。
sql規範
在資料庫中,sql語句不區分大小寫(建議用大寫)。但字元串常量區分大小寫。建議指令大寫,表名庫名小寫
sql語句可單行或多行書寫,以;結尾。關鍵詞不能跨多行或簡寫
用空格和縮進來提高語句的可讀性。字句通常位于獨立行,便于編輯,提高可讀性
注釋:單行注釋:--
多行注釋:/*.....*/
DDL,DML和DCL
下載下傳
https://dev.mysql.com/downloads/mysql/
安裝
解壓到任意目錄
初始化服務端
啟動服務端
用戶端連接配接
密碼預設為空
檢視内置的檔案夾:show databases;
建立目錄:create database db1;
設定環境變量
<code>【右鍵計算機】</code><code>-</code><code>-</code><code>》【屬性】</code><code>-</code><code>-</code><code>》【進階系統設定】</code><code>-</code><code>-</code><code>》【進階】</code><code>-</code><code>-</code><code>》【環境變量】</code><code>-</code><code>-</code><code>》【在第二個内容框中找到 變量名為Path 的一行,輕按兩下】 </code><code>-</code><code>-</code><code>> 【将MySQL的</code><code>bin</code><code>目錄路徑追加到變值值中,用 ; 分割】</code>
window服務
安裝mysql服務
出現這個情況用管理者身份運作cmd就能解決
cmd路徑:C:\Windows\System32,右鍵管理者身份運作
服務安裝成功
如果還不行就結束mysql程序
移除mysql服務
啟動mysql服務
一樣的效果
或者
停止mysql服務
檔案夾【資料庫】
檔案【表】
資料行【行】
資料行
use 檔案夾; 進入這個檔案夾
show tables; 檢視這個檔案夾下的檔案
建立表
create table 表名(id int,name char(10)) engine=innodb default charset=utf8
#innodb引擎, 支援事務,原子性操作,推薦寫上
create table t1(
列名 類型 null,
列名 類型 not null,
列名 類型 not null auto_increment primary key,
id int,
name char(10)
)engine=innodb default charset=utf8;
null:可以為空
not null:不可以為空
auto_increment表示:自增 一個表裡面隻有一個自增列
primary key:不能限制(不能重複且不能為空) 加速查找 一個表裡面隻有一個主鍵
檢視表資訊
desc 表名; 檢視表結構
show colums from 表名; 檢視表結構
show tables; 檢視目前資料庫中的所有表
show create table 表名 \G; 檢視目前資料庫表建表語句,\G能豎着看
修改表結構
增加列(字段)
alter table 表名 add 列名 類型[完整性限制條件]
修改列類型
alter table 表名 modify 列名 類型[完整性限制條件]
修改列名
alter table 表名 change 列名 新列名 類型[完整性限制條件]
删除列
alter table 表名 drop 列名
修改表名
rename table 表名 to 新表名;
修改該表所用的字元集
alter table 表名 character set utf8
修改自增的值
alter table 表名 auto_increment=10
清空表
delete from 表名 下次id從原來的自增
truncate table 表名 速度快,id從1開始
删除表
drop table 表名
表記錄的增删改查
增加表記錄
insert into 表名()values()
插入資料,檢視資料
修改表記錄
删除表記錄
查詢表記錄
簡單查詢
select * from 表名 檢視表中所有的資料,*表示所有列
select name,age,id from 表名 檢視表中指定的字段,按列名先後順序顯示
使用where子句,進行過濾查詢
order by排序
group by分組查詢
聚合函數
limit記錄條數限制
正規表達式
外鍵限制
多表查詢
限制條件:
主鍵一張表隻能有一個
一個主鍵可以由多個列組成
primary key(非空且唯一):能夠唯一區分出目前記錄的字段稱為主鍵,加速查找
unique 唯一
not null 非空
auto_increment:自增,和主鍵搭配着才能用,主鍵必須是數字類型
資料類型:
數字
tinyint unsigned加上這個就是無符号
int
bigint
float
double
decimal 精準 decimal(10,5)總位數,小數點後位數
字元串
char 速度快
varchar 節省空間
最大字元255,大于255用test
ps:建立資料表定長列往前放
上傳檔案:
檔案存硬碟
db存路徑
時間類型
datetime
enum 枚舉
set 集合
資料庫存儲引擎
什麼是存儲引擎
資料庫的表有不同的類型,表的類型不同,會對應不同的存取機制,表類型又稱為存儲引擎
存儲引擎說白了就是如何存儲資料,如何為存儲的資料建立索引和如何更新、查詢資料等技術的實作方法。因為在關系型資料庫中的存儲是以表的形式存儲的,是以存儲引擎也可以稱為表類型(即存儲和操作此表的類型)
mysql資料庫提供了多種存儲引擎,使用者可以根據不同的需求為資料表選擇不同的存儲引擎,使用者也可以根據自己的需要編寫自己的存儲引擎
mysql支援的存儲引擎
mysql常用的資料引擎
mylsam存儲引擎
由于該引擎不支援事務,也不支援外鍵,是以通路速度較快,是以當對事物完整性沒有要求并以通路為主的應用适合試用該存儲引擎。
innodb存儲引擎(主要使用)
由于該存儲引擎在事務上具有優勢,即支援具有送出、復原及崩潰恢複能力等事務的特性,是以比mylsam存儲引擎占用更多的磁盤空間,是以當需要頻繁的更新、删除等操作,同時還對事務的完整性要求較高,需要實作并發控制,建議選擇。
memory
memory存儲引擎存儲資料的位置是記憶體,是以通路速度最快,但是安全上沒有保障。适合于需要快速的通路或臨時表。
blackhole
黑洞存儲引擎,可以應用與主備複制中的分發主庫
使用存儲引擎
方法1:建表時指定
方法2:在配置檔案時指定預設的存儲引擎
檢視
檢視使用者
建立使用者:
create user 'alex'@'192.168.1.1' identified by '123123'
create user 'alex'@'192.168.1.%' identified by '123123' %表示任意
create user 'alex'@'%' identified by '123123'
授權管理:
show grants for '使用者'@'IP位址' 檢視位址
grant select,insert,update on db1.t1 to 'alex'@'%';
grant all privileges on db1.* to 'alex'@'%'; 除了授權功能其他功能都有,db1資料庫下的所有表
revoke all privileges from db1.* to 'alex'@'%'; 取消授權
再開個終端進入