黑马MySQL学习笔记
1.了解MySQL
1.什么是数据库
英文单词DataBase,简称DB。按照一定格式存储数据的一些文件的组合。
顾名思义:存储数据的仓库,实际上就是一堆文件。这些文件中存储了具有特定格式的数据。
2.什么是SQL
SQL:结构化查询语言
程序员需要学习SQL语句,程序员通过编写SQL语句,然后DBMS负责执行SQL语句,最终来完成数据库中数据的增删改查操作。
3.关于SQL语句的分类
SQL语句有很多,最好进行分门别类,这样更容易记忆。
分为:
DQL:数据查询语言(凡是带有select关键字的都是查询语句)select...
DML:数据操作语言(凡是对表当中的数据进行增删改的都是DML)insert delete updateinsert 增delete 删update 改这个主要是操作表中的数据data。DDL:数据定义语言凡是带有create、drop、alter的都是DDL。DDL主要操作的是表的结构。不是表中的数据。create:新建,等同于增drop:删除alter:修改这个增删改和DML不同,这个主要是对表结构进行操作。TCL:不是王牌电视。是事务控制语言包括:事务提交:commit;事务回滚:rollback;DCL:是数据控制语言。例如:授权grant、撤销权限revoke....
4.什么是MySQL
MySQL是数据库管理系统中的一种,是市面上最流行的数据库管理软件之一MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型和大型网站的开发都选择 MySQL 作为网站数据库。
5.SQL通用语法
- SQL语句可以单行或多行书写,以分号结尾。
- SQL语句可以使用空格/缩进来增强语句的可读性
- MySQL数据库的SQL语句不区分大小写,关键字建议使用大写
- 注释
- 单行注释:–注释内容或#注释内容(MySQL特有)
- 多行注释:/* 注释内容 */
2.MySQL数据类型和操作符
1.数据类型简介
数值数据类型:TINYINT 、SMALINT 、MEDIUMINT 、INT 、BIGINT 、FLOAT 、DOUBLE 、DECIMAL
日期/时间类型:YEAR 、TIME 、DATE 、DATETIME 、TIMESTAMP
字符串类型:CHAR 、VARCHAR 、BINARY 、VARBINARY 、BLOB 、TEXT 、ENUM 、SET
2.数据类型
1.整数类型
类型说明 |
存储需求 |
有符号的取值范围 |
无符号的取值范围 |
tinyint |
1字节 |
-128-127 |
0~255 |
smallint |
2字节 |
-32768-32767 |
0~65535 |
mediumint |
3字节 |
-8388608-8388607 |
0~16777215 |
int |
4字节 |
-2147483648-2147483647 |
0~4294967295 |
bigint |
8字节 |
-9223372036854775808 - 9223372036854775807 |
0~18446744073709551615 |
2.浮点型和定点型
类型说明 |
说明 |
存储需求 |
无符号的取值范围 |
float |
单精度浮点型 |
4字节 |
3.402823466EE+38 ~ -1.175494251E-38 |
double |
双精度浮点型 |
8字节 |
-1.7976931348623157E+308 ~ -2.2250738585072014E-308 |
decimal |
压缩的严格定点数 |
M+2个字节 不固 定 |
不固定 |
3.日期/时间类型
类型说明 |
存储需求 |
日期格式 |
日期范围 |
year |
1字符 |
YYYY |
1901~2155 |
time |
3字符 |
HH:MM:SS |
-838:59:59 ~ 838:59:59 |
date |
3字节 |
YYYY-MM-DD |
1000-01-01 ~ 9999-12-31 |
datetime |
8字节 |
YYYY-MM-DD HH:MM:SS |
1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 |
timestamp |
4字节 |
YYYY-MM-DD HH:MM:SS |
1970-01-01 00:00:01 UTC ~ 2038-01-19 03:14:07 UTC |
4.字符串类型
类型 |
说明 |
存储需求 |
char() |
固定长度的文本字符串 |
M 字节,1 <= M <= 255 |
varchar() |
可变长度的文本字符串 |
L+1 字节,在此 L <= M 和 1 <= M <= 255 |
tinytext |
非常小的文本字符串 |
L+1 字节,在此 L < 2^8 |
text |
小的文本字符串 |
L+2 字节,在此 L < 2^16 |
mediumtext |
中等大小的文本字符串 |
L+3 字节,在此 L < 2^24 |
longtext |
大的文本字符串 |
L+4 字节,在此 L < 2^32 |
enum |
枚举类型,只有一个枚举字符串值 |
1 或 2 个字节,取决于枚举值的数目(最大值 65535) |
set |
一个设置,字符串对象可以有零个或所得set成员 |
1, 2, 3, 4 或 8 个字节,取决于集合成员的数量 (最多64个成员) |
5.二进制字符串
二进制类型 |
说明 |
存储需求 |
bit(M) |
位字段类型 |
大约(M+7)/8 个字节 |
binary(M) |
固定长度的二进制字符串 |
M个字节 |
varbinary(M) |
可变长度的二进制字符串 |
M+1个字节 |
tinyblob(M) |
小的BLOB |
L+1 字节,在此 L < 2^8 |
blob(M) |
小的BLOB |
L+2 字节,在此 L < 2^16 |
meidumblob(M) |
中等大小的BLOB |
L+3 字节,在此 L < 2^24 |
longblob(M) |
非常大的blob |
L+4 字节,在此 L < 2^32 |
3.操作符
1.算数运算符
运算符 |
作用 |
+ |
加法 |
- |
减法 |
* |
乘法 |
/ |
除法 |
% |
求余 |
2.其他运算符
运算符 |
作用 |
= |
等于 |
<=> |
安全的等于 |
<> |
不等于 |
> |
大于 |
< |
小于 |
>= |
大于等于 |
<= |
小于等于 |
is null |
判断一个值是否为null |
is not null |
判断一个值是否不为null |
least |
当有两个或多个参数时,返回最小值 |
greatest |
当有两个或多个参数时,返回最大值 |
between … and … |
判断一个值是否落在两个值之间 |
in (值1,值2,值3) |
判断一个值是否是in列表中的任意一个值 |
not in (值1,值2,值3) |
判断一个值是否不是in列表中的任意一个值 |
like |
通配符匹配 |
regexp |
正则表达式匹配 |
3.逻辑运算符
运算符 |
作用 |
not或! |
逻辑非 |
and或&& |
逻辑与 |
or或|| |
逻辑或 |
xor |
逻辑异或 |
4.位运算符
运算符 |
作用 |
| |
位或 |
& |
位与 |
^ |
位异或 |
<< |
位左移 |
>> |
位右移 |
| 正则表达式匹配 |
3.逻辑运算符
运算符 |
作用 |
not或! |
逻辑非 |
and或&& |
逻辑与 |
or或|| |
逻辑或 |
xor |
逻辑异或 |
4.位运算符
运算符 |
作用 |
| |
位或 |
& |
位与 |
^ |
位异或 |
<< |
位左移 |
>> |
位右移 |
~ |
位取反 |