商用库基本操作

  • 不区分大小写

一、ISQL指令

1.desc

查看表信息

DESC table_name;

2.create table

在数据库中创建一张新的表

CREATE TABLE table_name
{
   列名称1  数据类型,
   列名称2  数据类型,
   列名称3  数据类型,
   ...
};

 eg.

CREATE TABLE Persons
{
  Id_P int,
  LastName varchar(255),
  FirstName varchar(255),
  Address  varchar(255),
  City varchar(255)
};
数据类型对照
数据类型对照
varchar(20)RTDB_KEY
varchar(size)容纳可变长度的字符串,size为字符串的长度
char(size)容纳固定长度的字符串,size为字符串的长度
numeric(size,d)容纳带有小数的数字,'size'为数字的最大位数,'d'为小数点右侧的最大位数
日期date

3.select

SELECT * FROM 表名;    //查看表中所有字段的字段数据
SELECT 字段 FROM 表 WHERE 筛选条件;   //根据筛选条件查看数据

 eg. 

//查看表号101,域号4的所有列的内容
SELECT *FROM sys_column_info WHERE table_id=101 AND column_id=4;

//从flight表中取'flight_id','destination'列的内容
SELECT flight_id,destination FROM flights;
//从flight表中取所有列的内容
SELECT * FROM flights;

4.update(*)

更新表中的原有数据,保存该条记录之前的ID值。

UPDATE 表名称 SET 列名称 = 新值 WHERE  筛选条件;

 eg. 

UPDATE table_name SET column_name=new_value WHERE colunm_name=some_value;
UPDATE table_name SET column_name1=value1,column_name2=value2 WHERE column_name=value3;

5.insert(*)

INSERT INTO table_name(column1,column2,...,column_n)VALUES(value1,value2,...,value_n);

 eg. 

//插入一行
INSERT INTO dependents(first_name,last_name,relationship,employee_id)VALUES('Max','Su','Chid',176);

//插入多行
INSERT INTO dependents(first_name,last_name,relationship,employee_id)VALUES('Max','Su','Chid',176),('Michelle','Lee','Chid',192);

6.alter

修改表内容

ALTER TABLE table_name [改变方式];
改变方式
方式内容
ADD增加新列和完整性约束
DROP删除指定列或指定的完整性约束
CHANGE修改某些列
MODIFY修改某些列的数据格式

ALTER TABLE table_name ADD 列定义|完整性约束;
ALTER TABLE table_name DROP COLUMN 列名;
ALTER TABLE table_name CHANGE 原列名 TO 新列名 新列的数据类型;
ALTER TABLE table_name MODIFY 列名 数据类型;

 eg.

CREATE TABLE flights
(
    flight_id SERIAL PRIMARY KEY,
    origin VARCHAR(255),
    destination VARCHAR(255),
    departure_time TIMESTAMP,
    arrival_time TIMESTAMP
);

//添加新的列alliance
ALTER TABLE flights ADD COLUMN alliance VARCHAR(255);

//重命名:将destination列重命名为destination_city
ALTER TABLE flights RENAME COLUMN destination TO destination_city;

//添加非空约束
ALTER TABLE flights ALTER COLUMN departure_time SET NOT NULL;

//删除origin
ALTER TABLE flights DROP COLUMN origin;

7.删除

7.1  delete

保留表,删除表中的内容

DELETE FROM table_name;//删除表中全部内容
DELETE FROM table_name WHERE 筛选条件;

 eg. 

DELETE FROM table_name WHERE sale_price>=400;
7.2 drop

删除表的内容和定义,释放空间

DROP TABLE table_name;

8.commit

对商用库进行修改完毕后,执行commit保存,否则不生效。

COMMIT;

***筛选条件(where语句):

(1)比较运算符:>,>=,=,<,<=,<>,!>,!<

(2)范围运算符,判断表达式是否在指定范围: BETWEEN...AND....;NOT BETWEEN...AND....

WHERE age BETWEEN 10 AND 30;     //age >=10 AND age<=30

(3)列表运算符,判断表达式是为列表中的指定项:IN(); NOT IN();

WHERE country IN ('Germany','China');

(4)模式匹配运算符:LIKE、NOTLIKE

常用于模糊查找,判断列值是否与指定的字符串格式相匹配。

通配字符
选项说明
%匹配任意类型和长度的字符(英文)
%%匹配任意类型和长度的字符(中文)
[字符集合]匹配字符集合中的任何一个字符
[^]匹配不在括号中的任何字符
*匹配0个或多个在它前面的字符
_匹配1个字符
<字符串>匹配包含指定字符串的文本

 eg. 

SELECT * FROM table_name WHERE u_name LIKE '%三%';                            //把u_name中含有'三'的记录找出来,比如'张三','三脚猫','唐三藏'   
SELECT * FROM table_name WHERE u_name LIKE '%三%' AND u_name LIKE '%猫%';      //把u_name中含有'三'和'猫'的记录找出来,即'三脚猫'
SELECT * FROM table_name WHERE u_name LIKE '_三_';      //找u_name为三个字,且中间一个字是'三'的记录,即'唐三藏'
SELECT * FROM table_name WHERE u_name LIKE '三__';      //找u_name为三个字,且第一个字是'三'的记录,即'三脚猫'
SELECT * FROM table_name WHERE u_name LIKE '[张李王]三';     //找出'张三','李三','王三'
SELECT * FROM table_name WHERE u_name LIKE '老[1-9]';        //找出'老1','老2'...'老9';[abcd]可略写为'a-e';[01234]可略写为'0-4'
SELECT * FROM table_name WHERE u_name LIKE '[^张李王]三';     //找出不姓'张李王'的'x三'

(5)空值判断符:IS NULL、IS NOT NULL

WHERE age IS NULL;

(6)逻辑运算符:NOT、AND、OR

二、程序读写商用库

调用平台提供的接口,对商用库数据进行读取和写入。

占位符
数据类型占位符
int%d
long%ld
string’%s‘
float%.2f

1.读取商用库

int ReadFromHisDbByWhereStr(const std::string &table_name, const std::string &field_name, const std::string &where_str, std::vector<DATA_STRUCT> &result_vec)
/*
table_name:商用库中需要读取的表名
field_name:需要读的域名
where_str:筛选条件,where语句
result_vec:取回的数据放入此vector中
*/

2.将数据写入商用库

包含更新原有数据和插入新数据两种方式

int SqlExecuteBySp(const std::vector<string> &sql_vec)
/*
sql_vec:写商用库的sql语句vector
*/
2.1 update

 更新表中的原有数据,保存该条记录之前的ID值。

 eg.

string table_name;
string name_temp;
char area_sql_str[1024];
sprintf(area_sql_str, 
      "UPDATE '%s' SET load_name = '%s', load_area = %ld, resp_level = %d, current_p = %.2f, up_cap = %.2f, dn_cap = %.2f where id = %ld and load_type = %d",table_name.c_str(), name_temp.c_str(), load_area, resp_level, it2->second.area_current_p, it2->second.area_up_cap, it2->second.area_dn_cap, area_resp_id_map[load_area][resp_level],1007);
sql_vec.push_back((string(area_sql_str)));
2.2 insert

 向表中一行或多行插入数据,记录表中最大ID值,创建新的ID

 eg.

long maxid = 0;             
keyno = GetNewKeyidByTable(table_no, maxid);
sprintf(area_sql_str,
    "INSERT %s(id,load_name,load_area,resp_level,current_p,up_cap,dn_cap,load_type)" 
    "VALUSE(%ld,'%s',%ld,%d,%.2f,%.2f,%.2f,%d)",
     table_name.c_str(),keyno, name_temp.c_str(), load_area, resp_level, it2->second.area_current_p, it2->second.area_up_cap, it2->second.area_dn_cap,1007);
sql_vec.push_back((string(area_sql_str)));
2.3 delete

删除表中的内容

char sql_string[1024];
sprintf(sql_string,"DELETE FROM %S","TABLE_NAME");
cout<<sql_string<<endl; //打印检查sql语句是否正确
sql_vec.push_back(sql_string);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值