MySQL是一种流行的开源关系数据库,可用于构建各种Web数据库-从简单的数据库,分类一些基本信息(如书籍推荐)到更复杂的数据仓库,并托管数十万条记录。
对于已经了解PHP或Perl的人来说,学习MySQL是一个不错的下一步。在这种情况下,您可以创建与MySQL数据库实时交互的网站,并向用户显示可搜索和分类的记录。
MySQL速查表旨在帮助我们可以快速的找到mysql语法,进行mysql开发。
文章目录
–
” 开头。破折号之后到行尾的所有文本都不会被编译器考虑在内。– Update all:
SELECT * FROM Movies;
/*
和开头*/
。同样,任何超出斜线的文本都将被编译器忽略。例:
/*Select all the columns
of all the records
in the Movies table:*/
SELECT * FROM Movies;
要开始使用MySQL,您需要在服务器上建立活动的SSH会话。
mysql -u root -p
如果您没有为MySQL超级用户设置密码,则忽略该-p
开关。接下来,您可以创建一个新的测试用户进行练习。
为此,请运行以下命令:
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
如果以后需要删除用户,请使用以下命令:
DROP USER 'someuser'@'localhost';
创建新数据库:
CREATE DATABASE dbname
然后,您可以使用以下命令查看所有数据库:
show databases;
切换数据库:
use test;
DROP DATABASE dbName
如果您已经完成一天的工作,只需exit
在命令行中输入“ ”即可完成会话。SELECT
-从数据库中选择特定数据。UPDATE
—更新数据库中的数据。DELETE
—从数据库中删除数据。INSERT INTO
—将新数据插入数据库。CREATE DATABASE
—生成一个新的数据库。ALTER DATABASE
—修改现有数据库。CREATE TABLE
—在数据库中创建一个新表。ALTER TABLE
—更改选定的表。DROP TABLE
—删除表。CREATE INDEX
—创建一个索引(所有存储信息的搜索键)。DROP INDEX
—删除索引。表是MySQL数据库的关键元素,因为它们使您可以将所有信息一起存储在有组织的行中。每行由具有指定数据类型的列组成。
CREATE TABLE [IF NOT EXISTS] table_name(
column_list
);
下面的代码段提供了一个表格,其中列出了我们要通过不同属性来组织的电影列表:
CREATE TABLE movies(
title VARCHAR(100),
year VARCHAR(100),
director VARCHAR(50),
genre VARCHAR(20),
rating VARCHAR(100),
);
使用以下命令来获取有关存储在数据库中的表的更多信息。
SHOW TABLES
—调用与数据库关联的所有表的列表。DESCRIBE table_name;
—查看表格中的列。DESCRIBE table_name column_name;
—查看表中列的信息。要删除表,请在以下命令中指定表名:
DROP TABLE tablename;
表字段
字段的存储类型定义:
CHAR
VARCHAR
TEXT
BLOB
EUT
在为数据库设计列时,您的目标是选择最佳长度以避免浪费空间并最大化性能。
ALTER TABLE table
ADD [COLUMN] column_name;
ALTER TABLE table_name
DROP [COLUMN] column_name;
INSERT INTO table_name (field1, field2, ...) VALUES (value1, value2, ...)
SELECT value1, value2 FROM field1
SELECT * FROM movies WHERE budget='1'; SELECT * FROM movies WHERE year='2020' AND rating='9';SELECT * FROM movies WHERE budget='1';
SELECT * FROM movies WHERE year='2020' AND rating='9';
DELETE FROM movies WHERE budget='1';
UPDATE table_name SET column1 = value1, ...;
UPDATE table_name
SET column1 = value1,
...;
UPDATE table_name SET column_1 = value_1, WHERE budget='5'
UPDATE table_name
SET column_1 = value_1,
WHERE budget='5'
UPDATE table_name
INNER JOIN table1 ON table1.column1 = table2.column2
SET column1 = value1,
WHERE budget='5'
ALTER TABLE movies MODIFY COLUMN number INT(3)
SELECT * FROM users ORDER BY last_name DESC;
SELECT * FROM users ORDER BY last_name ASC; SELECT * FROM users ORDER BY last_name DESC;
SELECT * FROM movies WHERE genre LIKE 'com%'; SELECT * FROM movies WHERE title LIKE '%a';
SELECT * FROM movies WHERE genre LIKE 'com%';
SELECT * FROM movies WHERE title LIKE '%a';
您还可以使用NOT LIKE以下方法从搜索中排除某些项目:
SELECT * FROM movies WHERE genre NOT LIKE 'hor%';
SELECT * FROM movies WHERE genre NOT LIKE 'hor%';
SELECT * FROM movies WHERE rating BETWEEN 8 AND 10;
CONCAT
功能混在一起:SELECT CONCAT(first_name, ‘ ‘, last_name) AS ‘Name’, dept FROM users;
数据类型指示可以在表的特定列中存储的信息类型。MySQL具有三种主要的数据类型类别:
除非进行编程,否则MySQL列的显示宽度不会限制您可以在那里存储的值的范围。另外,如果没有数字数据类型integer,则如果包含的值太宽,则列可能无法正确显示宽度。
为防止这种情况,您可以使用以下整数指定最大允许值范围。您可以:
给列分配一个特定的数值
或保留一个无符号值。
BIT[(M)]
—指定位值类型。M
代表每个值的位数,范围从1到64。如果未指定T,则默认值为1。ZEROFILL
—自动将UNSIGNED属性添加到该列。从MySQL 8.0.17版本开始不推荐使用。TINYINT(M)
—介于-128到127之间的最小整数。TINYINT(M) [UNSIGNED]
—范围是0到255。BOOL
,BOOLEAN
—的同义词TINYINT(1)
SMALLINT(M)
—范围为-32768和32767的小整数。SMALLINT(M) [UNSIGNED]
—范围是0到65535。MEDIUMINT(M)
—介于-8388608至8388607之间的中整数。MEDIUMINT(M) [UNSIGNED]
—范围是0到16777215。INT(M)
和INTEGER (M)
-与到2147483647范围内的-2147483648正常范围的整数。INT(M)[UNSIGNED]
和INTEGER (M)[UNSIGNED]
—范围是0到4294967295。BIGINT(M)
—范围从-9223372036854775808到9223372036854775807的最大整数。BIGINT(M) [UNSIGNED]
—范围是0到8446744073709551615。DECIMAL (M, D)
—将双精度值存储为字符串。M
指定总位数。D
代表小数点后的位数。方便存储货币值。M
为65。如果省略,则默认M
值为10。D
为30。如果省略,则默认D
值为0。FLOAT (M, D)
—记录一个带有浮点小数点的近似数字。从FLOAT
MySQL 8.0.17及更高版本开始,对该支持的删除。BLOB
二进制范围使您可以存储大量文本数据。a的最大长度BLOB
为65,535(2^16 − 1) 字节。BLOB
值使用2字节长的前缀存储。注意:由于文本数据会变长,因此请始终仔细检查您未超过最大长度。如果超出限制,系统通常会生成警告。但是,如果非空格字符被截断,则可能会收到错误而没有警告。TINYBLOB
—将最大列长度设置为255(2^8 − 1)字节。TINYBLOB
值使用1字节长的前缀存储。MEDIUMBLOB
—将最大列长度设置为16,777,215(2^24 − 1)字节。MEDIUMBLOB
值使用3字节长的前缀存储。LONGBLOB
—将最大列长度设置为4,294,967,295或4GB(2^32 − 1)字节。LONGBLOB
值使用4字节长的前缀存储TEXT
做相同的工作,但保留较小长度的值。甲TEXT
列可以有一个最大长度65535(2^16 – 1)字符。但是,如果该值包含多字节字符,则最大长度可以更小。TEXT
值也使用2字节长的前缀存储。TINYTEXT
—使用1字节长的前缀存储值。支持的最大列长度为255(2^8 − 1)个字符。MEDIUMTEXT
—使用3字节长的前缀存储值。支持的最大列长度为16,777,215(2^24 − 1)个字符。LONGTEXT
—使用4字节长的前缀存储值。支持的最大列长度为4,294,967,295或4GB(2^32 − 1)字符。CHAR
—指定可以存储的最大非二进制字符数。范围是0到255。VARCHAR
—存储长度可变的非二进制字符串。您可以存储的最大字符数为65,535(等于最大行大小)。VARCHAR
值与值不同,存储为1字节或2字节长的前缀加数据CHAR
。BYNARY
—以字节字符串的形式存储二进制数据。类似于CHAR
。VARBYNARY
—以字节字符串的形式存储可变长度的二进制数据。类似于VARCHAR
。ENUM
—存储在创建表时在列规范中枚举的允许的文本值。ENUM
列最多可以包含65,535个不同的元素,并且其中的>超过255个唯一元素列表定义ENUM
。SET
—另一种存储从预定义值列表中选择的文本值的方法。SET
列最多可包含64个不同的成员,并且其中的>超过255个唯一元素列表定义SET
。顾名思义,此数据类型可让您以不同的格式存储时间数据。
DATE
—仅将其用于具有日期部分的值。MySQL DATE
以’ YYYY-MM-DD
‘格式显示值。DATETIME
—记录具有日期和时间部分的值。显示格式为“ YYYY-MM-DD hh:mm:ss
”。TIMESTAMP
—增加精度,以记录具有日期和时间部分的值,直到UTC的微秒。TIME
—仅以“ hh:mm:ss
”或“ hhh:mm:ss
”格式记录时间值。后者可以表示经过的时间和时间间隔。YEAR
—使用此1字节类型存储年份值。YEAR
值显示为0000,范围为1901至2155。YEAR
值显示为00。可接受的范围是“ 0”到“ 99”,MySQL会转换YEAR
2000到2069和1970到1999范围内的值。数据库索引可以加快数据看数据查询。
基本语法如下:
CREATE INDEX index_name
ON table_name (column1, column2, ...);
您还可以创建一个唯一索引-一个可在一个或多个列中强制值唯一的索引。
CREATE UNIQUE INDEX index_name
ON table_name(index_column_1,index_column_2,...);
为此,请使用DROP命令:
DROP INDEX index_name;
CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;
由于数据库引擎每次都使用视图的SQL语句重新创建数据,因此视图始终显示新数据。要刷新视图,请使用以下代码:
CREATE OR REPLACE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;
RENAME TABLE view_name TO new_view_name;
SHOW FULL TABLES
WHERE table_type = 'VIEW';
DROP
命令:DROP VIEW [IF EXISTS] view_name;
您也可以一次删除多个视图:
DROP VIEW [IF EXISTS] view1, view2, ...;
触发器是与表关联的数据库对象。每当表发生特定事件时,它将激活。
例如,您可以为以下事件设置触发器:
这是一个更高级的主题,因此请查看官方的MySQL触发器常见问题解答部分以获取更多详细信息。
INSERT
,UPDATE
或者DELETE
,使用此代码:CREATE TRIGGER trigger_name
{BEFORE | AFTER} {INSERT | UPDATE| DELETE }
ON table_name FOR EACH ROW
trigger_body;
LIKE
和WHERE
子句在数据库中搜索所有活动触发器。SHOW TRIGGERS
[{FROM | IN} database_name]
[LIKE 'pattern' | WHERE search_condition];
DROP
命令:DROP TRIGGER [IF EXISTS] trigger_name;
存储过程是可重用的SQL代码段,您可以将其存储在数据库中,并根据需要反复使用。因为您不需要从头开始编写查询,所以它们可以节省大量时间。相反,您只需调用它即可执行它。
以下是创建简单的没有附加参数的存储过程的方法:
CREATE PROCEDURE procedure_name
AS
sql_tatement
GO;
这是另一个带有WHERE
子句的存储过程示例:
CREATE PROCEDURE SelectAllMovies @Title varchar(30) AS SELECT \* FROM Movies WHERE Title = @Title GO;
CREATE PROCEDURE SelectAllMovies @Title varchar(30)
AS
SELECT \* FROM Movies WHERE Title = @Title
GO;
LIKE
和查看所有存储过程WHERE
:SHOW PROCEDURE STATUS
[LIKE 'pattern' | WHERE search_condition];
DROP
:DROP PROCEDURE [IF EXISTS] procedure_name;
WHERE
子句中添加多个条件。这使它们非常方便地用于更高级的搜索,更新,插入和删除查询。在MySQL中,您具有三个主要的逻辑运算符:
AND
—用它来过滤依赖于1+条件的记录。这样,您可以调用满足所有条件(由分隔)的记录AND
。OR
—满足用分隔的任何条件的通话记录OR
。NOT
—查看不符合特定条件的记录(例如NOT blue
)。排除某些数据是很方便的运算符。另外,还有一些特殊的运算符:
BETWEEN
—在设置的最大值和最小值之间选择或搜索数据。LIKE
—将一条记录与另一条记录进行比较。方便的搜索运算符。IS NULL
—将一些值与一个NULL
值进行比较。IN
—确定一个值或表达式是否与列表中的值之一匹配。ALL
—将值或表达式与列表中的所有其他值进行比较。ANY
—根据指定条件将值或表达式与列表中的任何值进行比较。EXISTS
—测试是否存在特定记录。GROUP BY
and HAVING
子句更快地找到所需数据并更好地组织所需数据的好方法SELECT
。以下是这些内容的概述:
在表中找到所选列的最小值:
SELECT MIN (column_name)
FROM table_name
WHERE condition;
进行相反的操作并返回所选列的最大值:
SELECT MAX (column_name)
FROM table_name
WHERE condition;
调用满足指定条件的几行:
SELECT COUNT (column_name)
FROM table_ame
WHERE condition;
获取所选数字列的平均值:
SELECT AVG (column_name)
FROM table_ame
WHERE condition;
收到您选择的数字列的总和:
SELECT SUM(column_name)
FROM table_ame
WHERE condition;
最后,在测试不同的命令和代码片段时,请不要忘记定期备份进度。
有几种简单的方法可以做到这一点。
要将数据库备份到SQL文件,请使用以下代码:
mysqldump -u Username -p dbNameYouWant > databasename_backup.sql
然后,要从SQL备份还原工作,请运行以下行:
mysql - u Username -p dbNameYouWant < databasename_backup.sql
首先,学习如何编写MySQL数据库代码似乎是一项繁琐的任务。但是一旦掌握了基本的MySQL命令和语法,就可以成功了。了解MySQL可以使您在Web开发中占优势,尤其是在电子商务网站和在线商店中。