这篇文章用来记录再学习SQL语句的过程。

首先,我们从简单的创建表开始。创建表的语法是CREATE TABLE 表名(列1的名字  列1的属性,列2的名字  列2的属性...);

如果希望将某一列作为主键,我们可以在该列的属性中添加PRIMARY KEY,并且我们可以用auto_increment属性将该列设为自增。注意,自增的值同样可以手动设置值。

 create table t_Customer(
customer_id int(11) primary key not null auto_increment,
First_name char(50),
Last_name char(50),
Address char(50),
City char(50),
Country char(50),
Birth_Date datetime);

这里,我们创建了一张名为t_Customer的表,并将custmoer_id设为主键。

除了上述方法设置主键之外,我们还可以在最后一列之后添加PRIMARY KEY(customer_id)来设置主键。

来试一下将First_name和Last_name组合作为主键。

首先我们需要删除表之前的主键,

 ALTER TABLE t_customer DROP PRIMARY KEY;

这里我们可能会被告知自增只能定义在主键上,所以我们需要先删除主键上的自增属性:

ALTER TABLE t_customer CHANGE customer_id customer_id INT(11) NOT NULL;

虽然此时我们没有写上customer_id是主键,但实际上主键仍然是它,因此我们需要重复之前的步骤,删除主键,

之后再添加主键。

 ALTER TABLE t_customer ADD PRIMARY KEY(First_name, Last_Name);

我们将主键重新改为id,然后往表里插入数据:

 INSERT INTO t_customer(First_name, Last_name, Address, City, Country, Birth_Date) VALUES('Mei','Han','1st Street','Seattle','USA','1989-03-04');
INSERT INTO t_customer(First_name, Last_name, Address, City, Country, Birth_Date) VALUES('Jacob','Liu','2nd Street','Seattle','USA','1991-11-02');
INSERT INTO t_customer(First_name, Last_name, Address, City, Country, Birth_Date) VALUES('Edward','Andrew','4th Street','Seattle','USA','1978-10-24');
INSERT INTO t_customer(First_name, Last_name, Address, City, Country, Birth_Date) VALUES('Ci','Wu','1st Street','Hangzhou','China','1992-10-27');

来看看增加的数据,用SELECT查找出之前增加的记录。

 SELECT * FROM t_customer;

*表示筛选出全部的列。我们也可以制定我们需要的列。比如,只选出姓名:

 SELECT First_name,Last_name FROM t_customer;

如果我们希望不重复的筛选出表里的全部城市,那么我们可以使用DISTINCT关键字:

 SELECT DISTINCT City From t_customer;

WHERE关键字可以帮我们过滤掉不符合条件的记录:

 SELECT * FROM t_customer WHERE City = 'Seattle';

AND和OR可以帮我们结合多个判断条件:

 SELECT * FROM t_customer WHERE First_name ='Mei' AND Last_name = 'Han';

筛选出First_name = 'Mei'且Last_name = 'Han'的记录。

 SELECT * FROM t_customer WHERE City = 'Seattle' OR City = 'Hangzhou';

筛选出City='Seattle'或是Hangzhou的记录。

结合AND和OR:

 SELECT * FROM t_customer WHERE (First_name = 'Mei' OR First_name = 'Jacob') AND City = 'Seattle';

我们可以通过ORDER BY对查询的结果进行排序:

 FROM t_customer ORDER BY Last_name;

默认排序方式是升序,如果想用降序的话,则要加上DESC:

SELECT * FROM t_customer ORDER BY Last_name DESC;

我们也可以根据多列的值来排序:

 SELECT * FROM t_customer ORDER BY City, First_name;

值得注意的是,当我们按照以下写法:

SELECT * FROM t_customer ORDER BY City, First_name DESC;

实际上是以City的升序和First_name的降序进行组合排序。

修改记录的语法为 UPDATE 表名 SET 列1的名 = 新值, 列2的名=新值 WHERE 条件:

 UPDATE  t_customer SET City='Boston', Address = '2nd Street' WHERE Last_name = 'Han';

删除记录的语法为 DELETE FROM 表名 WHERE 条件:

 DELETE From t_customer WHERE Last_name = 'Wu';

LIMIT关键字可以限制返回的对大记录数:

 SELECT * FROM t_customer LIMIT 1;

这里我们就得到了表里的第一条记录。

LIKE可以帮助我们匹配特定的模式:

 SELECT * FROM t_customer WHERE Address LIKE '2nd%';

注意LIKE后面的条件需要用引号,这里我们筛选出的是地址是2nd开头的记录。

NOT LIKE 可以选择出不符合条件的记录。

LIKE可以搭配通配符使用,以下是各个通配符的含义:

通配符                                描述

%                                     替代一个或多个字符

_                                       仅替代一个字符

[charlist]                             字符列中的任何单一字符

[^charlist]或[!charlist]          不在字符列中的任何单一字符

IN关键字:IN允许我们在WHERE条件中规定多个值。

 SELECT * FROM t_customer WHERE City IN ('Boston','Seattle');

筛选出City是Boston或是Seattle的记录。

 SELECT * FROM t_customer WHERE First_name BETWEEN 'Curry' AND 'Jordan';

筛选名字介于Curry和Jordan的记录。

值得注意的是,不同的数据库对边界的规定是有所差异的!我测试了mySQL是包含边界的。

SQL语句学习(一)的更多相关文章

  1. SQL语句学习手册实例版

    SQL语句学习手册实例版 表操作 例1  对于表的教学管理数据库中的表 STUDENTS ,可以定义如下: CREATE  TABLE  STUDENTS (SNO      NUMERIC (6, ...

  2. SQL 语句学习

     Sql语句学习 一. select playerId, count(playerId) as num from OperateLog_$i where playerId > 0 and roo ...

  3. SQL知识点、SQL语句学习

    一. 数据库简介和创建1. 系统数据库在安装好SQL SERVER后,系统会自动安装5个用于维护系统正常运行的系统数据库: (1)master:记录了SQL SERVER实例的所有系统级消息,包括实例 ...

  4. Ibatis.Net 动态SQL语句学习(六)

    在学习动态SQL语句之前,首先必须对条件查询有一定了解,先来学习如何向IBatis.Net的映射文件里传入参数吧. 一.条件查询 1.传递单个参数 如根据Id查询: <select id=&qu ...

  5. 精心整理的SQL语句学习大全

    -语 句 功 能  --数据操作SELECT --从数据库表中检索数据行和列INSERT --向数据库表添加新数据行DELETE --从数据库表中删除数据行UPDATE --更新数据库表中的数据-数据 ...

  6. SQl语句学习笔记(二)

    merge into        when matched then...  when not mached then... merge into t_road_pre_parameter a fr ...

  7. SQL语句学习笔记

    从外部EXCEl文件导入sqlserver数据库操作命令 reconfigure reconfigure go select * into abc1_1 from OPENROWSET('MICROS ...

  8. sql语句学习及索引学习,未完待续,补充增删改查

    1,查询出last_name 为 'Chen' 的 manager 的信息.  select * fromwhere employee_id = ( selectfrom employees wher ...

  9. Ibatis.Net 输出SQL语句学习(七)

    一.IBatis.net输出SQL语句 输出IBatis.net生成的SQL语句,能够方便调试. 在MapperHelper类中添加GetSql方法: /// <summary> /// ...

随机推荐

  1. Round 1A 2020 - Code Jam 2020

    Problem A. Pattern Matching 把每个字符串分成第一个之前,最后一个之后,中间的部分 三个部分 每个字符串的中间的部分可以直接拼接 前后两个部分需要判断下是否合法 #inclu ...

  2. 分治与递归-Starssen矩阵乘法

    代码实现: /** * 矩阵乘法求解 * @author Administrator * */ public class Strassen { public static final int NUMB ...

  3. 搭建单区域DNS服务器

                                                          搭建单区域DNS服务器 案例1:搭建单区域DNS服务器 案例2:特殊DNS解析 案例3:配置 ...

  4. NS网络仿真,小白起步版,双节点之间的模拟仿真(基于TCP和FTP流)

    set ns [new Simulator] set tracefd [open one.tr w] #开启跟踪文件,记录分组传送的过程 $ns trace-all $tracefd set namt ...

  5. PHP程序员的能力水平层次(一)

    前言 之前看过很多篇关于服务端工程师和PHP开发者的能力模型介绍,每篇都对能力有侧重点. 下面我们来详细谈谈以开发能力为基准点的PHP程序员的能力水平层次. 层层递进 1.功能开发 这个水平的程序员一 ...

  6. Mysql fundamental knowledge

    Mysql 5.1, 5.5 are more stable than other versions. postgresql has more strict "sql standard &q ...

  7. Altium Designer 3D

  8. 数据结构和算法(Golang实现)(8.2)基础知识-分治法和递归

    分治法和递归 在计算机科学中,分治法是一种很重要的算法. 字面上的解释是分而治之,就是把一个复杂的问题分成两个或更多的相同或相似的子问题. 直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合 ...

  9. Cucumber(2)——目录结构以及基本语法

    目录 回顾 HelloWorld 扩展 回顾 在上一节中,我大致的介绍了一下cucumber的特点,以及基于ruby和JavaScript下关于cucumber环境的配置,如果你还没有进行相关的了解或 ...

  10. css特效sh

    1   opacity=0.5:                                                             透明度 2    选择器   .btn1:ho ...