目录
数据库的安装
检测数据库是否安装
登进数据库
创建用户
操作数据库
用户操作
类型:
备份数据库
连接数据库
数据库的安装
sudo apt-get install mysql-server
sudo apt-get install mysql-client
sudo apt-get install libmysqlclient-dev
检测数据库是否安装
sudo netstat -tap|grep mysql
登进数据库
mysql -hlocalhost -uroot -p
创建用户
create user 'tang'@'localhost' identified by '' ;
grant all on *.* to ;tang'@'localhost'
\q ; //退出
mysql -utang -p
操作数据库
show databases ; //查看所有数据库
use stu ; //使用stu 数据库
drop database stu ; //删除stu 数据库
create database stu ; //创建stu 数据库
use stu ; create table mystu ;
alter table mystu add id int primary key auto_increment ; //为mystu表添加主键id
alter table mystu auto_increment = 1000 ; //自定义主键从1000递增
alter table mystu add age int ;
alter table mystu modify age tinyint unsigned zerofill default 0 ;
alter table grade add foreign key(stuid) references mystu(id) ; //为grade表添加一个名为 fk 的外键,关联于 mystu 表中的 id 。
alter table grade drop foreign key fk ; //删除外键
创建表格设置外键:constraint 外键别名 foreign key(字段名) reference 参照表(字段名)
删除外键:alter table 表名 drop foreign key 外键别名
字段操作:
1,添加字段
alter table 表名 add 字段的定义 //默认放在最后
alter table 表名 add 字段的定义 first //放在最前
alter table 表名 add 字段的定义 after 字段名 //指定字段后面
显示字段详细信息 desc 表名删除表格 drop table 表名
用户操作
- 1,添加用户
create user '用户名'@'localhost' identified by '密码'
- 2,授权
grant all on *.* to '用户名'@'localhost'
- 3,查看用户
select host,user from mysql.user;
create table grade(
-> id int ,
-> chinese double ,
-> math double ,
-> english double ,
-> constraint fk foreign key(id) references mystu(id))charset utf8;
类型:
tinyint 1:默认是有符号类型
smallint 2
mediumint 3
int 4
bigint 8
unsigned : 设置无符号类型
zerofill : 零填充,默认就是无符号类型
not null : 不能为空
default : 设置默认值
2)浮点类型
float: 4
double : 8
decimal(m,d)
3)字符串
char(32): 定长字符串
varchar(32): 变长字符串
text : 文本,不允许设置默认值
year :年份(以整型表示)
date:日期('yy-mm-dd')
time :时间('hh:mm:ss')
datetime:日期时间('yy-mm-dd hh:mm:ss')
备份数据库
备份:
1,表级备份(系统命令终端操作)
- mysqldump -uroot -p 库名 表1 表2 > 路径 //备份指定表格
- mysqldump -uroot -p 库名 > 路径 //备份库下的所有表格
2,库级备份
- mysqldump -uroot -p 库1 库2 -B >路径 //备份指定库
- mysqldump -uroot -p --all-databases >路径 //备份所有库
mysqldump -utang -p stu student score > ./table.sql ; //备份stu数据库下的student 和 score 表到当前目录下的 //table.sql文件中。
mysqldump -utang -p stu > ./tables.sql //备份stu库中的所有表
mysqldump -utang -p stu test -B > ./database.sql //备份stu和test数据库
- use 库名;
- source 路径;
2,库级恢复
- source 路径
use stu ;
source ./table.sql ; //执行当前目录下的table.sql的 sql 语句
连接数据库
int main()
{
MYSQL mysql ; //定义数据库句柄
if(NULL == mysql_init(&mysql)) //初始化句柄
{
printf("init failed!\n") ;
}
if(NULL == mysql_real_connect(&mysql, "localhost","tang","123","stu",0,NULL,0)) //连接数据库
{
printf("%s\n",mysql_error(&mysql)) ;
return -1 ;
}
printf("connecct successfully!\n") ;mysql_set_character_set(&mysql , "utf8") ; //设置字符集为 utf8
char name [32] = "zhangsan" ;
char sql[1024] ;
sprintf(sql , "insert into student (name,class) values('%s' , '2') " ,name) ; // 为sql 用sprintf() 赋值
if(0 != mysql_query(&mysql , sql)) //执行sql 语句
{
printf("%s", mysql_error(&mysql) ;
return -1;
}
MYSQL_RES *result ;
MYSQL_ROW row = NULL ;
MYSQL_FIELD *field = NULL ;
result = mysql_store_result(&mysql) ;
int num_field = 0;
int num_row = 0;
num_row = mysql_num_rows(result) ; //获取返回的数据行数
num_field = mysql_num_fields(result) ; //获取每行的字段数
for(int i=0 ;i<num_field;++i)
{
field = mysql_fetch_field(result) ; //获取每个字段
printf("%s , ",field->name) ; //打印字段名
}
putchar(10) ;
for(int i=0 ;i<num_row;++i)
{
row = mysql_fetch_row(result) ; //获取每行数据
for(int i=0;i<num_field;++i)
{
printf("%s , ",row[i] ); //打印每行数据
}
printf("\n") ;
}mysql_close(&mysql) ; //关闭数据库
return 0 ;
}
shangqian@sq-v-m:~$ gcc mysql.c -lmysqlclient
shangqian@sq-v-m:~$ ./a.outconnecct successfully!
sno , sname , sbirth , ssex , class ,
101 , 曾华 , 1988-12-12 , 男 , 11033 ,
102 , 匡明 , 1987-06-05 , 男 , 11031 ,
103 , 王丽 , 1987-12-01 , 女 , 11033 ,
104 , 李军 , 1986-02-23 , 男 , 11033 ,
105 , 王芳 , 1988-04-01 , 女 , 11031 ,
106 , 陆君 , 1988-07-03 , 男 , 11031 ,