SQL简介
什么是sql?
- SQL 指结构化查询语言
- SQL 使我们有能力访问数据库
- SQL 是一种 ANSI 的标准计算机语言
SQL能做什么
- SQL 面向数据库执行查询
- SQL可从数据库取回数据
- 可以在数据库中插入新的记录
- 可以更新数据库中的数据
- 可以从数据库中删除数据
- 可以创建新数据库
- 可以创建表
- 可以创建储存过程
- 可以创建视图
- 可以设置表、存储过程、和视图的权限
SQL是一门ANSI的标准计算机语言,可以和数据库程序协同工作,比如DB2、MS SQL Server、MySQL、Oracle、Sybase等数据库系统。
RDBMS
关系型数据库管理系统
RDBMS是SQL的基础,
SQL语法
注意
SQL对大小写不敏感。
MS Access和sql server 2000,不需要在每条语句后面加分号,不过有些数据库必须使用分号。
SQL的DML和DDL
SQL分为两个部分:
数据操作语言(DML)
- SELECT 从数据库表中获取数据
- update 更新数据库表中数据
- delete 删除数据表中数据
- insert into 向数据库表中插入数据
数据定义语言(DDL)
create database 创建新的数据库
alert database 修改数据库
create table 创建数据表
alter table 修改数据表
drop table 删除表
create index 创建索引
drop index 删除索引
SQL学习
学习可以使用在线SQL功能
我所使用的数据库为MySQL 5.7,数据库管理工具是Navcat Premium,可以自行去官网下载。
1 | CREATE TABLE `persons` ( |
练习使用的表结构和数据如上。
SQL SELECT
语法
1 | SELECT 列名 from 表名 |
其中列名可以用*表示,*表示查询所有疾苦
实例
有如下表:
1 Adans John 中国湖南 男
2 李 四 中国上海 男
3 欧 尼酱 中国湖南 女
查询firstname列和lastname数据,
1 | mysql> select firstname,lastname from persons; |
SQL SELECT DISTINCT
关键词distinct用于返回唯一不同的值。
语法
1 | SELECR distinct 列名 from 表名 |
查询adress列
1 | mysql> select adress from persons; |
发现中国湖南数据出现了两次,现在使用distinct关键字再查询一次
1 | mysql> select distinct adress from persons; |
SQL where
语法
SELECT 列名 from 表名 where 列 运算符 值
下面的运算符可在 WHERE 子句中使用:
| 操作符 | 描述 |
|---|---|
| = | 等于 |
| <> | 不等于 |
| > | 大于 |
| < | 小于 |
| >= | 大于等于 |
| <= | 小于等于 |
| BETWEEN | 在某个范围内 |
| LIKE | 搜索某种模式 |
实例
查询adress为中国上海的数据
1 | mysql> select * from persons where adress = '中国上海'; |
查询姓李的数据
请注意,我们在例子中的条件值周围使用的是单引号。
SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。如果是数值,请不要使用引号。
SQL and & or
and实例
an用来显示并且的意思
查询adres在中国,且sex为男的数据。
1 | mysql> select * from persons where adress like '中国%' and sex = '男'; |
or实例
or用来表示或者的意思
查询姓李或者姓欧的数据
1 | mysql> select * from persons where firstname = '李' or firstname = '欧'; |
or和and可以结合使用。
SQL order by
用语指定语句进行排序。
默认按照升序排序。如果需要按照降序排序可以使用desc关键字。
像上面数据表中添加两行数据:
1 | INSERT INTO `persons`(`firstname`, `lastname`, `adress`, `sex`) VALUES ('锐', '雯', '洛克萨斯', '女'); |
实例
按照firstname升序排序
1 | mysql> select * from persons order by firstname; |
注: 中文会按照字母顺序排序。
SQL insert into
语法
1 | INSERT INTO 表名称 VALUES (值1, 值2,....) |
我们也可以指定所要插入数据的列:
1 | INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....) |
实例
向上面表中添加一条数据
1 | mysql> insert into persons(firstname,lastname,adress,sex) values ('卡','特','洛克萨斯','女'); |
SQL update
update语句用语修改表中数据
语法
1 | UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值 |
实例
1 | mysql> update persons set firstname = '张' where firstname = '李'; |
也可以修改多条数据,使用,分隔数据。
SQL delete
DELETE 语句用于删除表中的行。
语法
1 | DELETE FROM 表名称 WHERE 列名称 = 值 |
SQL top(MySQL limit)
top子句用语规定要返回的记录的数目,在MySQL中使用的是limit关键字。
实例
返回两条数据
1 | mysql> select * from persons limit 2; |
拓展
Oracle 语法
1 | SELECT column_name(s) |
例子
1 | SELECT * |
SQL Server 的语法:
1 | SELECT TOP number|percent column_name(s) |