一、数据库的安装
1、检测数据库是否安装
sudo netstat -tap|grep mysql
2、数据库的安装
sudo apt-get install mysql-server
sudo apt-get install mysql-client
sudo apt-get install libmysqlclient-dev
3、登录数据库
mysql [-h主机ip] -u用户名 -p
4、添加用户
create user '用户名'@'localhost' identified by '密码'
5、授权
grant all on *.* to '用户名'@'localhost'
6、查看用户
select host,user from mysql.user;
二、数据库操作
1、数据库关于库的增删显操作sql语句
① 显示所有的库:show databases
② 创建库:create database 库名
③ 删除库:drop database 库名
④ 选中库:use 库名
2、数据库关于整张表格增删改显操作sql语句
① 显示所有表格:show tables;
② 创建表格:
create table 表名 (字段名1 类型,字段名2 类型,.....,字段名n 类型)charset utf8
③ 显示字段详细信息:desc 表名
④ 删除表格:drop table 表名
⑤ 修改表名:rename table 旧表名 to 新表名
3、数据关于字段增删改查操作sql语句
① 添加字段:
alter table 表名 add 字段的定义 //默认放在最后
alter table 表名 add 字段的定义 first //放在最前
alter table 表名 add 字段的定义 after 字段名 //指定字段后面
② 删除字段:alter table 表名 drop 字段名
③ 修改字段类型:
alter table 表名 modify 字段名 新的类型
④ 修改字段属性:
alter table 表名 change 字段名 重新定义字段
⑤ 显示字段详细信息:desc 表名
4、数据库关于记录增删改查操作的sql语句
① 插入记录:
insert into 表名 values (value1,value2,...,value)
insert into 表名 (字段名1,字段名2,..,字段n) values (value1,value2,...,value)
insert into 表名 values (value1,value2,...,value),(value1,value2,...,value)
ps:字符串类型的数据一定要加单引号
② 删除记录:
delete from 表名 where 条件表达式
③ 修改记录:
update 表名 set 字段名=value where 条件表达式
④ 查看:
select * from 表名
select 字段1,字段2 from 表名
select * from 表名 where 表达式
5、类型
① 整型:
tinyint 1:默认是有符号类型
unsigned : 设置无符号类型
zerofill : 零填充,默认就是无符号类型
not null : 不能为空
default : 设置默认值
② 主键:
主键:能够唯一标识一条记录,不能有重复的,默认就是不能为空 一张只有一个主键,可以定义表格时设置,也可以定义玩表格设置
primary key: 主键
删除主键: alter table 表名 drop primary key
设置主键: alter table 表名 add primary key(字段名)
auto_increment:自增属性,默认是从1开始,也可以自定义自增值
设置自增值:alter table 表名 auto_increment=value
ps:一个字段同时有主键和自增两个属性,如果要删除主键属性,必须先删除自增,再删除主键
alter table 表名 change sid sid int;
alter table 表名 drop primary key
③ 外键:
外键:让两张表格建立关联 (让一张表中的字段参照另外一张表格的主键),保证数据的有效性和正确性
创建表格设置外键:constraint 外键别名 foreign key(字段名) references 参照表(字段名)
建表后添加外键:alter table 表名 add constraint 外键别名 foreign key(字段名) references 参照表(字段名)
删除外键:alter table 表名 drop foreign key 外键别名
③ 浮点类型:
float: 4
double : 8
decimal(m,d)
④ 字符串:
char(32): 定长字符串
varchar(32): 变长字符串
text : 文本,不允许设置默认值
⑤ 日期时间类型:
year :年份(以整型表示)
date:日期('yy-mm-dd')
time :时间('hh:mm:ss')
datetime:日期时间('yy-mm-dd hh:mm:ss')
6、库的备份与恢复
备份:
① 表级备份(系统命令终端操作)
mysqldump -uroot -p 库名 表1 表2 > 路径 //备份指定表格
mysqldump -uroot -p 库名 > 路径 //备份库下的所有表格
② 库级备份
mysqldump -uroot -p 库1 库2 -B >路径 //备份指定库
mysqldump -uroot -p --all-databases >路径 //备份所有库
恢复(数据库命令行操作的):
① 表级恢复
use 库名;
source 路径;
② 库级恢复
source 路径
三、数据库编程
1、定义MYSQL类型的变量
MYSQL mysql;
2、初始化句柄
MYSQL * STDCALL mysql_init(MYSQL *mysql);
参数: 句柄地址
返回值: 成功返回地址,失败返回NULL
3、连接数据库
MYSQL * STDCALL mysql_real_connect (MYSQL *mysql , const char *host , const char *user , const char *passwd , const char *db , unsigned int port , const char *unix_socket , unsigned long clientflag);
参数:
MYSQL *mysql //初始化好的句柄地址
const char *host //主机IP 本地: localhost
const char *user //用户名
const char *passwd //密码
const char *db //库名
unsigned int port // 0
const char *unix_socket // NULL
unsigned long clientflag // 0
返回值: 成功返回句柄地址, 失败返回NULL
4、发送sql语句
int STDCALL mysql_query(MYSQL *mysql, const char *q);
参数:
mysql : 句柄地址
q: sql语句
返回值:成功返回 0, 失败返回 -1
5、关闭数据库
void STDCALL mysql_close(MYSQL *sock);