数据库的应用

数据库

目前市面常用的数据库:
1、Oracle:甲骨文、关系型数据库、重量级
2、MongDB:微软
3、Redis:内存数据库
4、Sql Server:微软
5、sqlite3:嵌入式数据库、轻量级
6、Mysql:关系型数据库、重量级,高性能

sql语句:存储数据,删除数据,修改数据,查询数据

sqlite3:

一个轻量级的嵌入式数据库管理系统,台式一个自包含的,无服务器的、零配置的事务性SQL

进入sqlite3命令行语句

sqlite3  your_database_name.db

退出命令行

.quit

创建数据库

.databases

查看数据库所有表

.tabels

第一行:字段
后面跟数据

创建表

CREATE TABLE students(
	id INTERGER PRIMARY KEY,
	name TEXT NOT NULL,
	age INTGER,
	grade TEXT
);
如果表不存在就创建,存在就不管
CREATE TABLE if net exists userInfo(   \
      username text not null,  \
      passwd text not null);";

展现创建表的模式

 .schema students

主键

主键是表中唯一标识每一行的字段

id INTERGER PRIMARY KEY

插入数据

INSERT INTO students(name,age,grade) VALUES('alice',23,'A');

查询数据

查看所有内容
SELECT * from students;
ps: *是通配符
只看name
SELECT name from students;
看name和age
SELECT name,age from students;
想看年龄大于20
SELECT name,age from students where age>20;
想看年龄大于20且成绩为A
SELECT * from students where age>20 and grade='A';
想看年龄在20到30区间
SELECT * from students where age between 20 and 30;

更新数据(修改数据)

UPDATE students SET age='24' where name ='xxx';

删除数据

DELETE FROM students where name='xxx';

SQL函数

SELECT COUNT(*) FROM students;
判断表里是否存在zhangsan,返回值为zhangsan的数量
SELECT COUNT(*) FROM students where username='zhangsan';
SELECT COUNT(*) FROM userInfo where username='zhangsan' and passwd='123';
SELECT COUNT(1) FROM userInfo where username='zhangsan' and passwd='123';
ps:效果一样,但count(1)效率远大于count(*)

计算学生平均年龄

SELECT AVG(age) FROM students;

查询最大

SELECT MAX(age) FROM students;

查询最小

SELECT MIN(age) FROM students;

计算总和

x SELECT SUM(age) FROM students;

MySQL

MySQL是一个关系型数据库管理系统,广泛运用与Web应用和企业系统,具有高性能,高可靠性,高可用性等优点

安装mysql(ubuntu)

sudo apt-get install mysql-server

启动mysql

sudo systemctl

进入mysql命令行

mysql -u root -p

查看mysql服务器里的的数据库名

show databases;

创建数据库

CREATE DATABASE demoTest;

MySQL 客户端切换到名为 demoTest 的数据库

use demoTest;

返回当前被选择的数据库的名称。

如果当前没有选择任何数据库,这条命令将返回 NULL

select database();

创建表

CREATE TABLE students(
	id INT AUTO_INCREMENT PRIMARY KEY,
	name VARCHAR(100) NOT NULL,
	agt INT,
	grade VARCHAR(10)
);

AUTO_INCREMENT PRIMARY KEY,:设置id为自增主键

查看表名

show tables;

查看表

DESCRIBE students;

数值类型

数值类型分为整数类型与浮点类型

INT:标准整数

FLOAT:单精度浮点数

日期和时间类型

DATA:日期,格式为 YYYY-MM-DD

TIME:时间,格式为 HH:MM:SS

DATETIME:日期和时间的组合,格式为:YYYY-MM-DD HH:MM:SS

字符串

CHAR:固定长度的字符串

VARCHAR:可变长度的字符串

TEXT:存储长文本数据,最大长度为:65535

二进制类型(用于存储二进制数据):

BINARY:固定长度的二进制字符串,类似于CHAR,但用于二进制

插入数据

INSERT INTO students(name,age,grade) VALUES('zhangsan',21,'A');

查询数据

SELECT * from teacher;
SELECT name,age from teacher;
SELECT age from teacher where age>21;

更新数据

UPDATE teacher SET age='24' where name ='xxx';

删除数据

DELETE FROM teacher where name='xxx';

删除表

DROP TABLE students;

修改表名

rename table teacher to renameteacher;

事务

一组sql语句的集合,这些操作要么全部执行成功,要么全部回滚(重置到语句运行前的状态),以确保数据库的完整性和一致性

事务的四个特性(ACID)

Atomicity(原子性)

  • 事务中的所有操作要么全部执行,要么全部不执行
  • 事务中的任何一个操作失误,整个失误就会回滚到执行前的状态

Consistrncy(一致性)

Isolation(隔离性)

Durabibity(持久性)

MySQL中的事务控制语句
START TRANSACTION 或 BEGIN
开始事务
COMMIT
提交事务
ROLLBACK
回滚

BEGIN; 
UPDATE teacher set age=age-1 where name='zhangsan' 
UPDATE teacher set age =age+1 where name='wangwu' 
COMMIT;

连接数据库

初始化数据库

    MYSQL *sqlDB=nullptr;
    sqlDB=mysql_init(NULL);
    if(sqlDB==nullptr)
    {
        cout << "mysql_init failed." << endl;
        _exit(-1);
    }

建立连接

    const char *host = "localhost";
    const char *user = "root";
    const char *passwd = "1";
    const char *baseName = "demoTest";
    int port = 3306;
    if(mysql_real_connect(sqlDB, host, user, passwd, baseName, port, NULL, 0)==NULL)
    {
        cout << "connetc failed." << endl;
        _exit(-1);
    }

执行语句

mysql_query(sqlDB, sql);

查询语句

    //查询语句
    sql = "select * from students;";
    ret=mysql_query(sqlDB,sql);
    if(ret!=0)
    {
        cout << "select failed:" <<mysql_error(sqlDB)<< endl;
        _exit(-1);
    }
    cout << "查询成功..." << endl;

结果集

	//结果集
    MYSQL_RES *result=mysql_store_result(sqlDB);
    if(result==NULL)
    {
        cout << "mysql_store_result error:" << mysql_error(sqlDB) << endl;
        exit(-1);
    }
    //获取结果集的列数
    unsigned cols=mysql_num_fields(result);
    //获取结果集的行数
    unsigned row=mysql_num_rows(result);

获取表的字段

    //获取数据库表的字段
    MYSQL_FIELD *field = NULL;
    while((field=mysql_fetch_field(result))!=NULL)
    {
        cout <<left<<setw(10)<<field->name;
    }
    cout << endl;

获取数据

    //获取数据
    MYSQL_ROW rows;
    while((rows=mysql_fetch_row(result))!=NULL)
    {
        //每个row变量表示一行
        for (int i = 0; i < cols; i++)
        {
            cout << rows[i] <<"\t";
        }
        cout << endl;
    }
    //释放结果集
    mysql_free_result(result);

约束

在Mysql中,外键是一种约束,它用于维护关系型数据库中表与表直接的关系,确保数据库的一致性和完整性。

外键的作用:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值