为了准备学习网络编程的知识,尝试从应用到原理的top-down方式学习,尝试对SQL入门,这里记载最精简的SQL入门知识,是从廖雪峰官网上学习的。
基本概念
- SQL其意为structure query language,结构化查询语言。目标是替应用程序增删改查数据。其操作的对象是关系数据库,实际上就是可以实现一对多,多对一,一对一状态的表格。
- 一对多的状态是常见的,比如一个班级对应多个学生;反过来多个学生对应一个班级就是多对一;一对一的情况多用于一个表格需要剔除主表格里的一些数据。
- 主键的概念是每一条record都需要一个不会重复的field来表示它,这个字段不应该跟业务相关,在这张表里面应该是唯一的。外键是用一个字段将这张表与其他的表关联起来,外键是通过“外键约束”实现的。索引可以被用于创建于某一列,用于快速查找此列中的某些内容。通过创建“唯一索引”可以令某一列具有唯一性,比如身份证,不适合作为主键存在,可以给唯一索引。
基本语句
基本语句主要就是实现四个功能,即增删改查CRUD,create,retrieve,update,delete。
查询是SELECT
增加是INSERT
修改是UPDATE
删除是DELETE
查询语句
- 查询表,SELECT表示查询,* 表示所有列,FROM表示要从哪个表开始。select可以查询到一个二维表,打 SELECT 1可以看看数据库连接是否正常。
SELECT * FROM <table name>;
- 条件查询,可以写比如score > 10这样的条件限定查询的范围,取出某个字段进行条件判断。可以用一些关键字比如AND OR NOT BETWEEN之类
SELECT * FROM <table name> WHERE condition;
- 投影查询,把*用列名替换可以单独查询某几列的内容。用,隔开每个列,如果要重命名,在列名后面直接增加重命名之后的列名即可
SELECT a b, c d FROM <table name> WHERE condition;
- 排序,ORDER BY,按某一栏进行排序,在ORDER BY xxx 后面加 DESC为倒序,还可以增加排序的规则,只要用,隔开即可。
SELECT id, name, gender, score FROM students ORDER BY score DESC, gender;
- 分页查询,LIMIT OFFSET , limit是按多少条内容一页,offset是从第几个行开始。
SELECT id, name, gender, score FROM students ORDER BY score DESC LIMIT 3 OFFSET 20;
- 聚合查询(也就是计算个数),COUNT还可以替换成MAX, MIN, AVG, SUM, CEILING, FLOOR等等,还可以执行分组聚合,使用关键词GROUP BY,例如:
SELECT class_id, COUNT(*) num FROM students GROUP BY class_id;
- 多表查询,在表名处写多个表,逗号隔开
- 连接查询,在一张表中,如果有一些信息需要在其他表中获取,即在主表中显示附表的信息,可以用JOIN语句,ON来写链接主表和附表的条件,JOIN的方法有INNER,LEFT OUTER,RIGHT OUTER,FULL OUTER,inner指的是两个表都有的部分,LEFT OUTER指的是只显示主表(写在左边)有的部分,RIGHT OUTER是附表有的部分,FULL是全部的。
增加语句
基本语法是:
INSERT INTO <表名> (字段1, 字段2, ...) VALUES (值1, 值2, ...);(值1, 值2, ...)
可以插入多组值
例如:INSERT INTO students (class_id, name, gender, score) VALUES (2, ‘liu’, ‘M’, 80);
修改
基本语法是
UPDATE <表名> SET 字段1=值1, 字段2=值2, ... WHERE ...;
set就是重新设置的部分,可以使用表达式比如赋值语句等。可以不使用where限定。在修改时最好先用select 和where查询出是否选中的要改的内容
删除
基本语法是
DELETE FROM <表名> WHERE ...;
MySQL
- 使用mySQL的client端可以对mysql使用sql语句进行操纵,打开应用使光标变成mysql->之后可以输入
SHOW DATABASES
进行对数据库进行查看,其中information schema,performance schema和mysql是系统数据库,不要动它们。 - 创建的关键词是CREATE,删除的关键词是DROP, 修改的关键词是ALTER, 查询的关键词是SHOW
- 新增数据库
mysql> CREATE DATABASE test;
- 删除数据库
mysql> DROP DATABASE test;
- 转换到数据库
USE test;
- 列出当前数据库的所有表
mysql> SHOW TABLES;
- 查看此表(describe)的情况
mysql> DESC students;