Cập nhật nội dung chi tiết về Sql:function Và Store Procedure (Hàm/Thủ Tục) Trong Sql mới nhất trên website Cuocthitainang2010.com. Hy vọng thông tin trong bài viết sẽ đáp ứng được nhu cầu ngoài mong đợi của bạn, chúng tôi sẽ làm việc thường xuyên để cập nhật nội dung mới nhằm giúp bạn nhận được thông tin nhanh chóng và chính xác nhất.
2. Function và Store Procedure (hàm/thủ tục)
2.1. Function và Store Procedure là gì
Là đoạn chương trình kịch bản (programming scripts) với các câu lệnh SQL nhúng (embedded SQL) được lưu dưới dạng đã được biên dịch và thi hành thực tiếp bởi MySQL server.
SP cho phép lưu trữ các logic ứng dụng trên CSDL.
2.2. Cú pháp
Tạo hàm/thủ tục
CREATE FUNCTION name ([parameterlist]) RETURNS datatype [options] sqlcode
CREATE PROCEDURE name ([parameterlist]) [options] sqlcode
Ví dụ:
DELIMITER $$
CREATE PROCEDURE count_people_with_age(IN age_in INT, OUT quantity INT)
BEGIN
SELECT *
FROM people
SELECT FOUND_ROWS() INTO quantity;
END
DELIMITER $$: Giải phóng để cho phép sử dụng ‘;’ trong thủ tục
Gán giá trị cho biến
Sử dụng SET hoặc SELECT INTO.
Gọi thủ tục:
Call count_people_with_age (18,@people_count);
Select @ people _count;
Hiện thị thông tin
SHOW FUNCTION STATUS;
SHOW PROCEDURE STATUS;
SHOW FUNCTION STATUS LIKE ‘repeat%’;
SHOW PROCEDURE STATUS LIKE ‘film%’;
SHOW CREATE PROCEDURE ‘name‘;
Một số cấu trúc điều khiển dùng trong Hàm, thủ tục
[ ELSE commands;]
REPEAT commands;
UNTIL condition
END REPEAT [ loopname];
CASE expression
WHEN value1 THEN commands;
[WHEN value2 THEN commands;]
[ELSE commands;]
END CASE;
[loopname:]
WHILE condition DO commands;
END WHILE [loopname];
2.3. Con trỏ (cursor) trong hàm/thủ tục
MySQL hỗ trợ con trỏ trong hàm/thủ tục, trigger
Con trỏ được sử dụng để duyệt các dòng kết quả trả lại bởi truy vấn, và xử lý từng dòng riêng lẻ
Cú pháp Con trỏ:
DECLARE cursor_name CURSOR FOR SELECT_statement;
OPEN cursor_name;
Lấy ra từng dòng và chuyển tới dòng kết quả tiếp theo sử dụng lệnh FETCH
FETCH cursor_name INTO variable list;
CLOSE cursor_name;
2.4. Xử lý lỗi thông qua Handlers
Luôn có khả năng hàm/thủ tục gặp lỗi trong khi thi hành các lệnh SQL. MySQL cung cấp kỹ thuật xử lý lỗi thông qua handler
Một handler cần định nghĩa sau khai báo các biến, con trỏ và điều kiện, nhưng trước các lệnh SQL
Cú pháp Handler: DECLARE type HANDLER FORcondition1, condition2, condition3, … statement;
condition(s): Các điều kiện mà handler sẽ được gọi : Not found, SqlException,..
statement: Câu lệnh sẽ thi hành khi có điều kiện xảy ra
2.5. Ưu nhược điểm
Ưu điểm
Giảm dư thừa mã chương trình: Các đoạn mã tương tự trong các ứng dụng như thêm, cập nhật có thể lưu ở phía CSDL
Bảo trì: Nếu có sự thay đổi trong CSDL, mã lệnh cần thay đổi có thể xác định trong các SP
An ninh CSDL tốt hơn: Trong các ứng dụng an ninh cao, với hàm/thủ tục có thể kiểm soát truy cập dữ liệu và đưa ra các qui định an ninh tập trung
Nhược điểm
Thiếu tính khả chuyển (Lack of Portability)
SP khó chuyển từ một DBMS sang một DBMS khác. Yêu cầu lập trình và kiểm thử lại đáng kể
Sử dụng hàm/thủ tục nhiều có thể gây quá tải MySQL server
Lập trình SP không phong phú như các nền tảng phát triển khác như Java hay PHP
Lưu ý: Các phiên bản tương lai của MySQL có thể cung cấp các giao diện cho phép tạo các hàm/thủ tục sử dụng các ngôn ngữ bên ngoài, ví dụ Java
Sự Khác Nhau Giữa Sql Và Nosql Là Gì? Nosql Quan Trọng Hơn Sql?
Cơ sở dữ liệu quan hệ:
Đầu tiên, chúng ta phải hiểu được khái niệm về cơ sở dữ liệu quan hệ. Cơ sở dữ liệu quan hệ là những thông tin được lưu trữ dưới dạng bảng, xuất hiện vào năm 1970 từ IBM và sau đó được tiếp nhận bởi Oracle. Các cơ sở dữ liệu phổ biến có quan hệ rõ ràng là Oracle, MySQL và Postgres.
Cơ sở dữ liệu phi quan hệ:
Mô hình dữ liệu: cơ sở dữ liệu NoSQL cung cấp các mô hình linh hoạt giúp cập nhật CSDL dễ dàng hơn.
Cấu trúc dữ liệu: các Dữ liệu lớn ngày nay không vận hành theo hàng và cột, tức là không có cấu trúc.
Mô hình phát triển: NoSQL thường là nguồn mở nên không cần phải trả bất kỳ khoản phí nào.
So sánh cơ bản giữa SQL và NoSQL:
Tầm quan trọng của SQL? Học SQL có dễ không?
Chúng ta đang sống trong thời đại mà dữ liệu là tài sản cực kỳ quý giá và nó là trung tâm cho việc ra quyết định trong doanh nghiệp. Bất chấp sự bùng nổ của NoSQL trong thời gian gần đây, SQL vẫn khẳng định mình là là nền tảng phổ biến nhất để phân tích dữ liệu.
Không có gì đáng ngạc nhiên khi nói rằng SQL đặc biệt hiệu quả trong thao tác dữ liệu. Bạn có thể xem dữ liệu chính xác, cách thức kiểm tra và thao tác trên dữ liệu cũng thực hiện nhanh hơn. Nếu bạn muốn truy cập vào đa số dữ liệu trong thời đại ngày nay thì SQL là lựa chọn cho bạn.
SQL không phải là ngôn ngữ lập trình mà là một ngôn ngữ truy vấn. Mục đích chính của SQL là cung cấp các thao tác dữ liệu dành cho những người có nhu cầu. SQL thật sự rất dễ học vì nó là một ngôn ngữ tự nhiên giống như tiếng anh vậy. Chỉ cần biết một chút tiếng Anh cơ bản thì bạn hoàn toàn có thể sử dụng tốt SQL. Hầu hết các cơ sở dữ liệu đều tương thích với SQL. Bạn có thể học và thực hành với bất cứ dữ liệu mẫu nào bạn muốn, vì chúng luôn có sẵn.
SQL và NoSQL cái nào quan trọng hơn?
NoSQL hoạt động tốt nhất trên các cơ sở dữ liệu phi cấu trúc. Công nghệ NoSQL chủ yếu được phát triển để xử lý các dữ liệu như Big Data chẳng hạn. Khi chúng ta tiến tới tương lai, khối lượng dữ liệu phi cấu trúc sẽ tăng lên. Do đó, NoSQL với tư cách là một ngôn ngữ truy vấn DBMS có một tương lai tươi sáng trong ngành lưu trữ. Tuy nhiên, nó sẽ không bao giờ thay thế hoàn toàn SQL, vì mục đích sử dụng của 2 thứ là khác nhau. Nếu bạn sử muốn sử dụng SQL, hãy chọn những công ty uy tín như Viryatechnologies để được hỗ trợ tốt nhất, còn nếu bạn sử dụng NoSQL thì có thể chọn những dịch vụ khác hoặc tự tìm hiểu cách NoSQL vận hành và sử dụng.
Postgresql Vs Mysql: What’S The Difference?
What is MySQL?
MYSQL is a popular and widely used DBMS system. The name is taken from the girl name My who is the daughter of the co-founder Michael Widenius. The source code of MYSQL is available under the GNU GPL. The project is owned and maintained by Oracle Corporation.
It is an RDBMS (Relational Database Management System) and works primarily on the relational database model. It makes database administration easier and more flexible.
What is PostgreSQL?
Postgre is an object-relational database management system (ORDBMS). It was developed at the Computer Science Department in the University of California. Postgres pioneered many concepts.
Postgre is an Enterprise-class relational database system. It is easy to setup and installs. It offers support for SQL and NoSQL. It has a great community which happy to serve you when you are facing issues while using PostgreSQL.
In this tutorial you will learn more about –
History of MySQL
MySQL was created by a Swedish company called MySQL AB 1995
Sun acquired MySQL AB for 1 billion dollars in the year 2008
Oracle bought Sun in 2010 and thereby acquiring MySQL
In 2012, MySQL was forked into MariaDB by founder Michael Widenius under the company Monty Program Ab
MariaDB replaces MySQL for most distributions in the year 2013
Monty Program Ab merged with SkySQL- 2013
SkySQL Ab renamed to MariaDB Corporation- 2014
History of PostgreSQL
INGRES was developed-1977
Michael Stonebraker and his colleagues developed Postgres- 1986
Support for real ACID and PL/pgSQL – 1990
Released as Postgres95 in -1995
Re-released Postgres95 as PostgreSQL 6.0 – 1996
MVCC, GUC, Join syntax Controls and Procedural Language Loader added- 1998-2001
Version 7.2 to 8.2: Included features like Schema support, Nonblocking VACUUM, Roles and dblink – 2002-2006
PostgreSQL 8.4 released in 2009
PostgreSQL 9.0 released in 2010
NYCPUG (New York City PostgreSQL User Group) joins PgUS (United States PostgreSQL association)- 2013
PGconf organised-2014
KEY DIFFERENCE:
PostgreSQL is an Object Relational Database Management System (ORDBMS) whereas MySQL is a community driven DBMS system.
PostgreSQL support modern applications feature like JSON, XML etc. while MySQL only supports JSON.
PostgreSQL performance well when executing complex queries whereas MySQL performs well in OLAP & OLTP systems.
PostgreSQL is complete ACID compliant while MySQL is only ACID compliant when used with InnoDB and NDB.
PostgreSQL supports Materialized Views whereas MySQL doesn’t supports Materialized Views.
Why use MySQL?
Here, are some important reasons for using MYSQL:
Supports features like Master-Slave Replication, Scale-Out
It supports Offload Reporting, Geographic Data Distribution, etc.
Very Low overhead with MyISAM storage engine when used for read-mostly applications
Support for Memory storage engine for frequently used tables
Query Cache for repeatedly used statements
You can easily learn and troubleshoot MySQL from different sources like blogs, white papers, and books
Why use PostgreSQL?
Main reasons for using PostgreSQL are:
Offers useful features like Table partitioning, Point in Time Recovery, Transactional DDL, etc.
Ability to utilize 3rd party Key Stores in a full PKI infrastructure
Developers can modify open source code as it is licensed under BSD without the need to contribute back enhancements
Independent Software Vendors can redistribute it without the fear of being “infected” by an open source license
Users and Roles can be assigned Object level privileges
Supports AES, 3DES and other data encryption algorithms.
Features of MySQL
MySQL is a community-driven DBMS system
Compatible with various platforms using all major languages and middleware
It offers support for Multi-version concurrency control
Compliant with the ANSI SQL standard
Allows Log-based and trigger-based replication SSL
Object-oriented and ANSI-SQL2008 compatible
Multi-layered design with Independent modules
Server available in embedded DB or client server model
Offers Built-in tools for query analysis and space analysis
It can handle any amount of data, up to as much as 50 million rows or more
MySQL runs on many varieties of UNIX, as well as on other non-UNIX systems like Windows and OS/2
Features of PostgreSQL
An active community that is accelerating its development
Most common alternative to Oracle, DB2 and SQL Server
Runs on all major OS platforms that you may have
MVCC supports large numbers of concurrent users
Extensive indexing for high-performance reporting
Support for modern applications (XML and JSON)
ANSI SQL support for transportable skills/code
Foreign keys support for efficient storage of data
Table joins and views for flexible data retrieval
Triggers/Stored Procedures for complex programs and transactions
Replication for data backup and read scalability
Differences Between MySQL and PostgreSQL
Transactions related to system catalog are not ACID compliant
Some time A server crash can corrupt the system catalog
No pluggable authentication module preventing centrally managed account
No support for roles so it is difficult in maintaining privileges for many users
Stored procedures are not cacheable
Tables used for the procedure or trigger are always pre-locked
The current external solutions require a high learning curve
No upgrade facility for major releases
The data need to be exported or replicated to the new version
Double storage is needed during the upgrade process
indexes cannot be used to directly return the results of a query
Query execution plans are not cached
Bulk loading operations may become CPU bound
Sparse Independent Software Vendor support
What is Better?
After comparing both we can say that MySQL has done a great job of improving itself to keep relevant, but on the other side for PostgreSQL, you don’t need any licensing. It also offers table inheritance, rules systems, custom data types, and database events. So, it certainly edges above MySQL.
Sự Khác Nhau Giữa Mysql Và Sql Server
SQL ( Structured Query Language) là ngôn ngữ truy vấn cơ sở dữ liệu phổ dụng nhất hiện nay, bạn có thể dùng các lệnh SQL để truy vấn database bất kỳ do hệ quản trị database nào. SQL Server là hệ quản trị database của Microsoft, Còn MySQL là hệ quản trị database có mã nguồn mở có thể chạy trên nhiều platform như Linux, WinXP…
2 hệ thống RDBMS nổi tiếng nhất là MySQL và SQL Server. Cả 2 đều tương tự nhau, có cùng chức năng mặc dù cách sử dụng có thể khá khác nhau. Cách vận hành khác nhau nhưng có chung gốc là SQL và Structured Query Language. Vì vậy, lập trình viên có thể không khó để xử lý giữa MySQL và SQL Server, như là cách sử dụng bảng và lưu trữ dữ liệu, primary và foreign keys, cũng như là cách dùng nhiều database trong cùng một môi trường hay cùng một server.
MySQL và SQL Server có thể được xem là giải pháp RDBMS phổ biến nhất đang tồn tại, mặc dù Oracle và Postgres cũng đã tồn tại trên thị trường từ lâu. Kể cả khi chúng ta thấy đang có sự chuyển dịch từ SQL thành NoSQL, SQL vẫn đang là giải pháp áp đảo. Tức là đã đến lúc bạn cần phải học về 1 trong rồi đó, hoặc là MySQL, hoặc là SQL Server, đừng chần chừ nữa nếu bạn muốn trở thành một webmaster ngày nào đó.
Được phát hành từ giữa thập niên 90s (sau đó bị thâu tóm bởi Oracle), MySQL ban đầu là một database mã nguồn mở và cũng vẫn mở cho tới tận bây giờ. Vì là mã nguồn mở, MySQL có rất nhiều phiên bản khác dựa trên nó. Sự khác biệt giữa các biến thể này là không lớn; cấu trúc và chức năng cơ bản tương đương nhau.
Một điều đã trở thành đặc tính riêng của MySQL là nó cực kỳ phổ biến trong cộng đồng startup. Vì nó là mã nguồn mở và miễn phí, lập trình viên có thể dễ dàng bắt đầu với MySQL, và chỉnh sửa code nếu họ cần làm vậy. MySQL thường được dùng đồng thời với PHP và Apache Web Server, trên một bản Linux distribution, bộ tứ này đã trở thành một tên gọi nổi tiếng và quyền lực: LAMP ( Linux, Apache, MySQL, P HP).
SQL Server là gì?
SQL Server, cũng được gọi là Microsoft SQL Server, đã tồn tại thậm chí còn lâu hơn MySQL. Microsoft phát triển SQL Server từ giữa thập niên 80s, với lời hứa RDBMS cung cấp giải pháp đáng tin cậy và có thể mở rộng. Việc này trở thành đặc tính đáng giá của SQL Server cho tới tận bây giờ, vì nó là một nền tảng được-chọn cho những phần mềm doanh nghiệp cần-mở-rộng-lớn theo thời gian.
SQL Server được lập trình viên sử dung khi dùng với .NET, đối trọng của PHP và MySQL. Cả .NET và SQL server đều được bảo vệ dưới cái tên Microsoft.
Những khác biệt chính giữa MySQL và SQL Server
Giờ bạn đã biết cơ bản những hệ thống này là gì, hãy xem qua những phần quan trọng của MySQL và SQL server:
Môi trường
Như đã nói ở trên, SQL Server hoạt động tốt với .NET, trong khi đó MySQL có thể kết hợp với mọi ngôn ngữ lập trình khác, thông thường là PHP. Cũng cần phải nói rõ là SQL Server trước đây chạy độc quyền trên Windows, nhưng giờ đã khác kể từ khi Microsoft thông báo hỗ trợ Linux cho SQL Server. Nhưng, phiên bản Linux vẫn chưa đủ tốt. Vì vậy, lời khuyên của chúng tôi vẫn là khuyên bạn nếu sử dụng Windows thì hãy dùng SQL Server, hoặc chuyển qua Linux thì hãy dùng MySQL.
Syntax
Đối với hầu hết mọi người, điểm này là khác biệt lớn nhất giữa 2 nền tảng. Tùy thuộc vào việc bạn quen thuộc với syntax nào, bạn nên quyết định lựa hệ thống dựa trên đó. Mặc dù MySQL và SQL đều có gốc là SQL, khác biệt về syntax là khá lớn, như ví dụ bên dưới:
SELECT age FROM person ORDER BY age ASC LIMIT 1 OFFSET 2
SELECT TOP 3 WITH TIES * FROM person ORDER BY age ASC
SQL Server còn hơn là một RDBMS; Sự khác biệt lớn nhất giữa một phần mềm độc quyền và phần mềm mã nguồn mở là việc nó được hỗ trợ như thế nào, được hỗ trợ riêng hay không. Trong trường hợp này, lợi thế của SQL server rất rõ ràng, nó được bảo trợ bởi một tập đoàn công nghệ lớn nhất toàn cầu. Microsoft đã xây dựng nhiều công cụ mạnh mẽ cho SQL Server, hỗ trợ lớn hơn cho RDBMS, bao gồm các công cụ phân tích dữ liệu. Nó cũng có tính năng trở thành server báo cáo – SQL Server Reporting servies, cũng như là công cụ ETL. Việc này biến SQL server như trở thành một con dao Thụy Sĩ của RDBMS. Bạn cũng có thể dựng các tính năng tương tự trong MySQL, nhưng cần có giải pháp từ bên thứ 3 – vốn không phải là lý tưởng nhất cho mọi người.
Storage engines: Sự khác biệt lớn khác nhưng không được xem trọng là MySQL và SQL Server có cách khác nhau để lưu trữ liệu. SQL server sử dụng một storage engine được phát triển bởi Microsoft, khác hoàn toàn so với nhiều loại engines được tạo ra cho MySQL. Điều này giúp lập trình viên MySQL có sự linh hoạt nhất định, vì có thể dùng nhiều storage engine khác nhau cho bảng, dựa trên tốc độ, độ tin cậy hoặc các lý do khác. Một storage engine phổ biến của MySQL là InnoDB, có thể chậm hơn nhưng ổn định hơn so với MyISAM.
Hủy Query: Nhiều người không biết về điều này, Những khác biệt này rất lớn giữa MySQL và SQL server mà bạn cần cân nhắc. MySQL không cho phép bạn hủy query giữa chừng. Có nghĩa là khi lệnh đã được phát đi, bạn cần “cầu nguyện” là bất kỳ hư hỏng nào nó có khả năng gây ra có thể khôi phục. SQL Server, ở mặc khác, cho phép bạn hủy query giữa chừng. Việc này có thể gây tổn thất cho database admin, trái với web developer, những người thực thi query hiếm khi cần hủy query trong quá trình thực thi.
Bảo mật
Nhìn chung, không có nhiều khác biệt nếu so sánh giữa MySQL và SQL Server. Cả 2 đều tuân thủ EC2, có nghĩa đều là lựa chọn an toàn. Tuy nhiên, cái bóng của Microsoft cũng khá lớn ở đây, nó đã cung cấp cho SQL server những tính năng bảo mật đáng giá và mạnh mẽ. Một công cụ bảo mật riêng như – Microsoft Baseline Security Analyzer cũng giúp bạn tăng tính bảo mật cho SQL Server. Vì vậy, nếu an toàn là điều ưu tiên nhất của bạn, bạn đã biết nên chọn nền tảng nào rồi đấy.
Chi phí
Về mảng này khiến SQL Server trở nên lép vế nhiều so với MySQL. Microsoft cần bạn thanh toán phí license để chạy nhiều database trên SQL server. Có một phiên bản miễn phí cho SQL server, nhưng nó chỉ có nghĩa khi bạn đã làm quen với RBDMs. Ngược lại, MySQL sử dụng GNU General Public License, dĩ nhiên, hoàn toàn miễn phí. Tuy nhiên cũng nên lưu ý là nếu bạn cần trợ giúp hoặc tư vấn từ MySQL, bạn vẫn phải trả phí cho điều đó.
Công cụ hỗ trợ
Mặc dù đúng là bạn cần thanh toán phí hỗ trợ nếu cần đến hỗ trợ chính thức từ MySQL, khả năng này hiếm xảy ra, vì lượng người dùng MySQL và cộng đồng của nó vô cùng lớn, nên sự hỗ trợ từ cộng đồng này cũng rất lớn. Đặc quyền khi là một thành viên của cộng đồng người dùng, là bạn sẽ được trợ giúp bởi mọi người trên giới và đã có rất nhiều giải pháp cho bất kỳ vấn đề nào của bạn.
IDES
Điều này rất quan trọng, vì cả 2 RDMBS đều hỗ trợ công cụ Integrated Development Environment (IDE). Công cụ này tạo ra môi trường lập trình cho lập trình viên, bạn nên chọn loại phù hợp nhất cho mình. MySQL dùng Enterprise Manager của Oracle, trong khi đó SQL Server sử dụng Management Studio (SSMS). Nếu tổng hợp tất các điểm trên không giúp bạn đưa ra được quyết định thì hãy chọn dựa trên điểm này.
Kết luận
Chọn RDMBS là một việc làm rất quan trọng khi bắt đầu tạo ứng dụng. Mọi người thường chọn một hệ thống rồi rất hiếm khi nào thay đổi, vì vậy bạn nên đầu tư vào việc phân tích ban đầu để chọn một hệ thống phù hợp nhất.
Lựa chọn là của bạn. Theo cách đơn giản nhất, nếu bạn đang dự định tạo một ứng dụng vừa/nhỏ và chuyên dùng PHP, hãy chọn MySQL server. Trong khi đó, nếu bạn dự định một ứng dụng lớn, bảo mật cao, cấp độ doanh nghiệp thì SQL Server sẽ nên là bạn đồng hành cùng bạn.
Bạn đang đọc nội dung bài viết Sql:function Và Store Procedure (Hàm/Thủ Tục) Trong Sql trên website Cuocthitainang2010.com. Hy vọng một phần nào đó những thông tin mà chúng tôi đã cung cấp là rất hữu ích với bạn. Nếu nội dung bài viết hay, ý nghĩa bạn hãy chia sẻ với bạn bè của mình và luôn theo dõi, ủng hộ chúng tôi để cập nhật những thông tin mới nhất. Chúc bạn một ngày tốt lành!