SQL语法

  • LIMIT
    select col from table limit number
    select * from table limit number
  • LIKE
    select * from table where col LIKE '%in%'
    select * from table where col NOT LIKE '%in%'
  • 通配符
    • 通配符必须与LIKE一起使用
    • % -- 替代一个或者多个字符
    • _ -- 替代一个字符
    • [charlist] -- 字符列中的任何单一字符
    • [!charlist] -- 不在字符列中的任何单一字符
    • select * from table where col LIKE '[abc]d_e%'
  • IN 在where中选取多个值
    select * from table where col IN ('zhi1', 'zhi2')
  • BETWEEN ... AND ...
    select * from table where col BETWEEN 'a' AND 'c'
    select * from table where col NOT BETWEEN 'a' AND 'c'
  • Alias
    select A.col, B.col1 from table1 AS A, table2 AS B where A.col = 'zhi1' AND B.col = 'zhi2'
    select col1 AS name1, col2 AS name2 from table
  • JOIN
    select A.col1, B.col2 from tablea AS A, tableb AS B where A.col = B.col
  • INNER JOIN
    select tablea.col1, tableb.col2 from tablea INNER JOIN tableb ON tablea.col = tableb.col
  • LEFT JOIN
    结果会返回左表中所有的行,即使右表中没有匹配的行
    select tablea.col1, tableb.col2 from tablea LEFT JOIN tableb ON tablea.col = tableb.col
  • RIGHT JOIN
    结果返回右表中所有的行,即使右表中没有匹配的行
    select tablea.col1, tableb.col2 from tablea RIGHT JOIN tabelb ON tablea.col = tableb.col
  • FULL JOIN
    结果返回两表中所有的行,即使没有匹配
    select tablea.col1, tableb.col2 from tablea FULL JOIN tableb ON tablea.col = tableb.col
  • UNION 与 UNION ALL
    union 需要有相同数量的列同时数据类型相似,列的顺序也要一致
    union 输出唯一的值; union all 输出所有的值
    select col1, col2 from tablea
    UNOIN ALL
    select col1, col2 from tableb
  • SELECT INTO 创建备份
    select * into tablea_backup from tablea
  • CREATE DATABASE 创建数据库
    create database name
  • CREATE TABLE 创建表
    cerete tbale name (id int, name varchar(255), adress varchar(255))
  • 数据类型
数据类型 描述
int(size) 仅容纳整数
括号内为数字的最大位数
decimal(size,d)
numeric(size, d)
容纳带有小数的数字
size规定数字的最大位数
d规定小数点右侧的最大位数
char(size) 容纳固定长度的字符串
size为规定字符串的长度
varchar(size) 容纳可变长度的字符串
字符串的最大长度
data(yyyymmdd) 容纳日期
  • sql约束可以加在 create table 语句也可以用在alter table语句
  • NOT NULL 不接受空值
    crete table name (id int NOT NULL, name varchar(255) NOT NULL, city varchar(255))
  • UNIQUE 约束唯一标识数据库表中的每条记录
  • 每个表可以有多个unique,但只有一个primary key 约束
  • 创建表时
    crete table name (id int NOT NULL, name varchar(255) NOT NULL, city varchar(255), UNIQUE(id))
    crete table name (id int NOT NULL, name varchar(255) NOT NULL, city varchar(255), CONSTRAINT uc_name UNIQUE (id, city))
  • 更改表时
    alter table name ADD UNIQUE(id)
    alter table name ADD CONSTRAINT uc_name UNIQUE (id, city)
  • 撤销UNIQUE约束
    alter table name DROP INDEX uc_name
  • primry key = unique + not null
  • 每个表中都应该有一个主键,并且只有一个主键
  • 创建表时
    crete table name (id int NOT NULL, name varchar(255) NOT NULL, city varchar(255), PRIMARY KEY (id))
    crete table name (id int NOT NULL, name varchar(255) NOT NULL, city varchar(255), CONSTRAINT pk_name PRIMARY KEY (id, city))
  • 更改表时
    alter table name ADD PRIMARY KEY (id)
    alter table name ADD CONSTRAINT pk_name PRIMARY KEY (id, city)
  • 撤销表时(注意与撤销unique的不同)
    alter table name DROP PRIMARY KEY
  • FOREIGN KEY
    crete table tablename1(id1 int not null, things varchar(255), id2 int, primary key (id1), FOREIGN KEY (id2) REFERENCES tablename2 (id))
    crete table tablename1(id1 int not null, things varchar(255), id2 int, primary key (id1), CONSTRAINT fk_name FOREIGN KEY (id2) REFERENCES tablename2 (id))
  • 更改表时
    alter table name ADD CONSTRAIN fk_name FOREIGN KEY (id) REFERENCES tablename2 (id1)
  • 撤销foreign key
    alter table name DROP FOREIGN KEY fk_name
  • CHECK
    crete table tablename1(id1 int not null, things varchar(255), id2 int, primary key (id1), CONSTRAINT chk_name CHECK (id > 0 AND city = "abc"))
    alter table name ADD CONSTRAINT chk_name CHECK (id > 0 and city = 'abc')
    alter table name DROP CHECK chk_name
  • DEFAULT
    crete table tablename1(id1 int not null, things varchar(255), id2 int, shijian date DEFAULT GETDATE())
    alter table name ALTER city SET DEFAULT 'abc'
    alter table name ALTER city DROP default
  • INDEX
    CREATE INDEX indexname ON tablename (city, id DESC)
  • DROP
    DROP table tablename
    TRUNCATE table tablename
    truncate仅仅删除数据不删除表本身
  • ALTER 添加列
    alter table tablename ADD colname datatype
  • 修改列数据格式
    alter table tablename ALTER COLUMN colname datatype
  • 删除列
    alter table tablename DROP COLUMN colname
  • AUTO_INCREMENT
    在每次加入新的数据后,会自动创建主键的值
    crete table tablename1(id1 int not null AUTO_INCREMENT, things varchar(255), id2 int, primary key (id1))
  • VIEW 视图
    CREATE VIEW viewname AS
    select * from tablename
  • 撤销视图
    DROP VIEW viewname
  • NULL
    select * from tablename where col1 IS NOT NULL
  • IFNULL
    select IFNULL(COL1, 0) from table1
  • DATE函数
函数 描述
NOW() 返回当前日期和时间
CURDATE() 返回当前日期
CURTIME() 返回当前时间
DATE() 提取日期部分
EXTRACT() 提取日期时间的单独部分
DATE_ADD() 给日期加上指定的时间间隔
DATE_SUB() 给日期减去指定的时间间隔
DATEDIFF() 返回两日期之间的天数
DATE_FORMAT() 指定时间日期格式

SQL学习笔记:高级教程的更多相关文章

  1. php学习笔记--高级教程--读取文件、创建文件、写入文件

    打开文件:fopen:fopen(filename,mode);//fopen("test.txt","r"): 打开模式:r  仅仅读方式打开,将文件指针指向 ...

  2. 数据库MySQL学习笔记高级篇

    数据库MySQL学习笔记高级篇 写在前面 学习链接:数据库 MySQL 视频教程全集 1. mysql的架构介绍 mysql简介 概述 高级Mysql 完整的mysql优化需要很深的功底,大公司甚至有 ...

  3. ORALCE PL/SQL学习笔记

    ORALCE  PL/SQL学习笔记 详情见自己电脑的备份数据资料

  4. 学习笔记|JSP教程|菜鸟教程

    学习笔记|JSP教程|菜鸟教程 ------------------------------------------------------------------------------------ ...

  5. Oracle之PL/SQL学习笔记

    自己在学习Oracle是做的笔记及实验代码记录,内容挺全的,也挺详细,发篇博文分享给需要的朋友,共有1w多字的学习笔记吧.是以前做的,一直在压箱底,今天拿出来整理了一下,给大家分享,有不足之处还望大家 ...

  6. SQL学习笔记

    SQL(Structured Query Language)学习笔记 [TOC] Terminal登录数据库 1.登录mysql -u root -p ; 2.显示所有数据库show database ...

  7. AngularJs学习笔记--Guide教程系列文章索引

    在很久很久以前,一位前辈向我推荐AngularJs.但当时我没有好好学习,仅仅是讲文档浏览了一次.后来觉醒了……于是下定决心好好理解这系列的文档,并意译出来(英文水平不足……不能说是翻译,有些实在是看 ...

  8. DP动态规划学习笔记——高级篇上

    说了要肝的怎么能咕咕咕呢? 不了解DP或者想从基础开始学习DP的请移步上一篇博客:DP动态规划学习笔记 这一篇博客我们将分为上中下三篇(这样就不用咕咕咕了...),上篇是较难一些树形DP,中篇则是数位 ...

  9. SQL学习笔记:一些高级语句

    现在以MySQL为模板.学习的方法和别的数据库写法上会有不同,但是思路基本一致. 用到的数据库表的格式: +----+--------------+-------------------------- ...

随机推荐

  1. 天池精准医疗大赛——人工智能辅助糖尿病遗传风险预测

    作为天池上的新手,第一次参加天池阿里云线上的比赛,糖尿病预测, 一般的数据挖掘比赛,流程:数据清洗,特征工程(找特征,特征组合),不断的尝试的不同算法,不断调参,也可以考虑将多个模型进行线性组合 大赛 ...

  2. HTTP协议图--HTTP 协议报文结构

    1.HTTP 报文 用于 HTTP 协议交互的信息被称为 HTTP 报文.请求端(客户端)的 HTTP 报文叫做请求报文:响应端(服务器端)的叫做响应报文.HTTP 报文本身是由多行(用 CR[car ...

  3. 深入理解php中的ini配置(2)

    继续接着上一篇写. 运行时改变配置 在前一篇中曾经谈到,ini_set函数可以在php执行的过程中,动态修改php的部分配置.注意,仅仅是部分,并非所有的配置都可以动态修改.关于ini配置的可修改性, ...

  4. SQL简单基础(1)

    对于SQL不再做过多的介绍,毕竟作为一个初学者对于SQL(结构化查询语言)也好,关系型数据库也好理解都并不是很深,只知道一些基本的概念. 本系列旨在介绍一些简单开发中用得上的SQL语句以及其使用方法, ...

  5. Yahoo!团队经验:网站性能优化的34条黄金法则

    英文原文:http://developer.yahoo.com/performance/rules.html 1.尽量减少HTTP请求次数 (1)合并文件就是通过把所有的脚本放到一个文件中来减少HTT ...

  6. 【4】【MOOC】Python游戏开发入门-北京理工大学【第三部分-游戏开发之机制(色彩与绘图)】

    学习地址链接:http://www.icourse163.org/course/0809BIT021E-1001873001?utm_campaign=share&utm_medium=and ...

  7. pip-修改为国内镜像源

    pip 常用命令 pip install ./downloads/SomePackage-1.0.4.tar.gz pip install http://my.package.repo/SomePac ...

  8. priority_queue详解

    priority_queue是一个安排好的顺序存储的队列,队首是优先级最高的元素. Template<class T , class Container = vector<T> , ...

  9. PAT——1069. 微博转发抽奖

    小明PAT考了满分,高兴之余决定发起微博转发抽奖活动,从转发的网友中按顺序每隔N个人就发出一个红包.请你编写程序帮助他确定中奖名单. 输入格式: 输入第一行给出三个正整数M(<= 1000).N ...

  10. HDU 1686 Oulipo (可重叠匹配 KMP)

    Oulipo Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...