学习笔记:SQL数据库相关

/*SQL 轻量型
MYSQL是一种关系数据库 
 元组:表中的一行即为一个元组 或为一条记录
 属性(字段):表中的每一列成为一个字段
 属性值:行和列交叉位置表示的
 主码:也叫主键 主关键字 表中用于唯一确定一个元组的数据
 域:属性的取值范围 : sex char(10)
三大类型:
 数字 :
  整形:tinyint 一个字节 4位 , smallint 8位 mediumint 16位
  浮点数:
 日期/时间:date 2017-12-23 ; time 10:05:30 ; timestamp 时间戳 13位 以秒位单位的变化量 自从哪个时间到现在经过的秒数
 字符串:
  字符串:varchar 可变字符串 ;char不可变
  文本:tinytext ;text;mediumtext;longtext
  二进制:tinyblob;blob;.....
.sql 可以是封装 也可以使数据库
标识符:标识符由字母、数字或下划线(_)组成, 且第一个字符必须是字母或下划线。

create database 数据库名[其他选项]  创建数据库
 create database samp_db character set gbk;
use samp_db 选择数据库
create table students 创建表
(
 id int unsigned not null auto_increment(自加) primary key,
 name char(8) not null(非空),
 sex char(4) not null,
 age tinyint unsigned not null,
 tel char(13) null default "-" (用- 来替换null),
);
insert [into] 表名 [(列名1,列名2,...)] values (值1,2,...)
 insert into students values(NULL, "王刚", "男", 20, "13811371377");
 insert into students (name, sex, age) values("孙丽华", "女", 21);
select 列名称 from 表名称 [查询条件];
 去重查找
  SELECT DISTINCT 列名称 FROM 表名称
 select * from students;  查询
 select name, age from students;
 select * from students where sex="女";
 select * from students where name like "%王%";
  通配符: % :替代一个或多个   _ :替代一个  [] :字符列中的任何单一字符(regexp 代替 like)
 select * from students where id<5 and age>20;
 select * from students limit m,n;  (m: 从哪一行开始 , n:几行)
 select * from students where age in (20,21); 查找在20 21之间的 闭区间
          between(20,22) 在20 22 之间的
 Alias 别名 仅仅是展示 不会改变结构
  select p.age,p.name from students as p where age > 15;
  select name as p from students;
update 表名称 set 列名称=新值 where 更新条件;   更新表中的数据
 update students set tel=default where id=5;
 update students set age=age+1;
 update students set name="张伟鹏", age=19 where tel="13288097888";
delete from 表名称 where 删除条件;   删除表中的数据
 delete from students where id=2;
 delete from students where age<20;
 delete from students;
 
alter table 语句用于创建后对表的修改, 基础用法如下:
 添加列
  基本形式: alter table 表名 add 列名 列数据类型 [after 插入位置];
  示例:
  在表的最后追加列
  address: alter table students add address char(60);
  在名为 age 的列后插入列
  birthday: alter table students add birthday date after age;
  
 修改列
  基本形式: alter table 表名 change 列名称 列新名称 新数据类型;
  示例:
  将表 tel 列改名为
  telphone: alter table students change tel telphone char(13) default "-";
  将 name 列的数据类型改为
  char(16): alter table students change name name char(16) not null;
  
 删除列
  基本形式: alter table 表名 drop 列名称;
  示例:
  删除 birthday 列:
  alter table students drop birthday;
  
 重命名表
  基本形式: alter table 表名 rename 新表名;
  示例:
  重命名 students 表为 workmates:
  alter table students rename workmates;
  删除整张表
  基本形式: drop table 表名;
  示例: 删除 workmates 表:
  drop table workmates;
  
复制表:
 create table newstu like suqian145.students; (suqian145为另一个数据库)
 insert into newstu select * from students;
 备份:
  create table newshoping select * from shoping;
引用两个表:
 inner join:
  select students.id,students.name,shopping.orderid,shopping.ordername,shopping.ordermu from students inner join shopping on students.id = shopping.stu_id order by shopping.ordernum; 
   (当students.id = shopping.stu_id 时的结果)
 left join: 列出所有学生买了哪些(如果有):
  select students.id,students.name,shoping.orderid,shoping.ordernum from students left join shoping on students.id = shoping.stu_id;
 right join:查看所有商品销售情况
  select * from students right join shoping on students.id = shoping.stu_id;
 union 合并去重:
  select id from students union select stu_id from shopping;
  不去重:
  select id from students union all select stu_id from shopping;
 
删除整个数据库
 基本形式: drop database 数据库名;
 示例:
 删除 samp_db 数据库:
 drop database samp_db;
*/
/****************************************************************************************************
******************************************************************************************************/

//用C++程序控制数据库:
#include <Windows.h>
#include <mysql.h>
#include <string>
#include <iostream>


// SDK   software development kit
//简易版本的服务器
using namespace std;
//#pragma comment(lib,"D:\\Program Files\\MySQL\\MySQL Server 5.6\\lib\\libmysql.lib") 
int main()
{


	const char user[] = "root";
	const char pswd[] = "zyc19970916";
	const char host[] = "localhost";
	const char databasename[] = "samp_db";
	unsigned int port = 3306;
	MYSQL myCont;//句柄 数据库变量 \n
	MYSQL_RES *result;
	MYSQL_ROW sql_row;
	int res;
	mysql_init(&myCont);
	if (mysql_real_connect(&myCont, host, user, pswd, databasename, port, NULL, 0))
	{
		mysql_query(&myCont, "SET NAMES GBK"); //设置编码格式
		res = mysql_query(&myCont, "select * from students");//查询
		//res = mysql_query(&myCont, "insert into students  (id,name,sex,age,tel) values(NULL,\"毕先鑫\",\"男\",23,\"154827837\")");//插入
		//res = mysql_query(&myCont, "delete from students where name = '张猛'");//删除
		//res = mysql_query(&myCont, "update  students set sex = '女' where id = 2");//更新
		if (!res)
		{
			result = mysql_store_result(&myCont);
			if (result)
			{
				while (sql_row = mysql_fetch_row(result))//获取具体的数据
				{
					cout << "id " << sql_row[0] << " ";
					cout << "name " << sql_row[1] << " ";
					cout << "sex " << sql_row[3] << " ";
					cout << "age " << sql_row[4] << " ";
					cout << "telphone " << sql_row[2] << endl;				
				}
			}
		}
		else
		{
			cout << "query sql failed!" << endl;
		}
	}
	else
	{
		cout << "connect failed!" << endl;
	}
	if (result != NULL)
		mysql_free_result(result);
	mysql_close(&myCont);
	system("pause");
	return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值