SQL笔记-摘录自廖雪峰老师教程

SQL笔记:

1 常用数据类型

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
TINYINT整形0~255

2 约定:SQL关键字总是大写,以示突出,表名和列名均使用小写。

3 表的每一行称为记录(Record),记录是一个逻辑意义上的数据。

的每一列称为字段(Column),同一个表的每一行记录都拥有相同的若干字段。

4 通常情况下,字段应该避免允许为NULL

5 主键是关系表中记录的唯一标识。主键的选取非常重要:主键不要带有业务含义,而应该使用BIGINT自增或者GUID类型。主键也不应该允许NULL

可以使用多个列作为联合主键,但联合主键并不常用

6 关系数据库通过外键可以实现一对多、多对多和一对一的关系。外键既可以通过数据库来约束,也可以不设置约束,仅依靠应用程序的逻辑来保证

7 通过对数据库表创建索引,可以提高查询速度

通过创建唯一索引,可以保证某一列的值具有唯一性。

8 使用SELECT查询的基本语句

SELECT * FROM <表名>

可以查询一个表的所有行和所有列的数据。

许多检测工具会执行一条SELECT 1;来测试数据库连接

9 通过WHERE条件查询,可以筛选出符合指定条件的记录。条件有NOTANDOR。注意字符串需要用单引号括起来。

10 使用SELECT *表示查询表的所有列,使用SELECT 列1, 列2, 列3则可以仅返回指定列,这种操作称为投影

SELECT语句可以对结果集的列进行重命名

11 使用ORDER BY可以对结果集进行排序;

 可以对多列进行升序、倒序排序,对应ASC 与 DESC

12 使用

LIMIT <M> OFFSET <N>

可以对结果集进行分页,每次查询返回结果集的一部分;

分页查询需要先确定每页的数量和当前页数,然后确定LIMITOFFSET的值。随着N越来越大,查询效率也会越来越低。

13 聚合函数

COUNT表示查询行数
SUM计算某一列的合计值,该列必须为数值类型
AVG计算某一列的平均值,该列必须为数值类型
MAX计算某一列的最大值
MIN计算某一列的最小值

分组使用GROUP BY

14 多表查询又称笛卡尔查询。可以获取M x N行记录;

15 注意INNER JOIN查询的写法是:

  • 确定主表,仍然使用FROM <表1>的语法;

  • 再确定需要连接的表,使用INNER JOIN <表2>的语法;

  • 然后确定连接条件,使用ON <条件...>,这里的条件是s.class_id = c.id,表示students表的class_id列与classes表的id列相同的行需要连接;

  • 可选:加上WHERE子句、ORDER BY等子句

INNER JOIN是最常用的一种JOIN查询,它的语法是

SELECT ... FROM <表1> INNER JOIN <表2> ON <条件...>;

16  在执行UPDATE语句时要非常小心,最好先用SELECT语句来测试WHERE条件是否筛选出了期望的记录集,然后再用UPDATE`更新。

17 命令行程序mysql实际上是MySQL客户端,真正的MySQL服务器程序是mysqld,在后台运行。MySQL Client和MySQL Server的关系如下:

┌──────────────┐  SQL   ┌──────────────┐
│ MySQL Client │───────>│ MySQL Server │
└──────────────┘  TCP   └──────────────┘

在MySQL Client中输入的SQL语句通过TCP连接发送到MySQL Server。默认端口号是3306,即如果发送到本机MySQL Server,地址就是127.0.0.1:3306

也可以只安装MySQL Client,然后连接到远程MySQL Server。假设远程MySQL Server的IP地址是10.0.1.99,那么就使用-h指定IP或域名

mysql -h 10.0.1.99 -u root -p

MySQL Client的可执行程序是mysql,MySQL Server的可执行程序是mysqld。

18 数据库事务具有ACID这4个特性:

  • A:Atomic,原子性,将所有SQL作为原子工作单元执行,要么全部执行,要么全部不执行;

  • C:Consistent,一致性,事务完成后,所有数据的状态都是一致的,即A账户只要减去了100,B账户则必定加上了100;

  • I:Isolation,隔离性,如果有多个事务并发执行,每个事务作出的修改必须与其他事务隔离;

  • D:Duration,持久性,即事务完成后,对数据库数据的修改被持久化存储。

使用BEGIN开启一个事务,使用COMMIT提交一个事务,这种事务被称为显式事务

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值