2021-06-19对于sql表的语句结构进行总结,包括数据库引擎,创建数据库表,更改表结构,查看表结构,删除表结构,select语句,insert语句,delete语句,update语句

MyISAM和InnoDB存储引擎

MySQL5.6默认的默认的存储引擎是InnoDB。
InnoDB存储引擎的特点
支持外键(Foreign Key)
支持事务(Transaction):如果某张表主要提供OLTP支持,需要执行大量的增、删、改操作(insert、delete、update语句),出于事务安全方面的考虑,InnoDB存储引擎是更好的选择。
最新版本的MySQL已经开始支持全文检索。

MyISAM存储引擎的特点
MyISAM具有检查和修复表的大多数工具。
MyISAM表可以被压缩
MyISAM表最早支持全文索引
但MyISAM表不支持事务
但MyISAM表不支持外键(Foreign Key)。
如果需要执行大量的select语句,出于性能方面的考虑,MyISAM存储引擎是更好的选择。
—————————————————————————分割线———————————————————————————

创建数据库表:

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
[([column_definition],…|[index_definition])]
[table_option] [select_statement];
CREATE TABLE 表名称
(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,

)

TEMPORARY:创建临时表(不加TEMPORARY创建的表称为持久表,持久表一旦创建将一直存在,多个用户或者多个应用程序可以同时使用持久表),临时表的生命周期短,而且只能对创建它的用户可见,当断开与该数据库的连接时,MySQL会自动删除临时表。
IF NOT EXISTS:建表前先判断,用以避免出现表已存在无法再新建错误。
table_option:用于描述表的选项。

table_name:要创建的表的表名。该表名必须符合标志符规则,如果表名中包含MySQL保留字,则必须用单引号括起来。
column_definition:列定义,包括列名、数据类型,可能还有一个空值声明和一个完整性约束。
index_definition:表索引项定义,主要定义表的索引、主键、外键等,具体定义将在第5模块中讨论。
select_statement:可以在CREATE TABLE语句的末尾添加一个SELECT语句,在一个表的基础上创建表。
—————————————————————————分割线———————————————————————————

更改表结构 alter_specifi

cation:用于指定修改的内容,其格式如下:
ADD [COLUMN] column_definition [FIRST|AFTER col_name ] /增加列/
| ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
| CHANGE [COLUMN] old_col_name column_definition /修改属性名/
| MODIFY [COLUMN] column_definition [FIRST | AFTER col_name] /列属性/
| DROP [COLUMN] col_name /删除列/
| RENAME [TO] new_tbl_name /重命名该表/
| ORDER BY col_name /排序/
| CONVERT TO CHARACTER SET charset_name [COLLATE collation_name]
| [DEFAULT] CHARACTER SET charset_name [COLLATE collation_name]
| table_options

其中的参数含义如下:
ADD [COLUMN]子句:向表中增加新列。
column_definition:定义列的数据类型和属性。
col_name:指定的列名。
FIRST | AFTER col_name:表示在某列的前或后添加,不指定则添加到最后。
ALTER [COLUMN]子句:修改表中指定列的默认值。
CHANGE [COLUMN]子句:修改列的名称。重命名时,需给定旧的和新的列名称和列当前的类型,old_col_name表示旧的列名。column_definition中定义新的列名和当前数据类型。

MODIFY [COLUMN]子句:修改指定列的类型。
DROP子句:从表中删除列或约束。
RENAME子句:修改该表的表名,new_tbl_name是新表名。
ORDER BY子句:用于在创建新表时,让各行按一定的顺序排列。注意,在插入和删除后,表不会仍保持此顺序。在对表进行了大的改动后,通过使用此选项,可以提高查询效率。在有些情况下,如果表按列排序,对于MySQL来说,排序可能会更简单。
table_options:修改表选项,具体定义与CREATE TABLE语句中一样。
—————————————————————————分割线———————————————————————————

查看表结构

DESCRIBE tb1_name [col_name];
其中:参数col_name可以是单列的名称,也可以是包含“%”和“_”通配符的字符串。
—————————————————————————分割线———————————————————————————

删除表结构

DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] …
—————————————————————————分割线———————————————————————————

select语句

SELECT [ALL|DISTINCT] <目标列表达式> [AS 列名]
[,<目标列表达式> [AS 列名] …] FROM <表名> [,<表名>…]
[WHERE <条件表达式> [AND|OR <条件表达式>…]
[GROUP BY 列名 [HAVING <条件表达式>>
[ORDER BY 列名 [ASC | DESC> limit 显示几列 或(开始行号,取多少列(2,1)第三行开始取到一列) offset 需要跳过几列

解释:[ALL|DISTINCT] ALL:全部; DISTINCT:不包括重复行
<目标列表达式> 对字段可使用AVG、COUNT、SUM、MIN、MAX、运算符等
<条件表达式>
查询条件 谓词
比较 =、>,<,>=,<=,!=,<>,
确定范围 BETWEEN AND、NOT BETWEEN AND
确定集合 IN、NOT IN
字符匹配 LIKE(“%”匹配任何长度,“_”匹配一个字符)、NOT LIKE
空值 IS NULL、IS NOT NULL子查询 ANY、ALL、EXISTS
集合查询 UNION(并)、INTERSECT(交)、MINUS(差)
多重条件 AND、OR、NOT
<GROUP BY 列名> 对查询结果分组
[HAVING <条件表达式>] 分组筛选条件
[ORDER BY 列名 [ASC | DESC> 对查询结果排序;ASC:升序 DESC:降序

多表连接还有自然连接,内连接,左右连接,要注意join后面要接on语句写公共列的健相等

—————————————————————————分割线———————————————————————————

insert字句

解释:
插入语句
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,…)] VALUES ({expr | DEFAULT},…),(…),…
| SET col_name={expr | DEFAULT}, …
[ ON DUPLICATE KEY UPDATE col_name=expr, … ];
tb1_name:被操作的表名。
col_name:需要插入数据的列名。
VALUES子句:包含各列需要插入的数据清单,数据的顺序要与列的顺序相对应。
LOW_PRIORITY:可以使用在INSERT、DELETE和UPDATE等操作中,当原有客户端正在读取数据时,延迟操作的执行,直到没有其他客户端从表中有新的读取请求(仅适用于MyISAM、MEMORY和ARCHIVE表)。读取为止。
DELAYED:若使用此关键字,则服务器会把待插入的行放到一个缓冲器中,而发送INSERT DELAYED语句的客户端会继续运行。
HIGH_PRIORITY:可用在SELECT和INSERT操作中,使操作优先执行。
IGNORE:使用此关键字,在执行语句时出现的错误就会被当做警告处理。
—————————————————————————

delete语句

DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name
       [WHERE where_definition] [ORDER BY ...] [LIMIT row_count];

QUICK:快速删除。
FROM:用于说明从何处删除数据,tbl_name为要删除数据的表名。
WHERE:where_definition中的内容为指定的删除条件。如果省略WHERE子句则删除该表的所有行。
ORDER BY:各行按照子句中指定的顺序进行删除,此子句只在与LIMIT联用时才起作用。
LIMIT:被删除的行的最大值。

如果想删除表中的所有记录,还可用TRUNCATE TABLE语句。由于TRUNCATE TABLE语句将删除表中的所有数据,且无法恢复,因此使用时必须十分小心。

TRUNCATE TABLE的格式:
TRUNCATE TABLE table-name;

—————————————————————————分割线———————————————————————————

update语句

UPDATE [ ONLY ] table SET column = { expression | DEFAULT } [, …]
[ FROM fromlist ]
[ WHERE condition ]
描述
UPDATE 改变满足条件的所有行的声明了的列/字段的值。 只有要更改的列/字段需要在 SET 子句中出现,没有明确修改的字段保持它们原来的数值。

缺省时,UPDATE 将更新所声明的表和所有子表的记录。 如果你希望只更新所声明的表,你应该使用 ONLY 子句。

使用存在于同个数据库里其它表的信息来更新一个表,有两种方法可以用: 使用子查询,或者在 FROM 子句里声明另外一个表。 哪个方法更好取决于具体的环境。

要更改表,你必须对它有UPDATE 权限, 同样对 expression 或者 condition 条件里提到的任何表也要有SELECT权限。
参数

table
现存表的名称(可以有模式修饰)。
column
表 table 中字段名。 必要时,字段名可以用子域名或者数组下标修饰。
expression
赋予列/字段的一个有效的值或表达式。表达式可以使用表中这个或其它字段的旧数值。
DEFAULT
把字段设置为它的缺省值(如果没有缺省表达式赋予它,那么就是 NULL)。
fromlist
一个表表达式的列表,允许来自其它表中的字段出现在 WHERE 条件里。 这个类似于可以在一个 SELECT 语句的 FROM 子句 里声明表列表。请注意目标表绝对不能出现在 fromlist 里, 除非你是在使用一个自连接(这个时候,它必须以 fromlist 的一个别名的形式出现)。
condition
一个表达式,返回 boolean 类型。只有这个表达式返回 true 的行被更新。
输出
成功完成后,UPDATE 命令返回形如
UPDATE count
的命令标签。count 是更新的行数。 如果 count 是 0, 那么没有符合 condition 的行
—————————————————————————分割线———————————————————————————
最后推荐两个学习sql的网站:
https://www.runoob.com/sql/sql-tutorial.html
https://www.w3school.com.cn/sql/index.asp

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值