![](https://img-blog.csdnimg.cn/direct/e3863efe34ac4ddf9911a38052262339.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
MySQL
文章平均质量分 90
MySQL
dong132697
还在学习中,文章中的完整代码可以私聊我,无偿发。
展开
-
MySQL Connect
MySQL数据库的基础知识我们前面已经学习了,下面我们就开始学习怎么将MySQL数据库和我们学习的C/C++等语言连接。要使用C语言连接mysql,需要使用mysql官网提供的库。对于MySQL链接库中接口的使用,我们可以查阅官方文档。在MySQL的文档中,我们看到MySQL还构建了一些结构体,为了更好的使用接口函数。我们想要使用MySQL库,就必须先进行初始化,即需要先调用mysql_init函数来进行初始化。原创 2024-01-26 15:35:29 · 1195 阅读 · 0 评论 -
MySQL用户管理
我们前面学习MySQL数据库,一直都使用root用户来登录数据库并且进行操作。其实这样是存在安全隐患的,因为root用户是权限最高的用户,可以对所有数据库进行操作,这样数据库的安全性就会存在隐患,即如果不是自己登录了root用户,那么可以随便修改我们的数据库中的内容了。所以MySQL中就有了用户管理,通过对每个用户的权限进行设置,可以让不同的用户看到不同的数据库。原创 2024-01-25 22:26:41 · 1121 阅读 · 0 评论 -
MySQL视图
视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表,基表的数据变化也会影响到视图。原创 2024-01-25 19:57:11 · 381 阅读 · 0 评论 -
MySQL事务管理
我们在学习Linux和C++时,知道了有些程序在并发场景下会出现问题。那么如果对MySQL数据库进行CURD操作时,如果不加以控制,也是会出现问题的。例如下面的一个案例。当客户端A判断tickets表中的nums值大于0后,还没有执行update语句。此时并发执行的客户端B也判断tickets表中的nums值大于0,然后客户端B执行update语句将nums减1,然后此时客户端A也将nums减1,这样的话就造成了同一张票被卖了两次的情况。原创 2024-01-25 19:26:28 · 835 阅读 · 0 评论 -
MySQL索引
当我们有一个海量数据的表时,在查询的时候,如果我们使用正常的sql语句进行查询,我们看下面的案例。我们先构建一个有8000000条数据的表。下面的index_data.sql文件中存储了表的创建语句和插入数据的语句,并且可以随机生成8000000条随机数据。因为需要插入8000000条数据,所以建表的过程很慢,大概需要几分钟。当emp表创建成功后,我们可以使用select语句进行数据查询,然后我们可以明显感觉到当表中数据较多时,我们使用前面学习到的普通查询语句会很耗时。原创 2024-01-22 15:46:02 · 1685 阅读 · 0 评论 -
MySQL表的内连和外连
表的连接分为内连接和外连接。原创 2024-01-15 19:24:45 · 532 阅读 · 0 评论 -
MySQL复合查询
前面我们讲解的mysql表的查询都是对一张表进行查询,在实际开发中这远远不够。下面我们来学习一些MySQL中更复杂的查询。下面的表还是来自oracle 9i的经典测试表。EMP员工表DEPT部门表SALGRADE工资等级表查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J可以看到内置函数在where子句中也是可以使用的。按照部门号升序而雇员的工资降序排序使用年薪进行降序排序。原创 2024-01-15 18:53:51 · 1041 阅读 · 0 评论 -
MySQL内置函数
current_函数使用date函数使用会返回参数的日期部分。date_add和date_sub使用我们看到可以在内置函数中再次调用内置函数。datediff函数创建一个记录生日的表下面我们创建一个表用来记录用户的生日。我们将birthday设为date日期类型。当我们插入数据时,我们看到正常的日期可以插入进行。并且now()函数和current_timerstamp()函数返回的日期时间类型也可以插入进行。但是为什么current_time()函数返回的时间类型也能插入进去呢?原创 2024-01-15 11:50:16 · 1314 阅读 · 0 评论 -
MySQL基本查询
insert into 表名 (要插入数据的列) values(数据);下面我们先创建一个students表。然后我们向表中插入数据。如果我们不指定要插入数据的列,那么就是全列插入,即我们需要为每一列都输入数据。如果我们指定了要插入数据的列,那么只需输入指定列数据即可。我们还可以进行多行插入,每一行数据之间使用逗号分割开。原创 2024-01-14 16:31:46 · 1592 阅读 · 0 评论 -
MySQL表的约束
前面我们在学习数据库知识时,知道了当我们向数据库中插入数据时,如果数据不合法,那么MySQL不会允许数据插入成功,这也算是MySQL对数据合法性的一种约束。但是仅仅靠这一种约束是不够的。虽然真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如有一个字段是email,要求是唯一的。原创 2024-01-13 19:18:30 · 933 阅读 · 0 评论 -
数据库的数据类型
下面我们来创建一个表,表中创建一个tinyint类型的数据。当我们不指定tinyint为无符号类型时,tinyint默认为有符号类型整数。在MySQL中,整型可以指定是有符号的和无符号的,默认是有符号的。可以通过UNSIGNED来说明某个字段是无符号的下面我们向表中插入数据。我们看到当向表中插入tinyint范围内的数据时,可以成功插入。当插入的数据不在tinyint时,会直接插入失败。下面我们创建一个表t2,该表中的tinyint类型为无符号整型。原创 2024-01-13 15:23:02 · 1111 阅读 · 0 评论 -
数据库和表的操作
大写的表示关键字[] 是可选项CHARACTER SET: 指定数据库采用的字符集COLLATE: 指定数据库字符集的校验规则我们看到创建一个目录后,Linux的/var/lib/mysql下也会出现对应的目录。我们也可以在创建数据库时进行判断,如果当前数据库已存在,那么就不再创建。我们还可以在创建数据库时,指定这个数据库的字符集和校验规则。下面为创建一个使用utf8字符集的数据库。使用下面的两种方式都可以指定数据库的字符集。原创 2024-01-12 16:28:52 · 1054 阅读 · 0 评论