搜尋
首頁資料庫mysql教程常用的MySQL必備基礎知識

常用的MySQL必備基礎知識

Apr 15, 2021 am 09:20 AM
mysql基礎知識

常用的MySQL必備基礎知識

一、SQL的概念

    结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

#相關免費學習推薦: mysql視訊教學

二、SQL分類

(1)資料定義語言(Data Definition Language) DDL
用來定義資料庫物件:資料庫,表,列…
(2)資料操作語言(Data Manipulation Language) DML
用來對資料庫中表格的記錄進行更新。
(3)資料查詢語言(Data Query Language) DQL
用來查詢資料庫中表格的記錄。
(4)資料控制語言(Data Control Language) DCL

#(一)DDL##

1.创建数据库
	create database 数据库名; 
	create database 数据库名 character set 字符集; //字符集一般为uft-8,第二个语句是创建数据的同时并设置了字符集。2.查看数据库
	use 数据库名;   //切换数据库
	show databases;  //查看MySQL中都有哪些数据库
	select database();   //查看当前正在使用的数据库
	show create database 数据库名;  //查看一个数据库的定义信息3.修改数据库字符集
	alter database 数据库名 character set 字符集;4.删除数据库
	drop database 数据库名;5.创建表
	CREATE TABLE 表名(
		字段名称1  字段类型(长度),
		字段名称2  字段类型(长度)		//注意:最后一个字段名称末尾不加,
    );
	/*常用的数据类型
	  int  整型  double 浮点型  varchar 字符串 
	  data 	日期类型,yyyy-MM-dd  年-月-日
	  注意: char也表示字符串,但是跟varchar是有区别的
	  char和varchar区别:
	   	 char类型是固定长度的,varchar是根据输入字符分配合适的空间,一般情况下用varchar
	 */6.查看表
	show tables;   //查看当前数据库所有的表
	desc 表名;  //查看表的结构7.修改表
	rename table 旧表名 to 新表名;  // 修改表名
	alter table 表名 character set 字符集;  //修改字符集
	alert table 表名 add 字段名称 字段类型;  //向表中添加字段
	alter table 表名 drop 字段名;  //删除字段8.删除表
	drop 表名 if exists 表名; //删除该表

(二) DML

1.插入数据
	insert into 表名 (字段名1,字段名2...) values(字段值1,字段值2...);2.更改数据
	update 表名 set 列名 = 值 [where 字段名 = 值];3.删除数据
	delete from 表名 [where 字段名 = 值];

(三)DQL

1.简单查询
	select 列名 from 表名; //列名可以用*号代替表示查询所有字段2.条件查询
	select 列名 from 表名 where 条件表达式;
	//  %表示任意多个字符串,  _表示匹配一个字符,
3.排序
	SELECT 字段名 FROM 表名 [WHERE 字段 = 值] ORDER BY 字段名 [ASC / DESC];
	// ASC 表示升序排序(默认),DESC表示降序排序4.聚合函数	/*常用聚合函数
	* count(字段) 统计指定列不为NULL的记录行数
	* sum(字段)  计算指定列的数值和
	* max(字段)  计算指定列的最大值
	* min(字段)  计算指定列的最小值
	* avg(字段)  计算指定列的平均值
	*/
	SELECT 聚合函数(字段名) FROM 表名;5.分组
	SELECT 分组字段/聚合函数 FROM 表名 GROUP BY 分组字段 [HAVING 条件];6.limit关键字
	SELECT 字段1,字段2... FROM 表名 LIMIT offset , length;
	// offset  起始行数, 从0开始记数, 如果省略 则默认为 0.
	// length 返回的行数

(四)DCL

1.创建用户
	CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';2.给用户授权
	GRANT 权限 1, 权限 2... ON 数据库名.表名 TO '用户名'@'主机名';3.查看权限
	SHOW GRANTS FOR '用户名'@'主机名';4.删除用户
	DROP USER '用户名'@'主机名';5.查询用户
	SELECT * FROM USER;

#三、 SQL約束

1. 主键约束	// 不可重复 唯一 非空
	字段名 字段类型 primary key;	//  主键的自动增长 AUTO_INCREMENT 表示自动增长(字段类型必须是整数类型)
	// 默认主键起始值是1,改变起始值
	//-- 创建主键自增的表,自定义自增其实值字段名 字段类型 DEFAULT 默认值
	
	// CREATE TABLE 表名(
	// eid INT PRIMARY KEY AUTO_INCREMENT,
	// ……
	// )AUTO_INCREMENT=100;

	// DELETE和TRUNCATE对自增长的影响(前者对自增没有影响,后者从1开始自增)2. 非空约束
	字段名 字段类型 not null,3. 唯一约束
	字段名 字段类型 unique,4. 默认值
	字段名 字段类型 DEFAULT 默认值

四、交易控制

1.什么是事务
	事务是一个整体,由一条或者多条SQL 语句组成,这些SQL语句要么都执行成功,要么都执行失败, 只要一条SQL出现异常,整个操作就会回滚,整个业务执行失败。2. 手动提交事务
	① 开启事务 start transaction; 
	② 提交事务 commit;
	③ 回滚事务 rollback;3. 自动提交事务(MySQL默认)	// 取消自动提交
	SET @@autocommit=off;
	// 查看自动状态, on是自动,off是手动提交
	SHOW VARIABLES LIKE 'autocommit';4. **事务的四大特性**(重点)
	原子性,一致性,隔离性,持久性。5. 事务隔离级别	//查看隔离级别
	select @@tx_isolation; //5.7版本
	// 设置隔离级别
	set global transaction isolation level 级别名称;
	// read uncommitted 读未提交
	// read committed 读已提交
	// repeatable read 可重复读
	// serializable 串行化

五、多表

(一)概述

 	1. 在实际开发中,单表是满足不了业务需求的,同一个字段中很可能出现大量的
冗余字段,这就需要我们引入了多表。    2. 如果表1的某个字段与表2的主键对应,那么表1的这个字段就称为表1的外键,
拥有外键的表是从表,与外键对应的主键所在的表成为主表。    4. 外键约束:外键约束可以让两张表之间产生一定的对应关系,从而形成了约束。    5. 外键指的是与在从表中与主表的主键对应的字段。    6. 添加外键约束的语法格式    	[CONSTRAINT] [外键约束名称] FOREIGN KEY(外键字段名) REFERENCES 
    主表名(主键字段名);
    alter table 从表 add [CONSTRAINT] [外键约束名称] FOREIGN KEY(外键字段名) 		REFERENCES 主表名(主键字段名);
    //  中括号里面的东西都是可以省略的 
    7. 删除外键约束的语法格式
    alter table 从表 drop foreign key 外键约束名称;
    8.外键约束的注意事项:
    	① 从表的外键类型必须与主表的主键类型一致。
    	② 添加数据时,应该先添加主表的数据,然后再添加从表的数据
    	③ 删除数据的时候,要先删除从表中的数据,再删除主表中的数据。    9.级联删除
    	 删除数据的时候,要先删除从表中的数据,再删除主表中的数据,设置级联删除
    变可以直接删除主表中的数据,同时从表中的数据也会跟着消失。
    	on delete cascade; //添加外键约束的时候后面跟着这句

(二)多表間關係

一對多: 在多的表上建立外鍵

多對多: 建立第三個表,最起碼有兩個欄位(兩個表的主鍵)
一對一: 在任一個表上建立外鍵

(三) 多表查詢

1.内连接查询
	SELECT 字段名 FROM 左表, 右表 WHERE 连接条件;
	SELECT 字段名 FROM 左表 [inner]  JOIN 右表 ON 连接条件;2.外连接查询
	SELECT 字段名 FROM 坐标 LEFT [outer] JOIN 右表 ON 连接条件;
	SELECT 字段名 FROM 坐标 RIGHT [outer] JOIN 右表 ON 连接条件;// 内连接: inner join , 只获取两张表中 交集部分的数据.// 左外连接: left join , 以左表为基准 ,查询左表的所有数据, 以及与右表有交集的部分// 右外连接: right join , 以右表为基准,查询右表的所有的数据,以及与左表有交集的部分3.子查询
	SELECT 查询字段 FROM 表 WHERE 字段=(子查询);
	SELECT 查询字段 FROM (子查询)表别名 WHERE 条件;
	SELECT 查询字段 FROM 表 WHERE 字段 IN (子查询);
	// 子查询如果查出的是一个字段(单列), 那就在where后面作为条件使用.
	// 子查询如果查询出的是多个字段(多列), 就当做一张表使用(要起别名).

六、資料庫三範式

#資料庫設計的一種規則# 目的: 建立冗餘餘較小,結構合理的資料庫。
第一範式(1NF) 滿足最低要求的範式-列具有原子性,列要做到不可拆分性
第二範式(2NF) 在滿足第一範式的基礎之上進一步滿足多的規格- 一張表格只能描述一件事情
第三範式(3NF) 以此類推………………

七、MySQL索引

索引的作用:為了提高索引的效率 **常見索引的分類:**主鍵索引(primary key);
唯一索引(unique);普通索引(index);

(一)主鍵索引

1.创建的时候添加主键索引
	CREATE TABLE 表名(
	字段名 类型 PRIMARY KEY ,
	//主键索引是唯一索引
	);2.在已有表的基础上添加主键索引
	ALTER TABLE 表名 ADD PRIMARY KEY(列名);

#(二)唯一索引

1. 创建的时候添加唯一索引
	CREATE TABLE 表名(
		UNIQUE [索引名称] (列名) 
	);2. 在已有表的基础上添加唯一索引
	CREATE UNIQUE INDEX 索引名 on 表名(列名);
	ALTER TABLE 表名 ADD UNIQUE (列名);

(三)普通索引

	create index 索引名 on 表名(列名[长度]);
	ALTER TABLE 表名 ADD INDEX 索引名(列名);

(四)刪除索引

	ALTER TABLE table_name DROP INDEX index_name;

八、MySQL檢視

	// 视图是一个表中根据不同需求提取出来的一个实际上不存在的表
	create view 视图名 [column_list] as select语句;
    // 通过视图进行查询时将视图看成是一张表即可

相關免費學習推薦:mysql資料庫##(影片)

#

以上是常用的MySQL必備基礎知識的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:CSDN。如有侵權,請聯絡admin@php.cn刪除
MySQL與Sqlite有何不同?MySQL與Sqlite有何不同?Apr 24, 2025 am 12:12 AM

MySQL和SQLite的主要區別在於設計理念和使用場景:1.MySQL適用於大型應用和企業級解決方案,支持高性能和高並發;2.SQLite適合移動應用和桌面軟件,輕量級且易於嵌入。

MySQL中的索引是什麼?它們如何提高性能?MySQL中的索引是什麼?它們如何提高性能?Apr 24, 2025 am 12:09 AM

MySQL中的索引是數據庫表中一列或多列的有序結構,用於加速數據檢索。 1)索引通過減少掃描數據量提升查詢速度。 2)B-Tree索引利用平衡樹結構,適合範圍查詢和排序。 3)創建索引使用CREATEINDEX語句,如CREATEINDEXidx_customer_idONorders(customer_id)。 4)複合索引可優化多列查詢,如CREATEINDEXidx_customer_orderONorders(customer_id,order_date)。 5)使用EXPLAIN分析查詢計劃,避

說明如何使用MySQL中的交易來確保數據一致性。說明如何使用MySQL中的交易來確保數據一致性。Apr 24, 2025 am 12:09 AM

在MySQL中使用事務可以確保數據一致性。 1)通過STARTTRANSACTION開始事務,執行SQL操作後用COMMIT提交或ROLLBACK回滾。 2)使用SAVEPOINT可以設置保存點,允許部分回滾。 3)性能優化建議包括縮短事務時間、避免大規模查詢和合理使用隔離級別。

在哪些情況下,您可以選擇PostgreSQL而不是MySQL?在哪些情況下,您可以選擇PostgreSQL而不是MySQL?Apr 24, 2025 am 12:07 AM

選擇PostgreSQL而非MySQL的場景包括:1)需要復雜查詢和高級SQL功能,2)要求嚴格的數據完整性和ACID遵從性,3)需要高級空間功能,4)處理大數據集時需要高性能。 PostgreSQL在這些方面表現出色,適合需要復雜數據處理和高數據完整性的項目。

如何保護MySQL數據庫?如何保護MySQL數據庫?Apr 24, 2025 am 12:04 AM

MySQL數據庫的安全可以通過以下措施實現:1.用戶權限管理:通過CREATEUSER和GRANT命令嚴格控制訪問權限。 2.加密傳輸:配置SSL/TLS確保數據傳輸安全。 3.數據庫備份和恢復:使用mysqldump或mysqlpump定期備份數據。 4.高級安全策略:使用防火牆限制訪問,並啟用審計日誌記錄操作。 5.性能優化與最佳實踐:通過索引和查詢優化以及定期維護兼顧安全和性能。

您可以使用哪些工具來監視MySQL性能?您可以使用哪些工具來監視MySQL性能?Apr 23, 2025 am 12:21 AM

如何有效監控MySQL性能?使用mysqladmin、SHOWGLOBALSTATUS、PerconaMonitoringandManagement(PMM)和MySQLEnterpriseMonitor等工具。 1.使用mysqladmin查看連接數。 2.用SHOWGLOBALSTATUS查看查詢數。 3.PMM提供詳細性能數據和圖形化界面。 4.MySQLEnterpriseMonitor提供豐富的監控功能和報警機制。

MySQL與SQL Server有何不同?MySQL與SQL Server有何不同?Apr 23, 2025 am 12:20 AM

MySQL和SQLServer的区别在于:1)MySQL是开源的,适用于Web和嵌入式系统,2)SQLServer是微软的商业产品,适用于企业级应用。两者在存储引擎、性能优化和应用场景上有显著差异,选择时需考虑项目规模和未来扩展性。

在哪些情況下,您可以選擇SQL Server而不是MySQL?在哪些情況下,您可以選擇SQL Server而不是MySQL?Apr 23, 2025 am 12:20 AM

在需要高可用性、高級安全性和良好集成性的企業級應用場景下,應選擇SQLServer而不是MySQL。 1)SQLServer提供企業級功能,如高可用性和高級安全性。 2)它與微軟生態系統如VisualStudio和PowerBI緊密集成。 3)SQLServer在性能優化方面表現出色,支持內存優化表和列存儲索引。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。