SQL:Structured Query Language

2022-01-18  本文已影响0人  涛涛抄书

速查语法

查询

实用语句:https://www.liaoxuefeng.com/wiki/1177760294764384/1246617682185952

常规查询

SELECT id, name, gender, score
FROM students
WHERE class_id = 1
ORDER BY score DESC;
LIMIT <N-M> OFFSET <M>

条件运算:按照NOT、AND、OR的优先级进行,即NOT优先级最高,其次是AND,最后是OR。加上括号可以改变优先级。

分页查询:确定每页需要显示的结果数量pageSize(这里是3),然后根据当前页的索引pageIndex(从1开始),确定LIMIT和OFFSET应该设定的值: LIMIT总是设定为pageSize;OFFSET计算公式为pageSize * (pageIndex - 1)。

条件表达式(字符串需要使用单引号引起来)
=:判断相等
>:判断大于
>=:判断大于或相等
<:判断小于
<=:判断小于或相等
<>:判断不相等
LIKE:判断相似
BETWEEN XX AND XX:数值范围
IN (60, 90):表示在括号内的值,此处只有60和90

聚合查询

查询数量
SELECT COUNT(*) FROM students;
其他方法
SELECT AVG(score) average FROM students WHERE gender = 'M';

分组查询

SELECT class_id, gender, COUNT(*) num FROM students GROUP BY class_id, gender;

多表查询

乘积,中间使用逗号分开
SELECT
    s.id sid,
    s.name,
    s.gender,
    s.score,
    c.id cid,
    c.name cname
FROM students s, classes c
WHERE c.id = 1;
连接查询
SELECT s.id, s.name, s.class_id, c.name class_name, s.gender, s.score
FROM students s
INNER JOIN classes c
ON s.class_id = c.id;

增、删、改

INSERT INTO students (class_id, name, gender, score) VALUES
  (1, '大宝', 'M', 87),
  (2, '二宝', 'M', 81);
UPDATE students SET name='小牛', score=77 WHERE id>=5 AND id<=7;
DELETE FROM students WHERE id>=5 AND id<=7;

MySQL

登录

其他

数据类型

名称 类型 说明
INT 整型 4字节整数类型,范围约+/-21亿
BIGINT 长整型 8字节整数类型,范围约+/-922亿亿
REAL 浮点型 4字节浮点数,范围约+/-1038
DOUBLE 浮点型 8字节浮点数,范围约+/-10308
DECIMAL(M,N) 高精度小数 由用户指定精度的小数,例如,DECIMAL(20,10)表示一共20位,其中小数10位,通常用于财务计算
CHAR(N) 定长字符串 存储指定长度的字符串,例如,CHAR(100)总是存储100个字符的字符串
VARCHAR(N) 变长字符串 存储可变长度的字符串,例如,VARCHAR(100)可以存储0~100个字符的字符串
BOOLEAN 布尔类型 存储True或者False
DATE 日期类型 存储日期,例如,2018-06-22
TIME 时间类型 存储时间,例如,12:20:59
DATETIME 日期和时间类型 存储日期+时间,例如,2018-06-22 12:20:59

键与索引

外键:通过定义外键约束实现,会降低性能,一般通过程序保证正确,不设置外键约束

添加:
ALTER TABLE students
ADD CONSTRAINT fk_class_id
FOREIGN KEY (class_id)
REFERENCES classes (id);
删除:(并没有删除外键列)
ALTER TABLE students
DROP FOREIGN KEY fk_class_id;

索引:索引是关系数据库中对某一列或多个列的值进行预排序的数据结构。通过使用索引,可以让数据库系统不必扫描整个表,而是直接定位到符合条件的记录,这样就大大加快了查询速度。
索引的效率取决于索引列的值是否散列,即该列的值如果越互不相同,那么索引效率越高。可以对一张表创建多个索引。索引的优点是提高了查询效率,缺点是在插入、更新和删除记录时,需要同时修改索引,因此,索引越多,插入、更新和删除记录的速度就越慢。

创建索引:
ALTER TABLE students
ADD INDEX idx_score (name,score);
创建唯一索引:
ALTER TABLE students
ADD UNIQUE INDEX uni_name (name);
创建唯一约束不创建索引:
ALTER TABLE students
ADD CONSTRAINT uni_name UNIQUE (name);

事务

在执行SQL语句的时候,某些业务要求,一系列操作必须全部执行,而不能仅执行一部分。

BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;
主动让事务失败:
BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
ROLLBACK;

搬运自

廖雪峰的官方网站:https://www.liaoxuefeng.com/

上一篇 下一篇

猜你喜欢

热点阅读