个人主页:兜里有颗棉花糖
欢迎 点赞 收藏✨ 留言✉ 加关注本文由 兜里有颗棉花糖 原创
收录于专栏【MySQL学习专栏】
本专栏旨在分享学习MySQL的一点学习心得,欢迎大家在评论区讨论
重点放前面:
MySQL是一个客户端、服务器结构的程序。
MySQL默认是拉丁文,不支持中文。需要我们在创建数据库的时候设置一下字符编码(utf8或者utf8mb4)
// 创建数据库
create database db_name;
create database db_name [character set charset_name]; // 设置字符集方式1
create database db_name [charset charset_name]; // 设置字符集方式2
// 显示数据库
show databases;
// 使用数据库
use db_name;
// 删除数据库
drop database db_name;
数字
数据类型 | 大小 | 说明 |
---|---|---|
BIT[(M)] | M指定位数,默认为1 | 二进制数,M范围从1到64,存储数值范围从0到2^M-1 |
TINYINT | 1字节 | |
SMALLINT | 2字节 | |
INT | 4字节 | |
BIGINT | 8字节 | |
FLOAT(M,D) | 4字节 | 单精度,M指定长度,D指定小数位数,会发生精度丢失 |
DOUBLE(M,D) | 8字节 | 双精度,M指定长度,D指定小数位数,会发生精度丢失 |
DECIMAL(M,D) | M/D最大值+2 | 双精度,M指定长度,D表示小数点位数。可以精确表示小数(代价是存储占用的空间更大,计算速度更快) |
NUMERIC(M,D) | M/D最大值+2 | 双精度,M指定长度,D表示小数点位数。可以精确表示小数 (代价是存储占用的空间更大,计算速度更快) |
字符串
数据类型 | 大小 | 说明 |
---|---|---|
VARCHAR(SIZE) SIXE表示最大长度,单位为字符 |
0-65535字节 | 可变长度字符串 |
TEXT | 0-65535字节 | 长文本数据 |
MEDIUMTEXT | 0-16777215字节 | 中等长度的文本数据 |
BLOB | 0-65535字节 | 二进制形式的长文本数据 |
时间日期
数据类型 | 大小 | 说明 |
---|---|---|
DATETIME | 8字节 | 范围从1000到9999年,不会进行时区的检索及转换 |
DATESTAMP | 4字节 | 范围从1970到2038年,自动检索当前时区并进行转换 |
// 创建表
CREATE TABLE table_name (
column1 data_type constraint,
column2 data_type constraint,
...
constraint // constraint是可选的约束条件,如主键、外键等。
);
// 查看数据库中的所有表
show tables;
// 查看指定表的结构
desc db_name;
// 删除表
drop table db_name;
// 向数据表中插入数据
// 一次性插入多行数据的效率远远高于每次只插入一条数据分多次插入
// 因为每个插入数据都涉及到客户端和服务器之间的通信。MySQL是一个客户端、服务器结构的程序。
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...),(value1,value2,velue3);
select 执行过程:①遍历每一行数据;
②把当前数据带入到条件中,成立则保留,不成立则不保留;
③针对条件成立的记录,按照select后面的表达式/列进行计算。
// 方式一:全列查询数据表中的具体内容
select * from table_name;
// 方式二:查看表中的具体数据(指定列查询)
SELECT column1, column2, ... FROM table_name;
// 方式三:表达式查询
// 表达式查询是在查询的同时进行运算,然后把查询到的结果返还给mysql客户端
// 最终客户端拿到的是临时表的数据,不会影响到服务器存储的数据本体。
select 表达式 from tb_name;
// 方式四:查询的时候给列/表达式指定别名(as可以省略但是不建议省略)
SELECT 列名 AS 别名 FROM table_name;
// 方式五:去重查询
select distinct 列名 from table_name;
// 方式六:查询排序(升序)
// 查询操作只是针对临时表进行操作,对于数据库服务器上原始的数据并没有产生任何的影响
SELECT 列1, 列2 FROM 表名 ORDER BY 列1 列2... ASC; // 这里不写ASC也可以,因为默认是按照升序进行排序的。
// 降序
SELECT 列1, 列2 FROM 表名 ORDER BY 列1 列2... DESC;
// 方式七:条件查询
select 列名 from table_name where 条件;
// 条件查询:如果条件成立,则将该记录加入结果集并返还给客户端;条件不成立则跳过该记录
// 条件比较不仅仅是列名和常量进行比较,列名和列名之间也可以进行比较。
// mysql的查询条件中不允许使用无法使用列的别名(如果我们尝试在mysql中使用别名的话那么这个别名不能够被识别出来。)。
// 方式八:分页查询
描述了当前的结果从哪一条开始算,
limit num1约束了结果中最多可以包含几条数据;
offset nums2表示从下标为num2的的记录开始获取
select * from table_name limit num1 offset nums2;
// 模糊匹配:% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字符
update修改表操作(先查询在进行修改)
update table_name set 列名1 = 值,列名2 = 值,... [where 条件];
// 如果不加where条件的话就会对表中表中的所有行
// 此时的修改操作针对的是mysql服务器上的本体数据,是持久生效的
// 如果我们update设定的条件没有设定好的话,那么如果想恢复回原来的数据此时的成本是很高的(因为我们不知道那些行被修改了哪些没有被修改)
删除表中行的操作(直接删除指定的行)
// 删除是按照行来进行删除的
// 如果没有指定where条件就会把删除所有的行进行删除(和删除表操作差不多,即数据丢失但是表没有丢失)
delete from table_name [where 条件];
好了,以上就是本文的全部内容了。主要讲解了对数据库的一些操作和数据表的增删查改的简单操作。内容比较基础但是很重要,需要我们多多练习,举一反三,甚至是举一反十来增加自己的编写sql的熟练度。
就到这里吧,再见啦友友们!!!