《MySQL必知必会》
文章平均质量分 92
MySQL必知必会
吃米饭
这个作者很懒,什么都没留下…
展开
-
MySQL数据类型
数据类型是定义列中可以存储什么数据以及该数据实际怎样存储的基本规则。数据类型用于以下目的。数据类型允许限制可存储在列中的数据。例如,数值数据类型列只能接受数值。数据类型允许在内部更有效地存储数据。可以用一种比文本串更简洁的格式存储数值和日期时间值。数据类型允许变换排序顺序。如果所有数据都作为串处理,则1位于10之前,而10又位于2之前(串以字典顺序排序,从左边开始比较,一次一个字符)。作为数值数据类型,数值才能正确排序。串数据类型有两种基本的串类型,分别为定长串和变长串:定长串接受长度原创 2020-06-22 00:21:13 · 310 阅读 · 0 评论 -
MySQL数据库维护和改善性能
备份数据 由于MySQL数据库是基于磁盘的文件,普通的备份系统和例程就能备份MySQL的数据。但是,由于这些文件总是处于打开和使用状态,普通的文件副本备份不一定总是有效。下面列出这个问题的可能解决方案。使用命令行实用程序mysqldump转储所有数据库内容到某个外部文件。在进行常规备份前这个实用程序应该正常运行,以便能正确地备份转储文件。可用命令行实用程序mysqlhotcopy从一个数据库复制所有数据(并非所有数据库引擎都支持这个实用程序)。可以使用MySQL的BACKUP TABLE或SEL原创 2020-06-21 23:55:06 · 294 阅读 · 0 评论 -
MySQL访问控制和用户管理
访问控制 你需要给用户提供他们所需的访问权,且仅提供他们所需的访问权。这就是所谓的访问控制,管理访问控制需要创建和管理用户账号。多数用户只需要对表进行读和写,但少数用户甚至需要能创建和删除表;某些用户需要读表,但可能不需要更新表;你可能想允许用户添加数据,但不允许他们删除数据;某些用户(管理员)可能需要处理用户账号的权限,但多数用户不需要;你可能想让用户通过存储过程访问数据,但不允许他们直接访问数据;你可能想根据用户登录的地点限制对某些功能的访问。 不要使用root 应该严肃对待ro原创 2020-06-21 23:32:51 · 350 阅读 · 2 评论 -
MySQL字符集和语言
字符集和语言字符集和校对顺序 数据库表被用来存储和检索数据。不同的语言和字符集需要以不同的方式存储和检索。因此,MySQL需要适应不同的字符集(不同的字母和字符),适应不同的排序和检索数据的方法。在讨论多种语言和字符集时,将会遇到以下重要术语:字符集为字母和符号的集合;编码为某个字符集成员的内部表示;校对为规定字符如何比较的指令。使用字符集和校对顺序mysql> SHOW CHARACTER SET;这条语句显示所有可用的字符集以及每个字符集的描述和默认校对。mysql原创 2020-06-21 22:39:15 · 177 阅读 · 0 评论 -
MySQL事务处理
事务处理是一种机制,用来管理必须成批执行的MySQL操作,以保证数据库不包含不完整的操作结果。利用事务处理,可以保证一组操作不会中途停止,它们或者作为整体执行,或者完全不执行(除非明确指示)。如果没有错误发生,整组语句提交给(写到)数据库表。如果发生错误,则进行回退(撤销)以恢复数据库到某个已知且安全的状态。因此,请看相同的例子,这次我们说明过程如何工作。检查数据库中是否存在相应的客户,如果不存在,添加他/她。提交客户信息。检索客户的ID。添加一行到orders表。如果在添加行到orders原创 2020-06-21 19:33:30 · 270 阅读 · 0 评论 -
MySQL触发器
触发器是MySQL响应以下任意语句而自动执行的一条MySQL语句(或位于BEGIN和END语句之间的一组语句):DELETE;INSERT;UPDATE;其他MySQL语句不支持触发器。创建触发器在创建触发器时,需要给出4条信息:唯一的触发器名;触发器关联的表;触发器应该响应的活动(DELETE、INSERT或UPDATE);触发器何时执行(处理之前或之后)。 保持每个数据库的触发器名唯一 在MySQL 5中,触发器名必须在每个表中唯一,但不是在每个数据库中唯一。这表示同原创 2020-06-21 17:33:32 · 1015 阅读 · 1 评论 -
MySQL游标
游标(cursor)是一个存储在MySQL服务器上的数据库查询,它不是一条SELECT语句,而是被该语句检索出来的结果集。在存储了游标之后,应用程序可以根据需要滚动或浏览其中的数据。MySQL游标只能用于存储过程(和函数)。使用游标在能够使用游标前,必须声明(定义)它。这个过程实际上没有检索数据,它只是定义要使用的SELECT语句。一旦声明后,必须打开游标以供使用。这个过程用前面定义的SELECT语句把数据实际检索出来。对于填有数据的游标,根据需要取出(检索)各行。在结束游标使用..原创 2020-06-21 16:48:19 · 1276 阅读 · 0 评论 -
MySQL存储过程
存储过程简单来说,就是为以后的使用而保存的一条或多条MySQL语句的集合。可将其视为批文件,虽然它们的作用不仅限于批处理。创建存储过程CREATE PROCEDURE productpricing()BEGIN SELECT AVG(prod_price)AS priceaverage FROM products;end;此存储过程名为productpricing,用CREATE PROCEDURE productpricing()语句定义。如果存储过程接受参数,它们将在(.原创 2020-06-21 15:44:16 · 191 阅读 · 0 评论 -
MySQL视图
为什么要使用视图重用SQL语句。简化复杂的SQL操作。在编写查询后,可以方便地重用它而不必知道它的基本查询细节。使用表的组成部分而不是整个表。保护数据。可以给用户授予表的特定部分的访问权限而不是整个表的访问权限。更改数据格式和表示。视图可返回与底层表的表示和格式不同的数据。视图的规则和限制与表一样,视图必须唯一命名(不能给视图取与别的视图或表相同的名字)。对于可以创建的视图数目没有限制。为了创建视图,必须具有足够的访问权限。这些限制通常由数据库管理人员授予。视图可以嵌套,即可以利用原创 2020-06-20 22:39:32 · 152 阅读 · 0 评论 -
MySQL创建和操纵表
表创建基础CREATE TABLE customers( cust_id int NOT NULL AUTO_INCREMENT , cust_name char(50) NOT NULL , cust_address char(50) NULL , cust_city char(50) NULL , cust_state char(5) NULL , cus原创 2020-06-20 16:15:16 · 257 阅读 · 0 评论 -
MySQL插入更新删除数据
数据插入插入完整的行INSERT INTO customersVALUES(NULL, 'Pep E. LaPew', '100 Main Street', 'Los Angeles', 'CA', '90046', 'USA', 'NULL', 'NULL');此例子插入一个新客户到customers表。存储到每个表列中的数据在VALUES子句中给出,对每个列必须提供一个值。如果某个原创 2020-06-20 14:06:49 · 305 阅读 · 0 评论 -
MySQL全文本搜索
启动全文本搜索CREATE TABLE productnotes{ node_id int NOT NULL AUTO_INCREMENT, prod_id char(10) NOT NULL, note_date datetime NOT NULL, note_text text NULL, PRIMARY KEY(note_id), FULLTEXT(note_text)}ENGINE=MyISAM;这些列中有一个名为note_text的列,为原创 2020-06-19 18:50:37 · 322 阅读 · 0 评论 -
MySQL组合查询
多数SQL查询都只包含从一个或多个表中返回数据的单条SELECT语句。MySQL也允许执行多个查询(多条SELECT语句),并将结果作为单个查询结果集返回。这些组合查询通常称为并(union)或复合查询(compound query)。有两种基本情况,其中需要使用组合查询:在单个查询中从不同的表返回类似结构的数据;对单个表执行多个查询,按单个查询返回数据。使用 UNION 价格小于等于5的所有物品的一个列表,而且还想包括供应商1001和1002生产的所有物品(不考虑价格)。mysql&g原创 2020-06-19 17:00:12 · 231 阅读 · 0 评论 -
MySQL联结
创建联结mysql> SELECT vend_name,prod_name,prod_price FROM vendors,products WHERE vendors.vend_id=products.vend_id ORDER BY vend_name,prod_name;+-------------+----------------+------------+| vend_name | prod_name | prod_price |+-原创 2020-06-19 11:23:26 · 232 阅读 · 0 评论 -
MySQL分组数据和子查询
分组数据创建分组mysql> SELECT vend_id,COUNT(*) AS num_prods FROM products GROUP BY vend_id;+---------+-----------+| vend_id | num_prods |+---------+-----------+| 1001 | 3 || 1002 | 2 || 1003 | 7 || 1005 |原创 2020-06-18 16:34:50 · 248 阅读 · 0 评论 -
MySQL函数
常用文本处理函数函 数说 明Left()返回串左边的字符Length()返回串的长度Locate()找出串的一个子串Lower()将串转换为小写LTrim()去掉串左边的空格Right()返回串右边的字符RTrim()去掉串右边的空格Soundex()返回串的SOUNDEX值SubString()返回子串的字符Upper()将串转换为大写mysql> SELECT cust_name,cust_con原创 2020-06-17 10:28:59 · 157 阅读 · 0 评论 -
计算字段
拼接字段mysql> SELECT Concat(vend_name,'(',vend_country,')') FROM vendors ORDER BY vend_name;+----------------------------------------+| Concat(vend_name,'(',vend_country,')') |+----------------------------------------+| ACME(USA)原创 2020-06-16 19:51:56 · 373 阅读 · 0 评论 -
MySQL数据过滤和搜索
操作符AND操作符mysql> SELECT prod_id,prod_price,prod_name FROM products WHERE vend_id=1003 AND prod_price<=10;+---------+------------+----------------+| prod_id | prod_price | prod_name |+---------+------------+----------------+| FB |原创 2020-06-16 17:24:31 · 851 阅读 · 0 评论 -
MySQL检索和过滤数据
注意多条SQL语句必须以分号(;)分隔;SQL语句不区分大小写;在处理SQL语句时,其中所有空格都被忽略;当选择多个列是,一定要在列名之间加上逗号,但最后一个列名后不加。SELECT语句检索单个列mysql> SELECT prod_name FROM products;+----------------+| prod_name |+----------------+| .5 ton anvil || 1 ton anvil || 2 ton anvi原创 2020-06-16 17:24:10 · 239 阅读 · 0 评论 -
MySQL登录退出与导入导出
登录退出MySQL登录命令mysql -u 用户名 -p 密码 -h IP -P 端口mysql -u root -p password -h 127.0.0.1 -P 3306一般登录命令mysql -u 用户名 -p 密码mysql -u root -p #如果在-p后没有提供密码,则会在执行命令后要求用户输入密码完整的命令行选项和参数列表可以用mysql --help获得。退出命令quit 或 exit注意事项命令用 ; 或 \g 结束,换句话说,Enter不原创 2020-06-16 10:01:50 · 384 阅读 · 0 评论 -
在Ubuntu上安装MySQL
在Ubuntu上安装MySQLsudo apt updatesudo apt install mysql-server安装完成后,MySQL服务将自动启动。要验证MySQL服务器正在运行,请输入:sudo systemctl status mysql以root身份登录sudo mysql如果要使用外部程序以root用户身份登录到MySQL服务器,则有两个选择。第一个是将身份验证方法从更改auth_socket为mysql_native_password。您可以通过运行以下命令原创 2020-06-15 15:58:13 · 244 阅读 · 0 评论 -
数据库基础
什么是数据库数据库是一个以某种有组织的方式存储数据的集合。数据库(database) 保存有组织的数据的容器(通常是一个文件或一组文件)。要注意的是数据库软件应称为DBMS(数据库管理系统)。数据库是通过DBMS创建和操纵的容器。表表是一种结构化的文件,可用来存储某种特定类型的数据。表(table) 某种特定类型数据的结构化清单。数据库中的每个表都有一个名字,用来标识自己。此名字是唯一的,但不同数据库中却可以使用相同的表明。模式(schema) 关于数据库和表的布局及特性的信息。原创 2020-05-24 14:54:00 · 622 阅读 · 1 评论