这篇文章用来记录再学习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. ClickHouse学习系列之三【配置文件说明】

    背景 最近花了些时间看了下ClickHouse文档,发现它在OLAP方面表现很优异,而且相对也比较轻量和简单,所以准备入门了解下该数据库系统.在介绍了安装和用户权限管理之后,本文对其配置文件做下相关的 ...

  2. win下youtube-dl 【ERROR: requested format not available】选下载视频质量的坑--【值得一看】

    需求说明(bug出处): 简单说:下载youtube的视频,嵌入翻译好的中文字幕. 详细说(可略过): 阿里的海外服务器需要布一个Web Service---用以接收国内(本地服务器)的请求, 然后用 ...

  3. replace into 影响行数

    replace into 影响行数,谈起影响行数,先理解replace into 原理:其是先到表里通过一定规则(单主键或复合主键或唯一索引)找到记录,并且删除,然后在insert into 记录,即 ...

  4. C语言折半查找法练习题冒泡排序

    C语言折半查找法练习题 折半查找法: 折半查找法是效率较高的一种查找方法.假设有已经按照从小到大的顺序排列好的五个整数num[0]~num[4],要查找的数是key,其基本思想是: 设查找数据的范围下 ...

  5. webWMS开发过程记录(五)- 详细设计之系统界面框架设计

    界面区域划分 使用frameset分了上中下三个区域 上:显示系统名称和用户信息,以及一些提示信息(需通过Ajax定时更新提示信息),显示高度固定 中:再次使用frameset分成左右区域 左:显示导 ...

  6. matlab操作Excel数据

    sheet是Excel的表格,xIRange是表格的列的范围 指定xlRange,例如使用语法'C1:C2',其中C1和C2是定义要读取的区百域的两个度相对的角. 例如,'D2:H4'表示工作表上的两 ...

  7. python教程:使用 async 和 await 协程进行并发编程

    python 一直在进行并发编程的优化, 比较熟知的是使用 thread 模块多线程和 multiprocessing 多进程,后来慢慢引入基于 yield 关键字的协程. 而近几个版本,python ...

  8. Python冒泡排序算法及其优化

    冒泡排序 所谓冒泡,就是将元素两两之间进行比较,谁大就往后移动,直到将最大的元素排到最后面,接着再循环一趟,从头开始进行两两比较,而上一趟已经排好的那个元素就不用进行比较了.(图中排好序的元素标记为黄 ...

  9. 设计模式-原型模式(Prototype)【重点:浅复制与深复制】

    讲故事 最近重温了一下星爷的<唐伯虎点秋香>,依然让我捧腹不已,幻想着要是我也能有一名秋香如此的侍女,夫复何求呀,带着这个美好的幻想沉沉睡去... 突然想到,我是一名程序猿呀,想要什么对象 ...

  10. 原子类的ABA问题

    原子类AtomicInteger的ABA问题 连环套路 从AtomicInteger引出下面的问题 CAS -> Unsafe -> CAS底层思想 -> ABA -> 原子引 ...