前 言
mysql
# mysql語法--本篇學習都是透過使用Navicat Premium(資料庫管理工具),連接mysql資料.
本篇學習主要有兩個部分:
一、建立用戶,建立資料庫,給予使用者權限,刪除使用者權限。
三、表-建立表格、主鍵、外鍵 四、資料庫設計的三大範式 |
-- SQL 單行註解
#建立使用者:CREATE USER '使用者名稱'@'主機名稱' IDENTIFIED BY '密碼';
# 主機名稱可以為空,為空預設為%權限,表示所有主機可連線。
給使用者指派權限: GRANT 權限名稱ON 資料庫名稱.表示TO 使用者名稱@主機名稱
#刪除使用者權限#: REVOKE 權限名稱ON 資料庫名稱.表示FROM 使用者名稱@主機名稱;
建立資料庫: CREATE DATABASE [IF NOT EXISTS] 資料庫名稱[CHARACTER SET[= ] 'UTF8'];
查詢本機中所有的資料庫:SHOW DATABASES
↓使用mydb這個資料庫↓,表示下面的查詢都會預設針對mydb資料庫
USE mydb;
查詢資料庫中所有資料表: SHOW TABLES [FROM 資料庫]
#2 MYSQL中常見的資料類型 |
一、字元型:
① CHAR(N):固定N個字元長度的字串,如果長度不夠會自動空格補齊;
② VARCHAR(N):儲存可邊長度的字元節。常用的 0~255;
③ TEXT:儲存可變長度的字串。 (常用語發佈文章等大段內容)0~((2^16-1)*10^2);
④ TINYTEXT:0~((2^8-1)*10);
〠 MEDIUMTEXT:0~((2^24-1)*10^3);
⑥ LINGTEXT:0~((2^32-1)*10^4);
⑦ enum(" "女"):枚舉類型,欄位只能容納列舉的資料。
二、整形:
① TINYINT: 無符號0~2^8-1 有符號-2^7~22-1;##^7-1;## ② SMALLINT: 無符號0~2^16-1 有符號-2^15~2^15-1;
③ MEDIUMINT: 無符號0~2^24-1 有符號-2^23~2^23 -1;
④ INT: 無符號0~2^32-1 有符號-2^31~2^31-1 最常用!
⑤ BIGINT: 無符號0~2^64-1 有符號-2^63~2^63-1;
三、浮點型:
## ① FLOAT: 可以精確到小數點後7位有效數字;
② DOUBLE: 可以精確到小數點後15位到16位有效數字;
4、日期時間資料資料類型#
注意:由於時間儲存使用字串或時間戳存儲,所以資料庫中幾乎沒有日期類型。
① DATE:儲存日期與時間資料
② TIMESTAMP:比DATE更精確
##
## ##3、表-建立表格、主鍵、外鍵 |
【建立表格】:
CREATE TABLE [IF NOT EXISTS] 表單名稱(
IF NOT EXISTS 可以省略,省略後重複建立報錯.如果不省略,則建立時會偵測表是否已存在,如果表存在則不再執行建立語句
定義列:列名資料類型清單關鍵字
)
常用的列定義關鍵字:
① UNSIGNED: 設定清單為無符號列。只能設定類型為數字類型的欄位
② AUTO_INCREMENT PRIMARY KEY 設定列為自動成長列。自動增長列必須是主鍵。
③ NOT null:設定列為非空白限制
④ UNIQUE:設定唯一性限制。該欄位不能出現重複值。
⑤ DEFAULT: 設定預設值限制。
【主鍵】:
# 1、主鍵的注意事項? 主鍵預設為空!主鍵預設唯一性約束!
2中使用中主鍵的方式?
① 在列定義是設定: age SMALLINT(3) PRIMARY KEY,
#【外鍵】
1、設定外鍵有哪些注意事項
①=innodb的資料庫引擎支援外鍵,修改mysql.ini ①=innodb的資料庫引擎支援外鍵,修改mysql.inidefault-storage-engine=innodb的資料庫引擎支援外鍵,修改mysql.ininote類型必須相同。 (數值型要求長度和無符號都相同,字串要求型別相同,長度可以不同。) ③ 設定外鍵的欄位必須要有索引。如果沒有索引,設定外鍵時會自動產生一個索引。
2、設定外鍵的語法?
[CONSTRAINT 外鍵名稱] FOREIGN KEY (外鍵欄位) REFERENCES 參考表(參照欄位) [ON DELETE SET NULL on update CASCADE]-- 參照欄位) [ON DELETE SET NULL on update CASCADE]-- 參照欄位) [ON DELETE SET NULL on update CASCADE]-- 參照欄位) [ON DELETE SET NULL on update CASCADE]-- 參照欄位) [ON DELETE SET NULL on update 3、外鍵約束的參照完整性操作?
參考作業:當參考表的參考欄位進行刪除或更新是,外鍵表中的外鍵如何應對。
參照作業選用值:restrict 拒絕參考表刪除或更新參考欄位;(預設)
NO ACTION 與restrict一樣,但這個指令只在mysql生效;
欄位時,外鍵表的記錄同步刪除或更新;(外鍵表與參考表同步)
外鍵設為null;
#
CREATE TABLE IF NOT EXISTS tb1( -- IF NOT EXISTS 可以省略,省略后重复创建报错.如果不省略,则创建时会检测表是否已存在,如果表存在则不再执行创建语句id INT(3), `name` VARCHAR(255) NOT null, -- name是系统关键字,所以使用反引号``包裹age SMALLINT(3) AUTO_INCREMENT PRIMARY KEY, lalala INT UNIQUE, height DOUBLE(3,2) DEFAULT 1.2 -- 设置默认值约束:默认值为1.2-- PRIMARY KEY(age));create table if not exists classes( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, classname VARCHAR(255) NOT NULL );CREATE table if not EXISTS `user`( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, clsId INT UNSIGNED, `name` VARCHAR(255) NOT NULL, CONSTRAINT user_fk_classes FOREIGN KEY (clsid) REFERENCES classes(id) ON DELETE SET NULL on update CASCADE)-- auto_increment-- 显示表结构SHOW TABLES;-- 显示表内容结构SHOW COLUMNS FROM TB1;-- 现实表的建表语句show create TABLE tb1;-- 删除表DROP TABLE IF EXISTS TB1;DROP TABLE IF EXISTS classes;DROP TABLE IF EXISTS `user`;-- 修改表名 ALTER table tb1 rename tb2;-- 修改字段 列-- alter table 表名 change 旧列名 新列名 列定义 [first|after某一列]-- first 将这个字段调整为表格第一列; after某一列: 将这个字段放到某一列后面alter table tb1 change height width VARCHAR(200) not NULL FIRST; -- 删除表中某一列alter table tb1 drop name;-- 新增一列:必选部分:alter table tb1 add haha DOUBLE(8,2)alter table tb1 add haha DOUBLE(8,2) DEFAULT 1.2 after age;-- 新增多列:不能调整列的位置,只能插在最后。alter table tb1 add ( ha1 DOUBLE(3,2) UNSIGNED, ha2 VARCHAR(255) );-- 同时修改多表明 rename table tb3 to tb1[,`USER`to user1];rename table tb2 to tb1,`USER`to user1;-- 增加主键约束alter table tb1 add PRIMARY KEY(id);-- 删除主键约束alter table tb1 drop PRIMARY KEY;-- 新增唯一性约束ALTER table tb1 add unique key(ha1);-- 删除唯一性约束:由于创建唯一性约束会默认创建索引,所以删除时,需删除索引ALTER table tb1 drop index ha1; -- 设置默认值约束:前提必须设置default 属性ALTER table tb1 alter ha1 set default 20;-- 删除默认值约束ALTER table tb1 alter haha drop default;-- 设置外键约束 必选部分 alter table tb1 add foreign key (clsid)REFERENCES classes(id)alter table tb1 add constraint waijianming foreign key (clsid)REFERENCES classes(id) ON DELETE SET NULL on update CASCADE;-- 删除外键约束,由于常见外键时会生成索引,所以删除外键后,需要删索引。alter table tb1 drop foreign key waijianming;alter table tb1 drop INDEX waijianming; SHOW COLUMNS FROM TB1;
#4 資料庫的三大典範 |
1、第一範式(1NF):資料表中的每一列(欄位),必須是不可分割的最小單元。也就是確保每一列的原子性。
例如:userInfo:'山東省煙臺市13181621008'
# 下台省下180187201867206767676767607207207072020年307370020年3700070年370007370年部分:# 2.第二範式(2NF):滿足1NF後,要求:表中的所有列,都必須依賴主鍵,而不能有任何一列與主鍵沒有關係。 也就是說,一個表只描述一件事情。
例如: 訂單表,只能描述與訂單相關的資訊,所以所有的欄位都必須與訂單ID相關;
與產品ID相關;
因此: 不能在同一張表中同事出現訂單資訊與產品資訊。
3、第三範式(3NF):表中的每一列都要與主鍵直接相關,而不是間接相關。 (表中的每一列,只能依賴主鍵)。
例如:訂單表中,需有顧客相關資訊,分理處顧客表之後。訂單表中,只需要有一個使用者ID即可。而不能有其他的客戶資料。因為,其他的使用者資訊是直接關聯於使用者ID,而不是關聯於訂單ID。
【第二範式與第三範式的本質差異】
在於沒有分出兩張表,第二範式是說一張表包含了多種不同實體的屬性,那麼必須要分成多張表。
第三範式是要求,已經分好了多張表的化,那麼,一張表中只能有另一張表中的ID(主鍵),而不能有其他的任何信息(其他的任何信息,一律用主鍵在另一表查詢)
#
#
以上是學習基礎mysql語法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

在數據庫優化中,應根據查詢需求選擇索引策略:1.當查詢涉及多個列且條件順序固定時,使用複合索引;2.當查詢涉及多個列但條件順序不固定時,使用多個單列索引。複合索引適用於優化多列查詢,單列索引則適合單列查詢。

要優化MySQL慢查詢,需使用slowquerylog和performance_schema:1.啟用slowquerylog並設置閾值,記錄慢查詢;2.利用performance_schema分析查詢執行細節,找出性能瓶頸並優化。

MySQL和SQL是開發者必備技能。 1.MySQL是開源的關係型數據庫管理系統,SQL是用於管理和操作數據庫的標準語言。 2.MySQL通過高效的數據存儲和檢索功能支持多種存儲引擎,SQL通過簡單語句完成複雜數據操作。 3.使用示例包括基本查詢和高級查詢,如按條件過濾和排序。 4.常見錯誤包括語法錯誤和性能問題,可通過檢查SQL語句和使用EXPLAIN命令優化。 5.性能優化技巧包括使用索引、避免全表掃描、優化JOIN操作和提升代碼可讀性。

MySQL異步主從復制通過binlog實現數據同步,提升讀性能和高可用性。 1)主服務器記錄變更到binlog;2)從服務器通過I/O線程讀取binlog;3)從服務器的SQL線程應用binlog同步數據。

MySQL是一個開源的關係型數據庫管理系統。 1)創建數據庫和表:使用CREATEDATABASE和CREATETABLE命令。 2)基本操作:INSERT、UPDATE、DELETE和SELECT。 3)高級操作:JOIN、子查詢和事務處理。 4)調試技巧:檢查語法、數據類型和權限。 5)優化建議:使用索引、避免SELECT*和使用事務。

MySQL的安裝和基本操作包括:1.下載並安裝MySQL,設置根用戶密碼;2.使用SQL命令創建數據庫和表,如CREATEDATABASE和CREATETABLE;3.執行CRUD操作,使用INSERT,SELECT,UPDATE,DELETE命令;4.創建索引和存儲過程以優化性能和實現複雜邏輯。通過這些步驟,你可以從零開始構建和管理MySQL數據庫。

InnoDBBufferPool通過將數據和索引頁加載到內存中來提升MySQL數據庫的性能。 1)數據頁加載到BufferPool中,減少磁盤I/O。 2)臟頁被標記並定期刷新到磁盤。 3)LRU算法管理數據頁淘汰。 4)預讀機制提前加載可能需要的數據頁。

MySQL適合初學者使用,因為它安裝簡單、功能強大且易於管理數據。 1.安裝和配置簡單,適用於多種操作系統。 2.支持基本操作如創建數據庫和表、插入、查詢、更新和刪除數據。 3.提供高級功能如JOIN操作和子查詢。 4.可以通過索引、查詢優化和分錶分區來提升性能。 5.支持備份、恢復和安全措施,確保數據的安全和一致性。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SublimeText3 Linux新版
SublimeText3 Linux最新版

WebStorm Mac版
好用的JavaScript開發工具

禪工作室 13.0.1
強大的PHP整合開發環境

Atom編輯器mac版下載
最受歡迎的的開源編輯器