目录

mysql概述

mysql连接

数据库操作

创建数据库 :create database 数据库名;

查看数据库:show databases;

选中数据库:use 数据库名;

删除数据库:drop database 数据库名;

针对表的操作

sql中支持的数据类型

查看数据库中所有的表:show tables;

创建表:create table 表名(列名 类型,列名 类型...);​编辑

查看指定表的结构:desc 表名;

删除表:drop table 表名;

增删改查CRUD

1.新增

2.查询

3.修改

4.删除

mysql概述

mysql是一个客户端-服务器结构的程序

mysql的服务器是真正的本体,负责保存和管理数据。数据都是存储在硬盘上的。

mysql连接

建立连接

客户端连接成功

大概是密码错误

检查服务器是否正常工作

数据库操作

1.创建数据库 create database 数据库名字 charset utf8, 2. 查看数据库 show databases 3.选中指定的数据库 use 数据库名; 4.删除数据库 drop database 数据库名;

sql中数据库名、表名、列名都不能和关键字重复

sql都需要以;结尾

mysql客户端允许输入sql时换行.

创建数据库 :create database 数据库名;

避免创建数据库重复(在工作中常常把一系列sql写到一个文件中批量执行,如果一条sql报错了,后面都无法执行)

已经存在,创建失败

不存在,创建成功

创建时指定字符集

(注意:mysql的utf8是一个”残本“ 少了一些emoji表情 而utf8mb4则是完全体)

查看数据库:show databases;

选中数据库:use 数据库名;

删除数据库:drop database 数据库名;

(注意:删除的不仅仅时database 而且也删除了database中所有的表 和表里所有的数据!!)

针对表的操作

(前提是先选中数据库)

行也称为记录 列也称为字段

sql中支持的数据类型

DECIMAL(M,D)精度更高的浮点数(精度高但运行速度慢,占用空间也更多)

(mysql有无符号的数据类型 但是不建议使用 会在未来的的版本中废除)

(注意:一般很少会在数据库的某一列中,存储特别大的数据.(几十M, 几百M)这么做会大大影响到数据库的增删改查的效率 实际开发中如果需要保存图片,一般都是把图片单独放到专门的目录中,然后让数据库保存图片的路径)

上述类型 掌握几个重要的即可:

int

long

double

decimal

varchar

datetime

查看数据库中所有的表:show tables;

创建表:create table 表名(列名 类型,列名 类型...);

(如果想让表名/列名和关键字一样 可以使用反引号`(英文状态下打波浪线)把表名/列名引起来)

(数据库中的内容 都是持久化存储的 重启电脑啥的 数据仍然存在)

(注意:sec=second 秒 并且0.00sec表示时间<10ms 0.02sec=20ms在计算机中是一个挺慢的时间了!mysql这样的数据库 性能其实是短板~)

查看指定表的结构:desc 表名;

删除表:drop table 表名;

(删除表的同时 也会把表里的数据一起删除掉)

增删改查CRUD

1.新增

①insert into 表名 values(值,值...);

(注意 要与列的个数和类型匹配)

②一次插入多行记录

insert into 表名 values (值,值...),(值,值...)...;

(一次插入多行 比一次插入一行,分多次插入要快不少~)

③指定列插入

insert into 表名(列名,列名...) values (值,值...);

(其他列会被自动填充为默认值)

datetime插入 使用固定格式字符串

sql提供了一个现成的函数 now()

2.查询

mysql是一个客户端-服务器结构的程序

客户端进行的操作 会通过请求发送给服务器 服务器的查询结果也会通过响应返回给客户端

①全列查询

select * from 表名

把表中所有行和列查询出来

实际开发中谨慎使用 如果数据太多 可能导致瘫痪

1.读取硬盘.把硬盘的IO给跑满了.此时程序的其他部分想访问硬盘,就会非常慢

2.操作网络. 也可能把网卡的带宽也跑满,此时其他客户端想通过网络访问服务器,也会非常慢,

②指定列查询

select 列名,列名...from 表名;

一个表的列数非常多,但某个场景的操作,只需要关注其中几个列

③查询字段为表达式

一边查询一边计算~

不会修改服务器上的原始数据,只是响应在临时结果中做了计算

④带别名查询

查询的时候给列/表达式指定别名(给表也能指定别名)

select表达式 as 别名 from 表名;

(as可以省略 但是不建议 可读性差)

⑤去重查询

distinct修饰某个列/多个列,值相同的行只会保留一个

⑥查询时排序

select 列名 from 表名 order by列名 asc/desc;

(asc升序 desc降序 如果省略,就是升序)

(排序也是针对临时数据,不影响在服务器上存储的数据~)

(注意:如果一个sql不加order by查询结果的顺序是无序、不确定的,我们进行一些简单操作时看起来顺序没变,但如果进行一些更复杂的操作时,就不一定了)

order by 指定的列, 如果你 select 的时候没有把这一列査出来, 也不影响 排序~~

order by 还可以针对表达式进行排序~~

指定多个列来排序. order by 后面可以写多个列.使用,来分割开~~

⑦条件查询:where

select 列名 from 表名 where 条件;

会指定具体的条件,按照条件针对数据进行筛选

between..and.. 为闭区间

in来表示一个离散的集合

(优先级不建议背 用()即可)

⑧分页查询limit

限制最多查询出来多少个结果 默认从下标0开始

offset偏移量,表示从哪个下标开始

3.修改

update 表名 set 列名=值,列名=值 where 条件;

(注意:math+=30 × ,math=math+30 √)

(可能会导致一些错误 如结果为43.75 而创建表时定义decimal(3,1)超出范围 则进行截断43.8。

产生warning时 用show warnings语句查看警告

4.删除

delete from 表名 where 条件 / order by / limit

如果不指定任何条件,就是删除整个表

(drop table是删除了表和表里的数据

delete只是删除了表里的数据 表还在(空表))

补充

sql可以通过-- 表示注释(--后至少有一个空格)

另外也支持#开头作为注释

文章链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。