视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
MySQL语法
2025-10-08 02:19:03 责编:小OO
文档

MySQL语法语句大全

一、SQL速成  

结构查询语言(SQL)是用于查询关系数据库的标准语言,它包括若干关键字和一致的语法,便于数据库元件(如表、索引、字段等)的建立和操纵。  

以下是一些重要的SQL快速参考,有关SQL的语法和在标准SQL上增加的特性,请查询MySQL手册。  

1.创建表  

表是数据库的最基本元素之一,表与表之间可以相互,也可以相互关联。创建表的基本语法如下:  

create table table_name  

(column_name data无效 {identity |null|not null},  

…)  

其中参数table_name和column_name必须满足用户数据库中的识别器(identifier)的要求,参数data无效是一个标准的SQL类型或由用户数据库提供的类型。用户要使用non-null从句为各字段输入数据。  

create table还有一些其他选项,如创建临时表和使用select子句从其他的表中读取某些字段组成新表等。还有,在创建表是可用PRIMARY KEY、KEY、INDEX等标识符设定某些字段为主键或索引等。  

书写上要注意:  

在一对圆括号里的列出完整的字段清单。  

字段名间用逗号隔开。  

字段名间的逗号后要加一个空格。  

最后一个字段名后不用逗号。  

所有的SQL陈述都以分号";"结束。  

例:  

mysql> CREATE TABLE test (blob_col BLOB, index(blob_col(10)));  

2.创建索引  

索引用于对数据库的查询。一般数据库建有多种索引方案,每种方案都精于某一特定的查询类。索引可以加速对数据库的查询过程。创建索引的基本语法如下:  

create index index_name  

on table_name (col_name[(length)],... )  

例:  

mysql> CREATE INDEX part_of_name ON customer (name(10));  

3.改变表结构  

在数据库的使用过程中,有时需要改变它的表结构,包括改变字段名,甚至改变不同数据库字段间的关系。可以实现上述改变的命令是alter,其基本语法如下:  

alter table table_name alter_spec [, alter_spec ...]  

例:  

mysql> ALTER TABLE t1 CHANGE a b INTEGER;  

4.删除数据对象  

很多数据库是动态使用的,有时可能需要删除某个表或索引。大多数数据库对象可以下面的命令删除:  

drop object_name  

mysql> DROP TABLE tb1;  

5.执行查询  

查询是使用最多的SQL命令。查询数据库需要凭借结构、索引和字段类型等因素。大多数数据库含有一个优化器(optimizer),把用户的查询语句转换成可选的形式,以提高查询效率。  

值得注意的是MySQL不支持SQL92标准的嵌套的where子句,即它只支持一个where子句。其基本语法如下:  

SELECT [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [HIGH_PRIORITY]  

[DISTINCT | DISTINCTROW | ALL]  

select_expression,...  

[INTO {OUTFILE | DUMPFILE} ’file_name’ export_options]  

[FROM table_references  

][WHERE where_definition]  

[GROUP BY col_name,...]  

[HAVING where_definition]  

[ORDER BY {unsigned_integer | col_name | formula} ][ASC | DESC] ,...]  

[LIMIT ][offset,] rows]  

[PROCEDURE procedure_name] ]  

其中where从句是定义选择标准的地方,where_definition可以有不同的格式,但都遵循下面的形式:  

字段名操作表达式  

字段名操作字段名  

在第一种形式下,标准把字段的值与表达式进行比较;在第二种形式下,把两个字段的值进行比较。根据所比较的数据类型,search_condition中的操作可能选以下几种:  

= 检查是否相等  

!= 检查是否不等  

> (或>=) 检查左边值是否大于(或大于等于)右边值  

< (或<=) 检查左边值是否小于(或小于等于)右边值  

[not] between 检查左边值是否在某个范围内  

[not] in 检查左边是否某个特定集的成员  

[not] like 检查左边是否为右边的子串  

is [not] null 检查左边是否为空值  

在这里,可以用通配符_代表任何一个字符,%代表任何字符串。使用关键字可以生成复杂的词,它们运行检查时使用布尔表达式的多重标准集。  

例:  

mysql> select t1.name, t2.salary from employee AS t1, info AS t2 where t1.name = t2.name;  

mysql> select college, region, seed from tournament  

ORDER BY region, seed;  

mysql> select col_name from tbl_name WHERE col_name > 0;  

6.修改表中数据  

在使用数据库过程中,往往要修改其表中的数据,比如往表中添加新数据,删除表中原有数据,或对表中原有数据进行更改。它们的基本语法如下:  

数据添加:  

insert [into] table_name [(column(s))]  

values (expression(s))  

例:  

mysql> INSERT INTO tbl_name (col1,col2) VALUES(15,col1*2);  

数据删除:  

删除 from table_name where search_condition  

数据更改:  

更新 table_name  

set column1=expression1,  

column2=expression2,…  

where search_condition  

7.数据库切换  

当存在多个数据库时,可以用下面的命令定义用户想使用的数据库:  

use database_name  

8.统计函数  

SQL有一些统计函数,它们对于生成数据表格很有帮助。下面介绍几个常用的统计函数:  

sum (exepression) 计算表达式的和  

avg (exepression) 计算表达式的平均值  

count (exepression) 对表达式进行简单的计数  

count (*) 统计记录数  

max (exepression) 求最大值  

min (exepression) 求最小值  

其中exepression为任何有效的SQL表达式,它可以是一个或多个记录,也可以是别的SQL函数的组合。  

二、MySQL使用导引  

1.运用MySQL建立新数据库  

在shell下运行:  

$>mysqladmin create database01  

Database "database01" created.  

2.启动MySQL  

在shell下运行:  

$>mysql  

Welcome to the MySQL monitor. Commands end with ; or g.  

Your MySQL connection id is 22 to server version: 3.21. 29a-gamma-debug  

无效 ’help’ for help.  

3.更换数据库  

mysql>use database01  

database changed.  

4.创建表  

mysql>create table table01 (field01 integer, field02 char(10));  

Query OK, 0 rows affected (0.00 sec)  

5.列出表清单  

mysql>show tables;  

Tables in database01  

Table01  

table02  

6.列出表中的字段清单  

mysql>show columns from table01;  

Field 无效 Null Key Default Extra  

field01 int(11) YES  

field02 char(10) YES  

7.表的数据填写  

插入数据  

mysql>insert into table01 (field01, field02) values (1, ’first’);  

Query OK, 1 row affected (0.00 sec)  

8.字段的增加  

...一次一个字段  

mysql>alter table table01 add column field03 char(20);  

Query OK, l row affected (0.04 sec)  

Records: 1 Duplicates: 0 Warnings: 0  

...一次多个字段  

mysql>alter table table01 add column field04 date, add column field05 time;  

Query OK, l row affected (0.04 sec)  

Records: 1 Duplicates: 0 Warnings: 0  

注意:每一列都必须以"add column"重新开始。  

它运行了吗?让我们看看。  

mysql>select * from table01;  

field01 field02 field03 field04 field05  

1 first NULL NULL NULL  

9.多行命令输入  

MySQL命令行界面允许把陈述作为一行输入,也可以把它展开为多行输入。这两者之间并没有语法上的区别。使用多行输入,你可以将SQL陈述一步步分解,从而使你更容易理解。  

在多行方式下,注释器把每一行都添加到前面的行后,直到你用分号";"来结束这个SQL陈述。一旦键入分号并按回车键,这个陈述即被执行。  

下面的例子是同一个严格的SQL陈述的两种输入方法:  

单行输入  

Mysql>create table table33 (field01 integer, field02 char(30));  

多行输入  

Mysql>create table table33  

->(field01  

->integer,  

->field02  

->char(30));  

注意不能将单词断开,如:  

正确  

mysql>create table table33  

->( field01  

->integer,  

->field02  

->char(30));  

错误  

mysql>create table table33  

->( field01 inte  

->ger,  

->field02  

->char(30));  

当插入或更改数据时,不能将字段的字符串展开到多行里,否则硬回车将被储存到数据中:  

标准操作  

mysql>insert into table33 (field02)  

->values  

->(’who thought of foo?’);  

硬回车储存到数据中  

mysql>insert into table33 (field02)  

->values  

->(’who thought  

->of foo?’);  

结果如下:  

mysql>select * from table33;  

field01 field02  

NULL who thought of foo?  

NULL who thought  

Of foo?  

10.表的数据嵌入  

mysql>insert into table01 (field01, field02, field03, field04, field05) values  

->(2, ’second’, ’another’, ’1999-10-23’, ’10:30:00’);  

Query OK, 1 row affected (0.00 sec)  

标准日期格式是"yyyy-mm-dd"。  

标准时间格式是"hh:mm:ss"。  

引号内要求所给的是上述的标准日期和时间格式。  

日期也可以"yyyymmdd"形式,时间也可以"hhmmss"形式输入,但其值不需要再加引号。  

数字值不需要加引号。这种保存与数据类型无关,这些数据类型都有格式化的专栏来包含(例如:文本,日期,时间,整数等)。  

MySQL有一个很有用的命令缓冲区。它保存着你目前已经键入的SQL语句利用它,对于相同的命令,你就不必一遍又一遍地重复输入。下一步我们就来看这样的一个例子。  

利用命令缓冲区(及任意的日期和时间格式)增加另一个数据  

按两次键盘上的向上箭头键。  

回车。  

在圆括号内输入新的值,并以分号结尾。  

(3, ’a third’, ’more’, 19991024, 103004);  

回车。  

新值存在里面了吗?  

mysql>select * from table01;  

field01 field02 field03 field04 field05  

1 first NULL NULL NULL  

2 second another 1999-10-23 10:30:00  

3 a third more 1999-10-24 10:30:04  

11.表的数据更新  

一次修改一个字段  

再次注意语法。文本需要加引号但数字不要。  

mysql>更新 table01 set field03=’new info’ where field01=1;  

Query OK, 1 row affected (0.00 sec)  

一次改变多个字段  

记住在每一个更新的字段间用逗号隔开。  

mysql>更新 table01 set field04=19991022, field05=062218 where field01=1;  

Query OK, 1 row affected (0.00 sec)  

一次更新多个数据  

mysql>更新 table01 set field05=152901 where field04>19990101;  

Query OK, 3 rows affected (0.00 sec)  

12.删除数据  

mysql>删除 from table01 where field01=3;  

Query OK, 1 row affected (0.00 sec)  

13.退出  

mysql>quit  

Bye  

现在你已经了解了一些运行MySQL中的数据库的根本命令。由于MySQL是通过执行SQL调用来操作的,在你的处理过程中需要一个强有力工具的充足的数组。例如,通过联接相关的字段,你可以同时显示几个表中的数据。同样,SQL允许综合显示、更新或者删除多个符合具体标准的数据。如果你还想精通掌握它,下一步就要学习所有SQL的知识。

数据类型其中的长度以字节为单位

名称 

长度 

用法 

TINYINT(M) 

 

BIT,BOOL,BOOLEAN 

 

 

如果为无符号数,可以存储从0到255的数; 

 

否则可以存储从-128到127的数。 

 

SMALLINT(M) 

 

 

如果为无符号数,可以存储从0到65535的数; 

否则可以存储从-32768到32767的数。 

MEDIUMINT(M) 

 

 

如果为无符号数,可以存储从0到16777215的数;否则可以存储从-8388608到8388607的数 

INT(M) 

 

INTEGER(M) 

 

如果为无符号数,可以存储从0到4294967295的数,否则可以存储从-21474838到21474837的数。 

BIGINT(M) 

 

 

如果为无符号数,可以存储从0到184********709551615的数,否则可以存储从-9223372036854775808到9223372036854775807的数。 

FLOAT(precision) 

 

4或8 

 

这里的precision是可以直达53的整数。如果precision<=24则转换为FLOAT,如果precision>24并且precision<=53则转换为DOUBLE。 

FLOAT(M,D) 单精度浮点数。 

DOUBLE(M,D), 

 

DOUBLE PRECISION, 

 

REAL 

 

双精度浮点。 

 

DECIMAL(M,D), 

 

DEC,NUMERIC,FIXED 

M+1或M+2 

 

未打包的浮点数。 

 

DATE 

 

 

以YYYY-MM-DD的格式显示。 

 

DATETIME 

 

HH:MM:SS 

 

以YYYY-MM-DD的格式显示。 

 

TIMESTAMP 以YYYY-MM-DD的格式显示。 

TIME 以HH:MM:SS的格式显示。 

YEAR 以YYYY的格式显示。 

CHAR(M) 定长字符串。 

VARCHAR(M) 最大M 

变长字符串。M<=255. 

TINYBLOB, 

 

TINYTEXT 

 

最大255 

 

TINYBLOB为大小写敏感,而TINYTEXT不是大小写敏感的。 

 

BLOB, 

 

TEXT 

最大K 

 

BLOB为大小敏感的,而TEXT不是大小写敏感的。 

 

MEDIUMBLOB, 

 

MEDIUMTEXT 

最大16M 

 

MEDIUMBLOB为大小写敏感的,而MEDIUMTEXT不是大小敏感的。 

 

LONGBLOB, 

 

LONGTEXT 

最大4G 

 

LONGBLOB为大小敏感的,而LONGTEXT不是大小敏感的。 

 

ENUM(VALUE1,….) 

 

1或2 

 

最大可达65535个不同的值。 

 

SET(VALUE1,….) 

 

可达8 

 

最大可达个不同的值。 

 

下载本文
显示全文
专题