前言
这篇博客,南国主要用来复习归纳关于SQL语句的一些基础知识。
数据查询(DQL):用来查询记录。
数据定义(DDL): 用来定义数据库对象,库 表 列等,简单说就是用来创建、修改、删除数据库。
数据操纵(DML): 用来定义数据库的记录,简单说就是对数据进行增删改查。
数据控制(DCL): 用来定义访问和安全级别
SQL功能 | SQL关键字 |
---|---|
数据查询 | select |
数据定义 | create drop alter |
数据操纵 | insert update delete |
数据控制 | grant revoke |
本博客的内容主要是在MySQL 5.x下执行的结果。
模式Schema
模式定义了数据如何存储、存储什么样的数据以及数据如何分解等信息,数据库和表都有模式。
主键的值不允许修改,也不允许复用(不能使用已经删除的主键值赋给新数据行的主键)。
SQL(Structured Query Language),标准 SQL 由 ANSI 标准委员会管理,从而称为 ANSI SQL。各个 DBMS 都有自己的实现,如 PL/SQL、Transact-SQL 等。
SQL 语句不区分大小写,但是数据库表名、列名和值是否区分依赖于具体的 DBMS 以及配置。
SQL 支持以下两种注释:
- 单行注释 select * from account; #注释
- 多行注释 select * from account;
/* 注释
…
*/
数据库的显示 创建 使用
- 显示: show databases;
- 创建: create database test;
- 使用: use test;
数据表中的操作
为了方便我们后续的SQL语句操作,我们在我们选定的数据库中新建一张表,并且插入相应的数据 显示出来。
创建表
CREATE TABLE `account` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
`money` double DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
首先在表中插入对应的数据用于测试:
INSERT INTO `account` VALUES ('1', 'aaa', '1000');
INSERT INTO `account` VALUES ('2', 'bbb', '1000');
INSERT INTO `account` VALUES ('3', 'ccc', '1000');
数据查询
在SQL语句中,查询较为重要。select 是数据显示的出口,这里南国将所有能想到的在select语句用到的知识点都归纳在这一小节中。
select [all | distinct] <目标表达式>[,<目标表达式>]…
from <表名或者视图名>[,<表名或者视图名>]…
[where <条件表达式>]
[group by <列名1>] [having<条件表达式> ]]
[order by <>列名2] [ASC | DESC]];
下面进行归纳总结:
1.这里先选用最简单的查询所有属性的值 (*)
select * from account;
运行结果:
2.还可将一个表中的内容插入到一个新表中
CREATE TABLE newtable AS SELECT * FROM mytable;
3.去重distinct
相同值只会出现一次。它作用于所有列,也就是说所有列的值都相同才算相同。当然这种情况很少【至少每行的主键值不同 一般是id】,一般而言 我们是看数据表中某些行的数据。如下:
select money from account; #查看某个属性的数据
select distinct money from account; #查看某个属性去重后的数据
4. limit 限制返回的行数
他可以有两个参数,第一个参数为起始行,从 0 开始;第二个参数为返回的总行数。
例如:
1.select * from account limit 5; #查询表中前5行数据
它等同于 select * from account limit 0,5;
2.select * from account limit 3,5; #查询表中第4行到9行的数据
4.1分页查询
(2019.04.07更新)
在日常应用中,我们经常会提到一个词叫分页查询。
如果一页记录为10条,希望查看第3页记录应该怎么查呢?