预约系统c++ qt mysql

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

第一次使用csdn记录


提示:以下是本篇文章正文内容,下面案例可供参考

#一、安装MySQL

学习安装使用,已安装好了

#二、使用步骤

#1.使用

代码如下(示例)

 win+R  进入命令提示符,输入cmd:进入小黑框

 输入cd /d  MySQL下的bin路径,进入该目录下

cd /d D:\MySQL\mysql-8.0.28-winx64\bin

 启动MySQL服务 (结束即为另一条)

 net start mysql
 net stop mysql

 输入命令后   ,输密码进入MySQL

mysql -u root -p

 如上,进入MySQL数据库服务,即可对数据库进行操作。

#2.MySQL基础操作

只需要一些基础操作,特意记录一下 

#2.1DDL(数据定义语言)  对数据库操作 

查询所有数据库

show databases;

 查询当前所用的数据库

select database();

 创建一个数据库

create database test_sql;

 

 删除数据库

drop database test_sql;

使用想用的数据库(后面的是数据库名字)

use mysql;

查询当前数据库所有表

show tables;

 

创建表

create table testtable(
id int comment '序号',
age int comment '年龄',
name varchar(20) comment '名字'
);

 显示表结构

desc testtable;

 查询指定表的建表语句

show create table testtable;

 往指定表里加入内容

alter table testtable add sexy varchar(1) comment '性别';

 修改表中的数据类型

alter table testtable modify name varchar(15) comment '姓名';

 修改表中名字

alter table testtable change name username varchar(15) comment '用户名';

 删除字段

alter table testtable drop sexy;

修改表名

alter table testtable rename to newtable;

 删除表

drop table newtable;

#2.2 DML(数据操作语言)

对表中数据进行操作

对指定字段插入数据

insert into testtable (id,sexy) values (1,'男');

 

 对全部字段插入数据

insert into testtable values (1,18,'小明','男');

 批量添加数据

指定字段

insert into testtable (id,name) values (2,'叶银松'),(3,'程思齐'),(4,'孔德鹏');

 全部字段

insert into testtable values (1,25,'叶银松','男'),(2,25,'倪超','男'),(3,25,'孔德鹏','男'),(4,26,'王昊东','男'),(5,25,'程思齐','男');

 修改数据

update testtable set name='叶银松' where age=18;

 删除数据

delete from testtable where age=18;

 #2.3DQL(数据查询语言)

查询表中数据

部分:

select id,age from testtable;

查询所有数据:

select * from testtable;

设置别名:

select id as uid from testtable;
select name uname from testtable;

 去除重复记录:

select distinct id from testtable;


条件查询

select * from testtable where id>2;

 

 模糊查询:

select * from testtable where name like '%鹏';


聚合查询

select max(id) from testtable where sexy='男';

 


分组查询

select sexy from testtable where id>1 group by sexy;

select sexy from testtable where id>1 group by sexy having sexy=’男’;

感觉分组查询最复杂,其中where和have有区别

where 和 having 的区别:

  • 执行时机不同:where是分组之前进行过滤,不满足where条件不参与分组;having是分组后对结果进行过滤。
  • 判断条件不同:where不能对聚合函数进行判断,而having可以。
  1. -- 年龄小于45,并根据工作地址分组,获取员工数量大于等于3的工作地址
  2. select workaddress, count(*) address_count from employee where age < 45 group by workaddress having address_count >= 3;


排序查询

asc:升序(默认)

select name from testtable order by age asc;

 desc:降序

select name from testtable order by id desc;


分页查询

数据不够,只能看一页,关键词是limit 

后面第一个参数是起始索引,第二个是查询记录数;

从0开始,起始索引 = (查询页码 - 1) * 每页显示记录数

select * from testtable limit 0,10;

重要!!!!!!

 FROM -> WHERE -> GROUP BY -> SELECT -> ORDER BY -> LIMIT

#2.4  DCL(和用户打交道)

创建用户

在当前主机上:localhost    

任意主机:%

create user 'sq'@'localhost' identified by '123456';

修改密码

alter user 'sq'@'localhost' identified with mysql_native_password by '111111';

 

 删除用户:

drop user 'sq'@'localhost';

查询用户权限

show grants for 'sq'@'localhost';


后续补充:在后面的学习过程里,遇到问题:需要用到外键约束,使不同表中相同数据互相约束,

并且在创建表时用到了primary key、mul key、auto_increment等属性

create table ordertable (
order_id int not null auto_increment,
user_id int not null ,
primary key (order_id),
key (user_id)
);

primary key 有两个作用,一是约束作用(constraint),用来规范一个存储主键和唯一性,但同时也在此key上建立了一个主键索引;    

                          PRIMARY KEY 约束:唯一标识数据库表中的每条记录;

                                                                 主键必须包含唯一的值;

                                                                 主键列不能包含 NULL 值;

                                                                 每个表都应该有一个主键,并且每个表只能有一个主键。(PRIMARY KEY 拥有自动定义的 UNIQUE 约束)

unique key 也有两个作用,一是约束作用(constraint),规范数据的唯一性,但同时也在这个key上建立了一个唯一索引;

UNIQUE 约束:唯一标识数据库表中的每条记录。
                                                    UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。
                                                    (每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束)

表中属性:

key

  • PRI主键约束;
  • UNI唯一约束;
  • MUL可以重复。

auto_increment(自增)

  • 为插入数据指定字段在上一次该字段值的基础上自增 1

  • 只作用于主键,一般用于 ID 的属性

  • 每个表只能有一个 auto_increment 字段

default(设置默认值)

        设置默认值,默认值只能是常量

not null(不为空)

        限制了空值的插入,用在必填字段上

https://www.jb51.net/article/55853.htm

什么是外键约束

外键是表中的一列或一组列链接到另外一张表的一列或一组列。外键会在相关联的表中起到约束作用,保证数据的一致性和实现一些级联操作。

如果在表A中建立外键,关联到表B,那么表B为主表,表A为从表。主表B中的对应的列的更新或删除会联动到外键所在的表A中的相应的列的操作(具体的操作根据在表A中添加外键时的配置不同而不同)

即,建立外键的表为从表,被外键关联的表是主表。

创建外键约束时,会针对本表中相应的行自动创建索引。

个人理解:相同数据在不同表里建立约束关系、同步

alter table ordertable add foreign key (user_id) references usertable(user_id) on update cascade on delete cascade;

[CONSTRAINT [symbol]] FOREIGN KEY
    [index_name] (col_name, ...)
    REFERENCES tbl_name (col_name,...)
    [ON DELETE reference_option]
    [ON UPDATE reference_option]

首先在CONSTRAINT关键字后面指定外键约束的名字。如果省略名字,那么MySQL会为此外键约束自动创建一个名字。

接下来,通过FOREIGN KEY关键字来指定此外键的列,多个列的话用逗号分隔开来,同样的外键的名字也是可省略的。

第三步指定主表和主表上被引用到的列,多列用逗号分隔。

最后,指定外键在子表和主表之间联动的动作(action),这些动作分为ON DELETEON UPDATEreference_option表示子表中此外键关联的列所采取的行动,当主表中被引用的列被删除(ON DELETE)或更新(ON UPDATE)时。

MySQL有5种reference options:CASCADESET NULLNO ACTIONRESTRICT, and SET DEFAULT

  • CASCADE:级联操作,如果父表中的一行被删除或更新,子表会自动跟着删除或更新。
  • SET NULL:如果父表中的行被删除或更新,子表中相应的列的值被设置为NULL
  • RESTRICT:如果父表中被外键引用的列的值在子表中存在相应的行与之匹配,MySQL拒绝父表的这个删除或更新操作。
  • NO ACTION:同RESTRICT
  • SET DEFAULT:MySQL的语法分析器可以识别,但是InnoDB和NDB引擎不支持。

实际上,MySQL支持三种actions:RESTRICTCASCADE and SET NULL

如果没有设置ON DELETEON UPDATE,那么默认的action是RESTRICT

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单记录了mysql的使用,和常见的数据库的基础操作,让自己有个印象,作为教程是不够的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我一定要加油

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值