MySQL常用语句

debugjoker 2017-03-02

一、前言

今天天气很好,大晴天,心情也好好的。就将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;

相关推荐