17年MySQL笔记

1.创建数据库:create database 数据库名;
2.删除数据库:drop database 数据库名;
3.切换到指定的数据库:use 数据库名;
4.在切换到指定数据库后创建数据表:create table 数据表名(r1 int not null);
5.如何在Navicat中用命令行去创建表:查询-新建查询-查询编辑器-输入create table 数据表名(..)-运行

        
1
<span data-wiz-span="data-wiz-span" style="font-family: 楷体;">create table users(
2
    user_qq varchar(20) not null PRIMARY KEY,
3
    user_name varchar(50) not null,
4
    user_sex char(2) not null,
5
    user_birthday date not null,
6
)</span>
6.记住点住表后右键点设计表的方式去查看表的设计格式。
7.上面创建了users表,下面创建一个scores表,这个表收到users表的外键约束了

        
1
<span data-wiz-span="data-wiz-span" style="font-family: 楷体;">create table scores(
2
user_qq varchar(20) not null 
3
references users(user_qq),  //外键约束:创建scores表,表中的user_qq这一列必须在users表中的user_qq这一列中有记录
4
gameno int not null,
5
score int not null
6
)</span>
8.查看数据表:desc/describe 数据表名;
9.修改数据表名:alter table 表原来的名字 to 表现在的名字;

1、安装mysql 
   ubuntu下安装mysql是比较简单的,直接通过apt-get安装

系统环境Ubuntu 12.04

  1. sudo apt-get install mysql-server-5.5  
2、登入mysql
  1. mysql [-h host_name] [-u user_name] [-p password]
   其中参数-h后面要给出连接的数据库的IP地址或者域名、参数-u后面要给出登录的用户名、参数-p表示登录的密码。
   有时连接本机默认的Mysql数据库服务器,则可以直接在命令行中输入如下简写形式(root用户):
  1. mysql -u root -p
   之后,系统会提示你输入root用户的密码
   
3、mysql的基本命令
   在mysql中,输入help或者?命令,即可用查看mysql支持的内部操作命令。
   (1)显示数据库列表
      显示数据库列表命令比较简单,直接输入show databases;即可。
      
   (2)选择一个数据库
      选择一个数据库比较简单,使用use dbname,其中dbname为要选择的数据库名字。比如,这里我们选择test数据库:
      
   (3)查看一个数据库中的所有表
      通过show tables,可以查看一个数据库中所有的数据库表。

      查看Mysql表结构的命令,如下:

      show columns from 表名;
      describe 表名;
      desc 表名;
      show create table 表名;(查看create脚本)
   (4)退出
      简单的命令,quit;
   需要注意的是,每个命令后面需要加上分号“;”,因为分号表示一个事务的结束。

    (5) mysqldump工具备份和恢复

 

         几个常用用例:
         1.导出整个数据库
          mysqldump -u 用户名 -p 数据库名 > 导出的文件名    
          mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql
         2.导出一个表
          mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
          mysqldump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sql
         3.导出一个数据库结构
           mysqldump -u wcnc -p -d --add-drop-table smgp_apps_wcnc >/home/dk/wcnc_db.sql
          -d 没有数据 --add-drop-table 在每个create语句之前增加一个drop table 
         4.导入数据库
           常用source 命令
           进入mysql数据库控制台,
           如mysql -u root -p 
  
           mysql>use 数据库
           然后使用source命令,后面参数为脚本文件(如这里用到的.sql)
           mysql>source  /home/wcnc_db.sql

 

4、mysql数据库操作实例。
   (1)创建班级数据库
      创建数据库的命令式create databases dbname,其中dbname为数据库名,例如当前要创建的数据库名为class,因此需要输入下面的命令:

  1.    mysq->create database class;
      
   (2)创建学生信息表
  1.    mysql>use class;
  2.    mysql>create table student (nid INT UNIQUE,name VARCHAR(20),age int);

 

      
   (3)插入基本数据
      向已经创建好的数据表中插入3条基本记录,SQL语句如下:
  1.    mysql->insert into student values(100, 'Lee', 16);
  2.    mysql->insert into student values(101, 'Tom', 17);
  3.    mysql->insert into student values(102, 'Harry', 15);
    (4)查询全部数据
      利用select语句查询全部记录。
  1.    mysql->select * from student;
        
   (5)删除其中一条记录
      这里我们假设Tom同学转学了,那么他已经不在我们的班级class里面了,所以需要把他从class删除。
      mysql->delete from student where name = 'Tom';
   (6)更新其中一条记录
      班级class中还存在一种情况,就是有学生要改名了,比如Lee要改名为Tony了。具体的sql语句如下:
      mysql->update student set name = 'Tony' where name = 'Lee';
   (7)删除数据库
      如果学生毕业,那么我们这个班级就没有存在的必要了,这是就可以删除掉这个数据库class了。
      删除的步骤如下:
      a、删除所有的数据表,SQL语句为:
      mysql->drop table class;
      b、删除数据库,SQL语句为:
      mysql->delete database class;
5、Mysql数据库连接之C语言API
   首先要安装一个包libmysql++-dev包,不然编译代码的时候会出现“ mysql/mysql.h: No such file or directory ”错误
   sudo apt-get install libmysql++-dev
         示例代码:

          
1
#include<mysql/mysql.h>
2
#include<stdio.h>
3
int main()
4
{
5
     MYSQL mysql;
6
     MYSQL_RES *res;
7
     MYSQL_ROW row;
8
     char *query = "select * from dbtablename;";
9
     int t,r;
10
     mysql_init(&mysql);
11
     if(!mysql_real_connect(&mysql,"localhost","dbusername",
12
                     "dbpassword","dbname",0,NULL,0))
13
     {
14
         printf("Error connecting to database:%s\n",mysql_error(&mysql));
15
     }
16
     else
17
         printf("Connected........");
18
 
19
     else
20
         printf("Connected........");
21
     t=mysql_query(&mysql,query);
22
     if(t)
23
     {
24
         printf("Error making query:%s\n",mysql_error(&mysql));
25
     }
26
     else
27
     {
28
         printf("Query made ....\n");
29
         res = mysql_use_result(&mysql);
30
         if(res)
31
         {
32
             for(r=0;r<=mysql_field_count(&mysql);r++)
33
             {
34
                 row = mysql_fetch_row(res);
35
                 if(row<0) break;
36
                 for(t=0;t<mysql_num_fields(res);t++)
37
                     printf("%s ",row[t]);
38
                 printf("\n");
39
             }
40
         }
41
         mysql_free_result(res);
42
     }
43
     mysql_close(&mysql);
44
     return 0;
45
 }

   编译之~注意一定要先安装libmysql++-dev包。编译指令:gcc c_mysql.c -lmysqlclient -o c_mysql

  运行./c_mysql


1.MySQL基本数据类型之char和varchar
char[length]length字节定长字段,当length为5时,如果实际字符串长度只有3,则系统会将后2两位补空格
varchar[length]string长度+1字节变长字段当length为5时,如果实际字符串长度只有3,则只分配3个字节。

2.检测 登录用户名和密码是否正确接口:
1
int testUser(const char *userName, const char *userPWD){
2
    MYSQL conn;
3
    MYSQL_RES *res_ptr;
4
    char table_name[SIZE] = TABLE_NAME;
5
    char command[SIZE] = "";
6
7
    mysql_init(&conn);//初始化一个连接句柄
8
    if(!mysql_real_connect(&conn, HOST, DT_USR, DT_PASSWD, DT_NAME,0,NULL, 0))
9
    //建立物理连接(HOST为"localhost",DT_USR为"root",DT_PASSWD为数据库密码,DT_NAME为具体链接的是哪个数据库名称)
10
    {
11
        printf("mysql_real_connect error\n");
12
        mysql_close(&conn);
13
        return -3;
14
    }
15
16
    //test usrname
17
    sprintf(command,"select * from %s where name='%s'", table_name, userName);
18
    int res = mysql_query(&conn,command);//mysql_query执行由“Null终结的字符串”查询指向的SQL查询。
19
    if(res)//如果查询成功,返回0。如果出现错误,返回非0值。
20
    {
21
        printf("mysql_query error\n");
22
        mysql_close(&conn);
23
        return -3;
24
    }
25
26
    res_ptr = mysql_store_result(&conn);
27
    if(!mysql_num_rows(res_ptr)){//一旦调用了mysql_store_result()并获得了不是Null指针的结果,可调用mysql_num_rows()来找出结果集中的行数。
28
        printf("user not found\n");
29
        mysql_close(&conn);
30
        return -2;
31
    }
32
    // test passwd
33
    else{
34
        sprintf(command,"select passwd from %s where name='%s'", table_name, userName);
35
        res = mysql_query(&conn, command);
36
        if(res)
37
        {
38
            printf("mysql_query error\n");
39
            mysql_close(&conn);
40
            return -3;
41
        }
42
        res_ptr = mysql_store_result(&conn);
43
44
            MYSQL_ROW sqlrow;
45
            sqlrow = mysql_fetch_row(res_ptr);//此函数作用是检索结果集的下一行。在mysql_store_result()之后使用时,如果没有要检索的行,mysql_fetch_row()返回NULL。
46
            if(strcmp(userPWD, sqlrow[0])){//字符串1和2相等时,strcmp返回值是0
47
                mysql_close(&conn);
48
                return -1;
49
            }
50
        }
51
    mysql_free_result(res_ptr);//一旦完成了对结果集的操作,必须调用mysql_free_result()
52
    mysql_close(&conn);//断开数据库的链接
53
    return 0;//登录名和密码正确时返回0
54
}
55


































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值