show create table 表名 显示创建表的详细命令
ALTER TABLE 表名 ADD(
列定义1,
列定义2); 添加列
MODIFY COLUMN 列名 列属性; 改列字段 (column可不加)
CHANGE 原列名 新列名 列属性; 改列名
ALTER TABLE 原表名 RENAME TO 新表名; 改表名
DROP PRIMARY KEY; 删除主键,如有外键无法删除主键
ADD CONSTRAINT 约束名 PRIMARY KEY(id); 添加主键
COLUMNS --返回表信息
1、检索数据
LIMIT -- 显示指定行数
ORDER BY子句 --检索排序 ASC--升序/DESC关键字 --降序
WHERE --条件过滤 AND OR操作符 IN NOT操作符
where子句 IS NULL --检查是否空值select
如果要使用通配符(模糊查询),必须使用LIKE操作符 (%通配符匹配多个,_通配符匹配单个)
要使用正则表达式,必须使用REGEXP关键字 (like匹配整个列,如果不使用通配符,那么被匹配的文本在列值中出现,like也不会找到他,相应的行也不被返回。而regexp在列值内匹配,被匹配的文 本在列值中出现,regexp会找到它,相应的行被返回)
计算字段(将几列格式化为新计算字段(字段意思基本与列意思相同))
Concat()函数 --拼接 把值联结到一起构成单个列。 Concat(列名,'','',列名) (没有列名,需要AS加别名才能给客户机引用)
AS 关键字 --列名或计算字段赋予别名)
算数计算 (直接跟检索后边,结果为一列计算过的新计算列。同样需要有列名才可引用)
数据处理函数
文本各处理函数(详见P69)
Soundex() -- 文本串转换,字音比较而不是字母比较。详见P70) Soundex(列名)=Soundex('目标串')
日期时间处理函数 (P71)
Date() (如果日期时间使用了datatime这种数据类型格式,样例表中就全都具有时间值00:00:00,此时只检索日期就会匹配失败。解决办法指示mysql仅将给出的日期与列中的日期部分进行比较,而不是与整个列值比较) Date(列名)
聚集函数(运行在行祖上,作为新结果列出现。计算和返回单个值的函数,比如avg(),count(),max(),sum()) //MAX(DISTINCT(列名)) 可加DISTINCT参数,去掉重复值
-------------------------
数据分组GROUP BY --(允许把数据分为多个逻辑组,以便对每个组进行聚集计算。)
过滤分组HAVING子句 --(和WHERE类似,差别WHERE用来过滤行,HAVING专门过滤分组。)
子查询(嵌套在其他查询中的查询)
利用子查询过滤 --(子查询一般与IN () 操作符使用。跟在过滤后面再次查询,过滤)
作为计算字段使用子查询 -- (跟在SELECT后面括号内再次查询)SELECT ..,..,(子查询)as .. FROM
联结(一个表的主键和另一个有此外键的表列的关联) 可以联结多个表返回一组输出。
多个表联结(其他表要包含有能与某张表组成关系的相同的列,--外键值) (联结类型:目前为等值联结,基于两个表之间的相等测试,也叫内部联结)
高级联结
使用表别名(可以省写调用而不用输入全名) FROM orders AS o,... AS .
自联结 --通常用于在一张表中替代子查询使用(注意同一张表出现在FROM两次,对其的引用具有二义性,所以需要使用表别名)
外部联结 -- 与其他联结一样。一个表中行与另一个表中行相关联(主键外键相关联),不一样地方在于也包含了在相关表中没有关联行的行 (此时需要关键字OUTER JOIN 来指定联结类型,)
组合查询(又或者 并union或复合查询,)
UNION --关键字(可以给出多个SELECT语句,用UNION关键字分隔,把它们的结果组合成单个结果集,必须由两条或以上SELECT语句组成,每个查询必须相同的列,表达式或聚集函数)
全文本搜索(要用到全文本搜索,需要使用MyISAM数据库引擎,InnoDB引擎不支持)
FULLTEXT() 子句 (用在语句定义表时) --对指定列或多个列进行索引。(mysql自动维护该索引,增删改行时,索引随之自动更新)
Match() Against()进行全文本搜索 Match() --指定被搜索的列 Against('')指定要使用的搜索表达式。(这两个函数用在WHERE后)
IN BOOLEAN MODE关键字 --布尔文本搜索。在搜索表达式内和布尔操作符一起进行更细致的查找控制作用 例:Against('rabbit -bai*' IN BOOLEAN MODE)匹配rabbit词,但排除包含有以bai开头的词(全文本布尔操作符详见P128)(布尔搜索方式即使没有定义FULLTEXT索引,也可以使用)
插入数据
INSERT INTO 表名 VALUES () (若要指定插入数据的顺序,表名后跟括号指定他们的顺序。否则按默认顺序)
插入多行 VALUES (),()... 每行以逗号分隔
INSERT INTO 表名() SELECT FROM...(INSERT SELECT 插入其他表检索出的数据)列名、顺序必须一致,可包含WHERE子句过滤插入的数据
更新和删除数据(注意更新、删除如果没有WHERE条件将选择所有行进行操作)
UPDATE --更新数据 UPDATE 表名 SET ... WHERE (更新某个或多个列值数据) 更新多个列应以逗号分隔。如果要删除某个列值,将其=NULL即可
DELETE --删除数据 DELETE FROM 表名 WHERE (删除特定行)
操纵表
CREATE TABLE 表名 --(创建表基础)CREATE TABLE 表名( 表定义-列名,数据类型,是否NULL(前两项必须) )ENGINE=InnoDB 其余可加的关键字 自增AUTO_INCREMENT 主键PRIMARY KEY ()
ALTER TABLE 表名 --(更改表结构,可以添加一个列或删掉一个列),ADD 列名 CHAR(20);必须明确其数据类型,DROP COLUMN 列名 | ALTER TABLE的常见用途是定义外键。FOREIGN KEY 约束,引用完整性(解释说明https://blog.csdn.net/haiross/article/details/50435374) 定义主键和外键主要是为了维护关系数据库的完整性。外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。A表的此字段,如果要插入一行,值必须要和B表主键某一项列值一致。https://blog.csdn.net/bestlove12345/article/details/52127061
DROP TABLE 表名 --(删除整个表而不是删除其内容)
RENAME TABLE --(重命名表名)例:RENAME TABLE vendnew TO vendnewnew
视图(简化复杂SQL语句的使用,如联结 利用视图可以一次性编编写基础的SQL,然后根据需要多次使用)
CREATE VIEW --(创建视图)CREATE VIEW vendor1 AS SQL语句... 使用视图时直接正常检索 FROM 改为视图名 (因为视图可以理解是一张虚拟的表)
存储过程(情景:需要多条语句才能完成的完整的操作。)通过把处理。封装在容易使用的单元中(或理解为方法),简化复杂的操作。
CREATE PROCEDURE --(创建存储过程) CREATE PROCEDURE 存储过程名(参数的传入传出处理) BEGIN .... END;(顿号部分为存储过程代码,例如select max(liushui) from richang; INTO 变量)
CALL --(调用存储过程)CALL 存储过程名(@传递的参数) 注意:调用这条语句不显示任何数据,它返回存储过程处理过的以后可以显示(或其他处理中使用的)变量。 如果想要想要显示:select @变量名
游标(由一条SQL检索出来的结果集,就是游标,沿着游标可以一次取出一行,或前后几行。与检索操作返回的相匹配的行(结果集)不同) DECLARE 游标名 CURSOR FOR 检索SQL 条件语句(条件出现执行的代码); 游标在存储过程里使用
CREATE TABLE 新表名 LIKE 旧表名 -- 复制表的列构造
事务处理
自动提交功能,
AUTOCOMMIT=1(每条SQL直接自动提交)
AUTOCOMMIT=0(可以ROLLBACK回滚操作,但此后如果不执行COMMIT,所有更新的内容不会反映到数据库中)
SAVEPOINT 保存点名 -- 事务中定义一个保存点,可用 ROLLBACK TO SAVEPOINT 保存点名回滚到此时状态