MySQL常用语句

一、前言

  今天天气很好,大晴天,心情也好好的。就将MySQL常用的语句总结一下,记录在随笔里,也顺便分享分享。日后,这篇随笔我将会持续更新,作为我自己的MySQL语句大全。

二、常用SQL语句

  我将由外到里进行编写(数据库到表再到数据)

  库层:

  1、SHOW DATABASES;

  2、CREATE DATABASE dbname;

  3、DROP DABABASE dbname;

  4、ALTER DATABASE dbname set=新字符集 collate=新校对集;

  5、USE dbname;

  6、SHOW CREATE DATABASE dbname;

  表层:

  1、创建表形式:

  CREATE TABLE tabname

  (

           字段名1,数据类型 [列级别约束条件] [默认值],

       字段名1,数据类型 [列级别约束条件] [默认值],

     …

      [表级别约束条件]

  );

    a、使用主键约束PRIMARY KEY

       两个地方添加:1、列约束条件位置(PRIMARY KEY)  2、表级别约束条件位置([CONSTRAINT <约束名>]  PRIMARY KEY [字段名])

    b、使用唯一性约束UNIQUE

       同上两个地方添加:1、UNIQUE  2、[CONSTRAINT <约束名>]  UNIQUE(<字段名>)

       与主键的区别,两者同样要求唯一,但是UNIQUE可以是NULL,主键不可以。且一个表中PRIMARY KEY只能是一个,UNIQUE可以存在多个。

    c、使用外键约束(InnoDB) FOREIGN KEY

       一个地方添加:1、表级别约束条件位置添加 [CONSTRAINT <外键名>]  FOREIGN KEY 字段名1[,字段名2,…]  REFERENCES <主表名> 主键列 [,主键列2,….]

    注意:两个表之间有了外键的联系,不能直接删除主表,否则会出错!若必须要删除主表,可以先删除外键,再来删除主表。

    d、非空约束 NOT NULL

       一个地发添加:1、列约束条件位置  NOT NULL

    e、使用默认约束 DEFAULT

       一个位置添加:1、列约束条件位置  DEFAULT 默认值

    f、设置表的属性值自动增加  AUTO_INCREMENT

       一个位置添加:1、列约束条件位置  AUTO_INCREMENT

    注意:此时的列必须是主键或者唯一键!

    索引问题:以下是普通索引、全文索引、空间索引。上面创建约束的同时也是创建相应的索引,主键索引、唯一索引等等。

    g、普通索引 INDEX/KEY

       一个位置添加:1、列约束条件位置  INDEX(<字段名>);

    h、全文索引(MyISAM) FULLTEXT

       一个位置添加:1、列约束条件位置  FULLTEXT KEY [‘名字’] (‘字段名’);

    i、创建空间索引(MyISAM) SPATIAL

       一个位置添加:1、列约束条件位置  SPATIAL KEY [‘名字’] (‘字段名’);

  2、DESCRIBE/DESC tabname;

  3、SHOW CREATE TABLE tabname;

  4、DROP TABLE [IF EXISTS] <表名>;

  5、ALTER TABLE <表名> ENGINE=<更改后的存储引擎>;

  6、ALTER TABLE <旧表名> RENAME [TO] <新表名>;

  7、ALTER TABLE <表名> MODIFY <字段名> <数据类型>;

  8、ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>;

  9、ALTER TABLE <表名> ADD <新字段名> <新字段类型> [约束条件] [FIRST|AFTER 已存在的字段名];

  10、ALTER TABLE <表名> MODIFY <字段1> <数据类型> FIRST|AFTER <字段2>;

  11、ALTER TABLE <表名>DROP <字段名>;

  #在已有的表上创建索引

  12、ALTER TABLE <表名> ADD INDEX [索引名] (字段名);

  13、ALTER TABLE <表名> ADD PRIMARY KEY (字段名);

  14、ALTER TABLE <表名> ADD FOREIGN KEY (字段名) REFERENCES <主表名> (主键字段);

  15、ALTER TABLE <表名> ADD UNIQUE KEY (字段名);

  16、ALTER TABLE <表名> ADD FULLTEXT KEY(字段名);

  17、ALTER TABLE <表名> ADD SPATIAL KEY (字段名);

  18、ALTER TABLE <表名> ALTER <字段名> SET DEFAULT 默认值;

  #删除索引

  19、ALTER TABLE <表名> ALTER <字段名> DROP DEFAULT;

  20、ALTER TABLE <表名> DROP PRIMARY KEY;

  21、ALTER TABLE <表名> DROP FOREIGN KEY 外键名;

  22、ALTER TABLE <表名> DROP INDEX 索引名;

  23、DROP INDEX index_name ON tabname;

  数据层:

  1、插入数据

  INSERT INTO tabname (column_list) VALUES (value_list);

  INSERT INTO tabname (column_list) VALUES (value_list1),(value_list2),….,(value_listn);

  INSERT INTO tabname SET 字段名1=值1,字段名2=值2,…..,字段名n=值n;\

  2、更新数据

  UPDATE tabname SET column_name1=value1,column_name2=value2,…column_namen=valuen WHERE (condition);

  3、删除数据

  DELETE FROM tabname[WHERE <condition>];

  TRUNCATE [TABLE] tabname;

  DELETE与TRUNCATE的区别:TRUNCATE直接删除整个表,再创建一个一模一样的表。

  4、数据查询

  (1)、SELECT {*|<字段列表>}

  [

  FROM <表1>,<表2>,…,<表n>

  WHERE <表达式>

  GROUP BY <分组字段>

  HAVING <expression>

  ORDER BY <排序字段>

  LIMIT <num>

  ]

  (2)、SELECT [字段1,字段2,…,字段n] from [表|视图] WHERE [查询条件];

  (3)、连接查询

  a、内连接查询  SELECT tab1.* tab2.* FROM tab1 INNER JOIN tab2 ON <condition>;

  b、左连接查询  SELECT tab1.* tab2.* FROM tab1 LEFT [OUTER] JOIN tab2 ON <condition>;

  c、右连接查询  SELECT tab1.* tab2.* FROM tab1 RIGHT [OUTER] JOIN tab2 ON <condition>;

  (4)、合并查询结果

       SELECT column,… FROM tab1

       UNION [ALL]

       SELECT column,…FROM tab2;

(以上是自己的一些见解,若有不足或者错误的地方请各位指出)

作者:那一叶随风

声明:本博客文章为原创,只代表本人在工作学习中某一时间内总结的观点或结论。转载时请在文章页面明显位置给出原文链接。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏跟着阿笨一起玩NET

SQL Server 2008中的Pivot和UnPivot

今天给新成员讲解PIVOT 和 UNPIVOT示例,顺便整理了一下其用法。这是自SQL Server 2005起提供的新功能。

13220
来自专栏calmound

操作数据表

打开数据库    use 数据库 ---- use mydata 查看数据库    show databases 显示当前用户打开的数据库   SELECT ...

33060
来自专栏Netkiller

新闻数据库分表案例

文章节选自《Netkiller Architect 手札》 6.3. 新闻数据库分表案例 这里我通过一个新闻网站为例,解决分表的问题 避免开发中经常拼接表,我采...

43360
来自专栏乐沙弥的世界

Oracle 分区索引

    分区索引(或索引分区)主要是针对分区表而言的。随着数据量的不断增长,普通的堆表需要转换到分区表,其索引呢,则对应的转换到分区索引。分区索引的好处是显而易...

34210
来自专栏深度学习之tensorflow实战篇

SQl 语句(常见) 新建,删除,修改表,新增字段,修改默认值

SQl 语句(常见) 新建,删除,修改表结构 新建表: create table [表名] ( [自动编号字段] int IDENTITY (1,1) PRIM...

33790
来自专栏静默虚空的博客

sql 语言

sql 语言 DDL DDL 全称 Data Definition Language,即数据定义语言。 DATABASE 创建数据库 CREATE DATABA...

22170
来自专栏一个会写诗的程序员的博客

SELECT 语句中的 子查询(Sub Query)

子查询(Sub Query)或者说内查询(Inner Query),也可以称作嵌套查询(Nested Query),是一种嵌套在其他 SQL 查询的 WHERE...

21120
来自专栏性能与架构

MySQL查看数据库占用空间大小

MySQL数据库占用的空间、表记录的行数在MySQL的 information_schema 数据库。 在该库中有一个 TABLES 表,这个表主要字段分别是:...

39350
来自专栏用户2442861的专栏

mysql 创建 主键索引 唯一索引 全文索引 多列索引 添加索引

ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )

84910
来自专栏散尽浮华

mysql操作命令梳理(1)-索引

1、创建索引 索引的创建可以在CREATE TABLE语句中进行,也可以单独用CREATE INDEX或ALTER TABLE来给表增加索引。以下命令语句分别展...

23160

扫码关注云+社区

领取腾讯云代金券