您的位置:首页 > 数据库 > MySQL

马哥学习笔记十五——MySQL进阶之SQL语句

2014-05-15 11:02 871 查看
数据库:

  create database|schema [if not exists] db_name [character set =] [collate =];

  alter database

  drop {database | schema} [if exists] db_name;

表:

  1、直接定义一张空表;
  2、从其它表中查询出数据,并以之创建新表;
  3、以其它表为模板创建一个空表;

  CREATE TABLE [IF NOT EXISTS] tb_name (col_name col_defination, constraint )

  CREATE TABLE tb1 (id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, Name CHAR(20) NOT NULL, Age TINYINT NOT NULL) ENGINE [=] engine_name;

  CREATE TABLE tb2 (id INT UNSIGNED NOT NULL AUTO_INCREMENT, Name CHAR(20) NOT NULL, Age TINYINT NOT NULL, PRIMARY KEY(id),UNIQUE KEY(name),INDEX(age));

  单字段: PRIMARY KEY UNIQUE KEY

  单或多字段: PRAMARY KEY (col,...) UNIQUE KEY (col,...) INDEX (col,...)

键也称作约束,可用作索引,属于特殊索引(有特殊限定):B+Tree

SHOW INDEXES FROM tb_name:显示指定表上的索引

索引创建:
  CREATE INDEX index_name ON tb_name (col,...);

  col_name [(length)] [ASC | DESC]

查询语句类型:

  简单查询

  多表查询

  子查询

SELECT field1,field2 FROM tb_name; 投影

SELECT [DISTINCT] * FROM tb_name WHERE qualification; 选择

  distinct:相同的值只显示一次

FROM子句: 要查询的关系 表、多个表、其它SELECT语句

WHERE子句:

  布尔关系表达式 =、>、>=、<=、<

  逻辑关系: AND OR NOT

  BETWEEN ... AND ...

  LIKE ‘’

    %: 任意长度任意字符

    _:任意单个字符

  REGEXP, RLIKE:支持正则表达式

  IN:离散取值

  IS NULL

  IS NOT NULL

ORDER BY field_name {ASC|DESC}:将查询后的数据进行排序

字段别名:AS

LIMIT子句:LIMIT [offset,]Count

聚合函数:SUM(), MIN(), MAX(), AVG(), COUNT()

GROUP BY: 分组

  HAVING qualification:对分组过滤

多表查询:
  连接:
    交叉连接:笛卡尔乘积
    自然连接:
    外连接:
      左外连接:... LEFT JOIN ... ON ...
      右外连接: ... RIGHT JOIN ... ON ...
    自连接:

子查询:

  比较操作中使用子查询:

  子查询只能返回单个值;

  IN(): 使用子查询;

  在FROM中使用子查询;

联合查询: UNION

视图: 存储下来的SELECT语句;

  基于基表的查询结果;

  VIEW

  CREATE VIEW

  物化视图:SELECT

SHOW CREATE:显示创建过程

mysql -e 'SQL语句':在shell命令函中执行SQL语句

广义查询:

  DML:

    DELETE

    INSERT INTO

    UPDATE

INSERT INTO tb_name (col1, col2, ...) VALUES (val1, val2, ...)[,(val1, val2, ...),...]

  字符型:单引号

  数值型:不需要引号

  日期时间型:

  空值:NULL, ''

REPLACE INTO

DELETE: DELETE FROM tb_name WHERE condition;

TRUNCATE tb_name: 清空表,并重置AUTOINCREMENT计数器;

UPDATE tb_name SET col1=..., col2=... WHERE
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: