1. 创建数据库 CREATE DATABASE语法: CREATE DATABASE database_name [ ON [ PRIMARY ] filespec [ ,...n ] [ , filegroup [ ,...n ] ] [ LOG ON filespec [ ,...n ] ] ] [ COLLATE collation_name ] filespec :: = {( NAME = logical_file_name , FILENAME
1. 创建数据库
CREATE DATABASE语法:
<span>CREATE</span> <span>DATABASE</span><span> database_name </span><span>[</span><span> ON [ PRIMARY </span><span>]</span> <span>filespec<span>></span> <span>[</span><span> ,...n </span><span>]</span> <span>[</span><span> , <filegroup> [ ,...n </filegroup></span><span>]</span><span> ] </span><span>[</span><span> LOG ON <filespec> [ ,...n </filespec></span><span>]</span><span> ] ] </span><span>[</span><span> COLLATE collation_name </span><span>]</span> <span>filespec<span>></span> ::<span>=</span><span> { ( NAME </span><span>=</span><span> logical_file_name , FILENAME </span><span>=</span> { <span>'</span><span>os_file_name</span><span>'</span> <span>|</span> <span>'</span><span>filestream_path</span><span>'</span><span> } </span><span>[</span><span> , SIZE = size [ KB | MB | GB | TB </span><span>]</span><span> ] </span><span>[</span><span> , MAXSIZE = { max_size [ KB | MB | GB | TB </span><span>]</span> <span>|</span><span> UNLIMITED } ] </span><span>[</span><span> , FILEGROWTH = growth_increment [ KB | MB | GB | TB | % </span><span>]</span><span> ] ) }</span></span></span>
ON:用来定义数据库的数据文件。PRIMARY指出其后所定义的文件是主数据文件,如果省略,则第一个定义的文件是主数据文件。
LOG ON:用来定义数据库的日志文件。如果没有LOG ON,SQL Server将自动创建一个日志文件。
数据库中的文件类型与推荐扩展名:主要数据文件.mdf ,次要数据文件.ndf ,事务日志.ldf 。
创建未指定文件的数据库:
<span>--</span><span> Drop the database if it already exists</span> <span>IF</span> <span>EXISTS</span><span> ( </span><span>SELECT</span><span> name </span><span>FROM</span><span> sys.databases </span><span>WHERE</span> name <span>=</span> N<span>'</span><span>Portal</span><span>'</span><span> ) </span><span>DROP</span> <span>DATABASE</span><span> Portal </span><span>GO</span> <span>CREATE</span> <span>DATABASE</span><span> Portal </span><span>GO</span>
创建指定数据文件和事务日志文件的数据库:
<span>CREATE</span> <span>DATABASE</span> <span>[</span><span>Portal</span><span>]</span> <span>ON</span> <span>PRIMARY</span><span> ( NAME </span><span>=</span> N<span>'</span><span>Portal</span><span>'</span><span>, FILENAME </span><span>=</span> N<span>'</span><span>F:\Database\Portal.mdf</span><span>'</span><span> , SIZE </span><span>=</span><span> 5MB , FILEGROWTH </span><span>=</span><span> 1MB ) </span><span>LOG</span> <span>ON</span><span> ( NAME </span><span>=</span> N<span>'</span><span>Portal_log</span><span>'</span><span>, FILENAME </span><span>=</span> N<span>'</span><span>F:\Database\Portal_log.ldf</span><span>'</span><span> , SIZE </span><span>=</span><span> 2MB , FILEGROWTH </span><span>=</span> <span>10</span><span>%</span><span> )</span>
创建数据库指定多个数据及事务日志文件:
<span>CREATE</span> <span>DATABASE</span> <span>[</span><span>Portal</span><span>]</span> <span>ON</span> <span>PRIMARY</span><span> ( NAME </span><span>=</span> N<span>'</span><span>Portal</span><span>'</span><span>, FILENAME </span><span>=</span> N<span>'</span><span>F:\Database\Portal.mdf</span><span>'</span><span> , SIZE </span><span>=</span><span> 5MB , FILEGROWTH </span><span>=</span><span> 1MB ), ( NAME </span><span>=</span> N<span>'</span><span>Portal_Data_2014</span><span>'</span><span>, FILENAME </span><span>=</span> N<span>'</span><span>F:\Database\Portal_Data_2014.ndf</span><span>'</span><span> , SIZE </span><span>=</span><span> 5MB , FILEGROWTH </span><span>=</span><span> 1MB ) </span><span>LOG</span> <span>ON</span><span> ( NAME </span><span>=</span> N<span>'</span><span>Portal_log</span><span>'</span><span>, FILENAME </span><span>=</span> N<span>'</span><span>F:\Database\Portal_log.ldf</span><span>'</span><span> , SIZE </span><span>=</span><span> 2MB , FILEGROWTH </span><span>=</span> <span>10</span><span>%</span><span> ), ( NAME </span><span>=</span> N<span>'</span><span>Portal_log_2014</span><span>'</span><span>, FILENAME </span><span>=</span> N<span>'</span><span>F:\Database\Portal_log_2014.ldf</span><span>'</span><span> , SIZE </span><span>=</span><span> 2MB , FILEGROWTH </span><span>=</span> <span>10</span><span>%</span><span> )</span>
创建具有文件组的数据库:
<span>CREATE</span> <span>DATABASE</span> <span>[</span><span>Portal</span><span>]</span> <span>ON</span> <span>PRIMARY</span><span> ( NAME </span><span>=</span> N<span>'</span><span>Portal</span><span>'</span><span>, FILENAME </span><span>=</span> N<span>'</span><span>F:\Database\Portal.mdf</span><span>'</span><span> , SIZE </span><span>=</span><span> 10MB , FILEGROWTH </span><span>=</span><span> 1MB ), FILEGROUP </span><span>[</span><span>div2014</span><span>]</span><span> ( NAME </span><span>=</span> N<span>'</span><span>Portal_Data_2014</span><span>'</span><span>, FILENAME </span><span>=</span> N<span>'</span><span>F:\Database\Portal_Data_2014.ndf</span><span>'</span><span> , SIZE </span><span>=</span><span> 5MB , FILEGROWTH </span><span>=</span><span> 1MB ) </span><span>LOG</span> <span>ON</span><span> ( NAME </span><span>=</span> N<span>'</span><span>Portal_log</span><span>'</span><span>, FILENAME </span><span>=</span> N<span>'</span><span>F:\Database\Portal_log.ldf</span><span>'</span><span> , SIZE </span><span>=</span><span> 2MB , FILEGROWTH </span><span>=</span> <span>10</span><span>%</span><span> )</span>
2. 修改数据库
修改数据库语法:
<span>ALTER</span> <span>DATABASE</span><span> database_name { </span><span>add_or_modify_files<span>></span> <span>|</span> <span>add_or_modify_filegroups<span>></span><span> } </span><span>[</span><span>;</span><span>]</span> <span>add_or_modify_files<span>></span>::<span>=</span><span> { </span><span>ADD</span> <span>FILE</span> <span>filespec<span>></span> <span>[</span><span> ,...n </span><span>]</span> <span>[</span><span> TO FILEGROUP { filegroup_name } </span><span>]</span> <span>|</span> <span>ADD</span> <span>LOG</span> <span>FILE</span> <span>filespec<span>></span> <span>[</span><span> ,...n </span><span>]</span> <span>|</span> REMOVE <span>FILE</span><span> logical_file_name </span><span>|</span> MODIFY <span>FILE</span> <span>filespec<span>></span><span> } </span><span>filespec<span>></span>::<span>=</span><span> ( NAME </span><span>=</span><span> logical_file_name </span><span>[</span><span> , NEWNAME = new_logical_name </span><span>]</span> <span>[</span><span> , FILENAME = {'os_file_name' | 'filestream_path' | 'memory_optimized_data_path' } </span><span>]</span> <span>[</span><span> , SIZE = size [ KB | MB | GB | TB </span><span>]</span><span> ] </span><span>[</span><span> , MAXSIZE = { max_size [ KB | MB | GB | TB </span><span>]</span> <span>|</span><span> UNLIMITED } ] </span><span>[</span><span> , FILEGROWTH = growth_increment [ KB | MB | GB | TB| % </span><span>]</span><span> ] </span><span>[</span><span> , OFFLINE </span><span>]</span><span> ) </span><span>add_or_modify_filegroups<span>></span>::<span>=</span><span> { </span><span>|</span> <span>ADD</span> FILEGROUP <span>filegroup_name</span> <span>[</span><span> CONTAINS FILESTREAM | CONTAINS MEMORY_OPTIMIZED_DATA </span><span>]</span> <span>|</span> REMOVE FILEGROUP <span>filegroup_name</span> <span>|</span> MODIFY FILEGROUP <span>filegroup_name</span><span> { </span><span>filegroup_updatability_option<span>></span> <span>|</span> <span>DEFAULT</span> <span>|</span> NAME <span>=</span><span> new_filegroup_name } } </span><span>filegroup_updatability_option<span>></span>::<span>=</span><span> { { READONLY </span><span>|</span><span> READWRITE } </span><span>|</span> { READ_ONLY <span>|</span><span> READ_WRITE } }</span></span></span></span></span></span></span></span></span></span></span>
新增文件组:
<span>ALTER</span> <span>DATABASE</span> <span>[</span><span>Portal</span><span>]</span> <span>ADD</span> FILEGROUP <span>[</span><span>div2014</span><span>]</span>
新增文件指定文件组:
<span>ALTER</span> <span>DATABASE</span> <span>[</span><span>Portal</span><span>]</span> <span>ADD</span> <span>FILE</span><span> ( NAME </span><span>=</span> N<span>'</span><span>Portal_Data_2014</span><span>'</span><span>, FILENAME </span><span>=</span> N<span>'</span><span>F:\Database\Portal_Data_2014.ndf</span><span>'</span><span> , SIZE </span><span>=</span><span> 5MB , FILEGROWTH </span><span>=</span><span> 1MB ) </span><span>TO</span> FILEGROUP <span>[</span><span>div2014</span><span>]</span>
删除数据库文件:
<span>ALTER</span> <span>DATABASE</span> <span>[</span><span>Portal</span><span>]</span> REMOVE <span>FILE</span> Portal_Data_2014
修改数据名称:
<span>ALTER</span> <span>DATABASE</span> <span>[</span><span>Portal</span><span>]</span> MODIFY NAME <span>=</span> <span>[</span><span>Portal_2014</span><span>]</span>
<span>EXEC</span> sp_renamedb <span>[</span><span>Portal</span><span>]</span>, <span>[</span><span>Portal_2014</span><span>]</span>
修改设置默认文件组:
<span>ALTER</span> <span>DATABASE</span> <span>[</span><span>Portal</span><span>]</span> MODIFY FILEGROUP <span>[</span><span>PRIMARY</span><span>]</span> <span>DEFAULT</span>
3. 删除数据库
删除数据库语法:
<span>DROP</span> <span>DATABASE</span> { database_name <span>|</span> database_snapshot_name } <span>[</span><span> ,...n </span><span>]</span> <span>[</span><span>;</span><span>]</span>
示例:
<span>DROP</span> <span>DATABASE</span> <span>[</span><span>Portal</span><span>]</span>
4. 分离数据库
使用系统存储过程sp_detach_db分离数据库。
sp_detach_db <span>[</span><span> @dbname= </span><span>]</span> <span>'</span><span>database_name</span><span>'</span> <span>[</span><span> , [ @skipchecks= </span><span>]</span> <span>'</span><span>skipchecks</span><span>'</span><span> ] </span><span>[</span><span> , [ @keepfulltextindexfile = </span><span>]</span> <span>'</span><span>KeepFulltextIndexFile</span><span>'</span> ]
<span>EXEC</span> sp_detach_db <span>[</span><span>Portal</span><span>]</span>
直接运行分离数据库的SQL语句,可能会提示有进程(用户)正在使用,分离失败。要解决这个问题,先查看哪些进程(用户)正在使用该数据库。
查看用户和进程:
<span>USE</span> <span>[</span><span>master</span><span>]</span><span> sp_who</span>
先结束占用数据库的进程,再分离数据库:
USE [master] KILL 55 KILL 56 KILL 57 <span>EXEC</span> sp_detach_db <span>[</span><span>Portal</span><span>]</span>
5. 附加数据库
使用CREATE DATABASE附加数据库:
<span>CREATE</span> <span>DATABASE</span> <span>[</span><span>Portal</span><span>]</span> <span>ON</span><span> ( FILENAME </span><span>=</span> <span>'</span><span>F:\Database\Portal.mdf</span><span>'</span><span> ) </span><span>FOR</span> ATTACH
<span>CREATE</span> <span>DATABASE</span> <span>[</span><span>Portal</span><span>]</span> <span>ON</span><span> ( FILENAME </span><span>=</span> <span>'</span><span>F:\Database\Portal.mdf</span><span>'</span><span> ), ( FILENAME </span><span>=</span> <span>'</span><span>F:\Database\Portal_log.ldf</span><span>'</span><span> ) </span><span>FOR</span> ATTACH
使用系统存储过程附加数据库:
<span>EXEC</span> sp_attach_db <span>[</span><span>Portal</span><span>]</span>, <span>'</span><span>F:\Database\Portal.mdf</span><span>'</span>
<span>EXEC</span> sp_attach_db <span>[</span><span>Portal</span><span>]</span>, <span>'</span><span>F:\Database\Portal.mdf</span><span>'</span>, 'F:\Database\Portal_log.ldf'
6. 查看数据库信息
SQL Server中可以使用多种方式查看数据库信息,例如使用目录视图、函数、存储过程等。
6.1> 使用目录视图
使用目录视图查看数据库基本信息:
◊ sys.databse_files:查看数据库文件信息;
◊ sys.filegroups:查看数据库组信息;
◊ sys.master_files:查看数据库文件的基本信息和状态信息;
◊ sys.database:数据库和文件目录视图查看数据库的基本信息。
<span>SELECT</span> <span>*</span> <span>FROM</span> sys.databases <span>WHERE</span> name <span>=</span> <span>'</span><span>Northwind</span><span>'</span>

mysqloffersvariousStorageengines,每個suitedfordferentusecases:1)InnodBisidealForapplicationsNeedingingAcidComplianCeanDhighConcurncurnency,supportingtransactionsancions and foreignkeys.2)myisamisbestforread-Heavy-Heavywyworks,lackingtransactionsactionsacupport.3)記憶

MySQL中常見的安全漏洞包括SQL注入、弱密碼、權限配置不當和未更新的軟件。 1.SQL注入可以通過使用預處理語句防止。 2.弱密碼可以通過強制使用強密碼策略避免。 3.權限配置不當可以通過定期審查和調整用戶權限解決。 4.未更新的軟件可以通過定期檢查和更新MySQL版本來修補。

在MySQL中識別慢查詢可以通過啟用慢查詢日誌並設置閾值來實現。 1.啟用慢查詢日誌並設置閾值。 2.查看和分析慢查詢日誌文件,使用工具如mysqldumpslow或pt-query-digest進行深入分析。 3.優化慢查詢可以通過索引優化、查詢重寫和避免使用SELECT*來實現。

要監控MySQL服務器的健康和性能,應關注系統健康、性能指標和查詢執行。 1)監控系統健康:使用top、htop或SHOWGLOBALSTATUS命令查看CPU、內存、磁盤I/O和網絡活動。 2)追踪性能指標:監控查詢每秒數、平均查詢時間和緩存命中率等關鍵指標。 3)確保查詢執行優化:啟用慢查詢日誌,記錄並優化執行時間超過設定閾值的查詢。

MySQL和MariaDB的主要區別在於性能、功能和許可證:1.MySQL由Oracle開發,MariaDB是其分支。 2.MariaDB在高負載環境中性能可能更好。 3.MariaDB提供了更多的存儲引擎和功能。 4.MySQL採用雙重許可證,MariaDB完全開源。選擇時應考慮現有基礎設施、性能需求、功能需求和許可證成本。

MySQL使用的是GPL許可證。 1)GPL許可證允許自由使用、修改和分發MySQL,但修改後的分發需遵循GPL。 2)商業許可證可避免公開修改,適合需要保密的商業應用。

選擇InnoDB而不是MyISAM的情況包括:1)需要事務支持,2)高並發環境,3)需要高數據一致性;反之,選擇MyISAM的情況包括:1)主要是讀操作,2)不需要事務支持。 InnoDB適合需要高數據一致性和事務處理的應用,如電商平台,而MyISAM適合讀密集型且無需事務的應用,如博客系統。

在MySQL中,外鍵的作用是建立表與表之間的關係,確保數據的一致性和完整性。外鍵通過引用完整性檢查和級聯操作維護數據的有效性,使用時需注意性能優化和避免常見錯誤。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

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

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

記事本++7.3.1
好用且免費的程式碼編輯器