mysql基础教程88bf必发娱乐

                     YEAR                           年份

create database test2;

                     MEDIUMINT            

    删除testworkers表的全部内容:【truncate table testworkers;】

或者                                                                    
                                 insert 列名 set 列名一 = 数据一,列名二
= 数据二,……

查询testworkers表的年龄并按年龄进行升序排序:【select age from
testworkers order by age;】

在已有的数据库中可选择一个无用的数据库删除,命令为   drop database
数据库名;   也可在数据库名前添加 if exists,表示删除已存在的数据库。

将testworkers表的所有员工的年龄改为0:【update testworkers set age=0;】

数据表创建完成后可以向数据表中添加新的列,命令格式为               alter
table 表名 add column 新列名 数据格式;   

mysql数据库,当登录当前主机时可省略;-u指定用户名,默认为root;-p为安装时设定的密码,如果为空可以省略。

在MySQL中,创建数据库的命令为   create database  数据库名;   
其中可在数据库名前添加  if not exists,表示不重复创建同名数据库。

sql脚本是包含一到多个sql命令的sql语句,我们可以将这些sql脚本放在一个文本文件中(称之为“sql脚本文件”),然后通过相关的命令执行这个sql脚本文件,简单的理解sql即是sql语句的批处理文件。

                     FLOAT                        
使用时应该在其后加(a,b)表示整数和小数的位数

and or in not

1.select 要查找的列名 from 表名 where 条件;             
要查找的列名处可输入*代表所有列

有这样一条命令需求:查询testworkers表的员工工号<10003或者工号>10004的同时年龄>30的员工的姓名。如果按照下面命令1的方式来写:

                     DATETIME                   年-月-日 时-分-秒

7.查询多个列并排序:【select 列名1,列名2……列名n from 表名 order by
列名x
列名y;】要注意的是:排序按语句的顺序进行,当列x的所有数据不同时,列名y排序无效;当列x的数据有重复时,则按照列y的顺序进行排序。

1.求平均数:select avg(列名 from 表名;                      也可在avg(
  )后加as
你希望看到的平均数列名,使表格显示出来的是as后面的字符而不是avg(  
),下同

一次性插入多列,同时只对部分列赋值:

                     SMALLINT            

          id int unsigned not null  primary key,

SELECT的应用

浮点型:

1.数字类型:TINYINT                     
默认带符号,若不带符号则在其后加上 UNSIGNED 表示  不包含负数   (下同)

删除所有行:【delete from
表名;】,一般当想要清空表时不会使用上述命令,而是使用【turncate table
表名;】该命令比使用delete清空时更快。

                     TIMESTAMP                两时间之间间隔的秒

参考链接:https://dev.mysql.com/doc/index-connectors.html

   select 要查找的列名 from 表名 where 列名 like a%;    
查找形式为a%的数据,%代表多个未指定字符,不计个数

mysql_fetch_row():从结果集中获取下一行数据;

                     DOUBLE                      同上

查询testworkers表的全部工号:【select id from testworkers;】

查询数据库的编码方式可用   show create database 数据库名;   
若要查询数据库中的表,则可用    show tables in 数据库名。

1.4 mysql脚本的使用:

发现数据不符合数据类型时,可以更改数据类型,命令格式为            alter
table 表名 modify column 列名 新数据格式;

具体编写调试和验证步骤如下,测试代码另附:

                     TINYTEXT                     短文本字符串

11.组合条件查询:使用where子句搭配逻辑操作符,逻辑操作符主要有

二.查找

删除一个名为test的数据库:【drop database test;】

                     TINYBLOB                   
不超过255个字符的二进制字符

类型 字节 格式 示例

3.查询数据库

2)创建了数据库之后,代码首先创建一个test3表并插入了三行信息,通过输出信息可见此部分实现。

当发现表中数据需要更新时,可以用更新数据的命令,命令格式为    update
表名 set 列名 = 新数据 where 条件;

创建一个名为test的数据库:【create database test;】

                     MEDIUMBLOB              二进制中等文本数据

操作符优先级演示:

                     BIGINT

int 4 -2147483648~2147483647 0~4294967295

3.select 要查找的列名 from 表名 where 列名>值1 and 列名 <值2;    
 
查找值1与值2之间的数据,如果需要查找等于值1,值2的数据就在<,>后加= 

MEDIUMTEXT 0-16777215 中等本文字符串


类型 字节 含义

3.文本类型:CHAR                           定长字符

age tinyint unsigned not null

一.函数应用

示例:

2.select 要查找的列名 from 表名 where 列名<值1 or 列名 >值2;    
     查找列中小于值1或者大于值2的所有数据

mysql_real_query():包含二进制数据的操作必须用这个,此外real的速度更快;

                     BLOB                             二进制长文本数据

2.表中的各列名;

 

表名修改:【rename 旧表名 to 新表名】

                     TEXT                             长文本数据

示例:

2.求和:       select sum(列名) from 表名;

mysql_fetch_field():返回一个表列的信息;

1.创建数据库

?删除数据表:【drop table 表名;】

                     TIME                            时:分:秒

BLOB 0-65535 二进制形式的文本数据

4.求最小值    select min(列名) from 表名;

示例:

2.删除数据库

登录本机mysql数据库直接加密码:【mysql -u root -p11111】

如果需要向数据表中插入一条新的数据时,可用命令                         
insert 表名(列名1,列名2……) values(数据一,数据二……);          
  (必须一一对应)

(

                     INT或INGEEGER      

示例:

创建数据库后可对数据库进行操作,创建数据表:首先输入命令   use
数据库名;   然后输入命令    create table 数据表明(数据名1
数据格式,数据名2 数据格式……);

Mysql的c api提供了众多功能的结构和函数,其中比较常用的有:

MySQL安装完成以后,基本操作有:1.创建数据库   2.删除数据库   
3.修改数据库

查询testworkers表的全部工号和姓名:【select id,name from testworkers;】

若有多条数据需要更新时,可以利用when then 达到,命令格式为     update
表名 set 列名 = case when 条件 then 新数据 when 条件 then 新数据 ……
end;

示例:

数据格式大致分为三种类型:1.数字类型 2.时间类型 3.文本类型

?行:表中的数据是按行存储的,行是表中的一个记录。如果将表想象为网格,网格中垂直的列为表列,水平行为表行。

4.select 要查找的列名 from 表名 where 列名 like a_;        
查找形式为a_ 的数据,_代表一个未指定字符

使用set子句插入,同时只对部分列赋值:【insert into testworkers set
name=’exx’,age=’50’;】

当发现数据表中多余的数据时,可以删除多余的数据,命令格式为    delete
from 表名 where 条件;

为了能全面理解代码中通过api对数据库控制的基本应用,我通过在linux环境下编写测试代码,并编译运行,通过对打印信息检查命令的运行状态,最终编译运行并通过测试,完成对此部分内容的学习。

                     LONGTEXT                  极大文本数据

更新特定行的多列:【update 表名 set
列名1=新值1,列名2=新值2……列名n=新值n where 更新条件;】

2.时间类型:DATE                           年-月-日

VARCHAR 0-65535 变长字符串

                     MEDIUMTEXT              中等文本数据

将testworkers表的所有工号小于等于10004的员工的年龄改为30:【update
testworkers set age=30 where id<=10004;】

   select 要查找的列名 from 表名 where 列名between 值1 and 值2;    
查找值1与值2之间的数据

sex char(6) not null,

3.求最大值    select max(列名) from 表名;

查询testworkers表的所有名字以cx开头的员工的工号:【select id from
testworkers where name like ‘cx%’;】

所有数据中都可以设置空与非空 即 null 与 not
null,若数据可以为空则可以在数据类型后加上null,也可不加;若不能为空,则必须加not
null;

name char(8) not null,

                     VARCHAR                    变长字符

将testworkers名称修改为test:【rename table testworkers to test;】

                     LONGBLOB                  二进制极大文本数据

登录本机mysql数据库:【mysql -u root -p】

2,值3),(另一个列1的值,另一个列2的值,另一个列3的值); 】;

?删除数据:

1.into可以省略;

MYSQL_RES:结果集;

查询testworkers表的员工工号和姓名并按他们的年龄降序排序:【select
id,name from testworkers order by age desc;】

通配符 含义

3.代码执行:./test,执行编译链接后的可执行文件。

7)数据表的改动操作:

2)创建/删除数据库:创建:【create database 数据库名;】删除:【drop
database 数据库名】

8.查询多个列并按列的位置排序:【select 列名1,列名2……列名n from 表名
order by x
y;】注意这种方法只适用于排序的列在select的列之中,且列的位置不是指完整数据表中该列的位置号,而是指select语句后的位置号。

1.2mysql语句规范:

则该命令中虽然or写在前面,但是实际执行中and的优先级更高,会先执行and操作符,因此该命令的意思实际上是:查询testworkers表的工号>10004且年龄>30的员工工号以及工号<10003的员工工号。

命令1:【select name from testworkers where id<10003 or id>10004
and age>30;】

整型:(无符号通过unsigned关键字标识)

将testworkers表的所有姓名在axx-cxx之间的员工的年龄改为35且性别改为female:【update
testworkers set age=35,sex=’female’ where name between ‘axx’ and
‘cxx’;】

1)在代码中数据库的连接和创建通过函数的返回值进行验证,在命令行中输出信息。

id int unsigned not null auto_increment primary key,

Mysql针对各种语言提供了编程接口以供在代码中实现对mysql数据库的访问与操作,其中针对c有c
api,针对c++有Connector C++接口,其中c
api的使用广为人知,因此主要学习了如何使用c api在代码中对数据库进行操作。

3)查询数据库/数据表:

1.创建sql脚本:vim test.sql;

省略列名的插入:【insert into testworkers values
(10001,”axx”,”male”,35);】

查询testworkers表的所有工号小于10005的男性员工的工号和姓名,并按照他们的年龄进行降序排序:【select
id,name from testworkers where id<10005 and sex=’male’ order by age
desc;】

4.结果检测:

【create table testworkers

示例:

示例:

2.对sql脚本进行编辑,内容为:

类型 字节 含义 用途

mysql_query():执行sql语句的函数,创建库、创建表、添加数据、查询数据都可用此函数实现;

同上一条命令,用列的位置表达:【select id,name,age from testworkers
order by 3,1;】

?主键:数据库中的标识列,主键具有唯一性且不能为NULL。

= != < <= > >= !< !> between is null

示例:

【insert into testworkers (id,name,sex) values
(10005,’cxx’,’male’),(10006,’dxx’,’male’);】

部分列的插入:【insert testworkers (name,sex,age) values
(bxx,”female”,27);】

?插入数据:【insert into 表名 [(列名1,列名2……列名n)] values
[(值1,值2……值n)]】。有以下几点需要注意:

5.只查询不同的值:【select distinct 列名 from
表名;】注意distinct作用于其后所有的列,不是单列,当作用于如下多列时【select
distinct 列名1,列名2 from
表名】,列1和列2同时比较,只有当两行的列1和列2都相同时才不会列出,有一个相同则会列出。

1.表名;

% 任何字符出现任意次数

?查询表结构:【desc 表名】。

查询testworkers表的员工姓名并按他们的年龄升序排序:【select name from
testworkers order by age;】

类型 字节 范围(有符号) 范围(无符号)

【insert into testworkers values
(10003,’cxx’,’male’,28),(10004,’dxx’,’male’,40);】

5.是否可以为NULL;

mysql_store_result():查询结果的存储;

);

查询testworkers表的员工工号、姓名和年龄,并按年龄进行排序,当年龄相同时则按照工号进行排序:【select
id,name,age from testworkers order by age,id;】

示例:

登录远程主机mysql数据库:【mysql -h 192.168.10.111 -u root -p】

添加列:【alter table 表名 add 列名 列声明 after
插入位置;】after可以省略,当省略时表示在表的末尾添加列

删除特定行:【delete from 表名 where 删除条件;】

TEXT 0-65535 文本字符串

Mysql是一种关系型数据库,将数据存放在不同的表格中,表格中的要素有:

2.查询单个列:【select 列名 from 表名;】

mysql_init():mysql数据库的初始化;

删除testworkers表:【drop table testworkers;】

注意:上述6)的内容是对数据内容的操作,数据表本身格式不变,此部分的命令是对数据表格式的改动,和5)是同类型的操作。

2.字符串需要使用’ ’或者” ”;

?查询数据表:【show
tables】,注意查询数据表应该在选择好了数据库之后进行,如果是在进入mysql后未选择特定数据库使用此命令,则无效。

?查询数据库:【show
databases;】在通过该命令查询时发现在除自己创建的数据库之外,还有三个默认的库,查找相关资料后对其进行了认识,分别是:information_schema库,该库保存着关于MySQL服务器所维护的所有其他数据库的信息,如数据库名,数据库的表等;mysql库,mysql的核心数据库,存储了数据库的用户、权限设置、关键字等mysql自己需要使用的控制和管理信息;performance_schema库,该库主要用于收集数据库服务器性能参数。

);】

查询testworkers表的姓名列的第3行到第4行:【select name from testworkers
limit 2 offset 4;】

3)根据条件将test3表中的10087号员工的性别改为female、年龄改为33。

命令2:【select name from testworkers (where id<10003 or id>10004)
and age>30;】

TINYTEXT 0-255 短文本字符串

LONGTEXT 0-4294967295 长文本字符串

?查询数据:

?列:表中的一个字段,一个列包含了相同数据类型的数据。

补充,另一种登录时的选择,更简单:【mysql -u root -p11111 testdb】

TINYBLOB 0-255 短二进制字符串

4)选择数据库:有两种方式,分别为:1.登录时直接指定:【mysql -D
所选择的数据库名 -h 主机名 -u 用户名 -p】2.登录后选择操作的数据库:【use
数据库名】

DATETIME 8 YYYY-MM-DD HH:MM:SS 2017-07-22 15:47:30

1.3 mysql的命令行操作命令:

          name char(8) not null,

日期和时间类型:

5)创建/删除数据表:

查询testworkers表的所有不同年龄:【select distinct name from
testworkers;】

更新特定行的某一单列:【update 表名 set 列名=新值 where 更新条件;】

MYSQL结构,进行mysql操作的基础结构;

?创建数据表:【create table 表名
(列声明)】列的声明指定了各列的属性,通常包含以下几点要素:

解决方法是使用()来将操作符进行明确的分组,如下:

注意:上述各种查询命令的模式只是每种模式的最基本情况,在实际使用中会出现多种模式一起使用的情况,要注意结合使用。

3)可自由加入空白和换行符;

2)保留关键字不区分大小写;

[] 指定一个字符集

一次性插入多列:

12.通配符查询:通配符是用来匹配一部分数据的特殊字符,通常代表着某种特殊模式,通过LIKE操作符搭配通配符可以查询某一类特定模式的数据,常用的通配符有:

9.查询并降序排序:当仅用order
by子句时,数据的排序以升序进行,如果需要数据按降序排序来输出,则命令格式为【select
列名1,列名2……列名n from 表名 order by 列名x desc;】

删除testworkers表中的department列:【alter table testworkers drop
department;】

1.1基本概念:

6.auto_increment标识的字段可以不用赋具体值,系统为自动根据前一条目的值进行自增。

1)登录mysql:【mysql  -h 主机名 -u 用户名 -p】-h表示要连接到哪一台主机的

bigint 8 +-9.22*10的18次方 0~1.84*10的19次方

查询testworkers表的所有年龄小于40的员工工号和姓名并按年龄升序进行排序:【select
id ,name from testworkers where age<40 order by age;】

1.代码编写:vim test.cpp,编写c++代码文件。

1.5 c/c++程序中通过mysql的c api对mysql进行增删改查的操作:

5.可以通过一条语句一次性插入多行数据,格式为【insert into 表名values
(值1,值

_ 任何字符出现一次

use test2;

4.可以只插入部分列的数据,其余没有出现的列将被赋予默认值;

mediumint 3 -8388608~8388607 0~16777215

查询testworkers表的工号在10002和10004之间的员工工号:【select id from
testworkers where id between 10002 and
10004;】(输出10002、10003、10004,可见mysql对between语句的处理是一个包含两端的闭区间)

YEAR 1 YYYY 2017

5.可以使用set子句来插入数据,格式为【insert into set
列名1=’值1’,列名2=’值2’】;

MYSQL_ROW:行信息;

1.查询表的全部内容:【select * from 表名;】

mysql_real_connect( ):mysql数据库的连接;

在testworkers表的age列之后新增一列department列:【alter table
testworkers add department varchar(100) not null after age;】

6.查询单个并排序:使用order by 子句:【select 列名 from 表名 order by
列名;】注意这里的两个列名并不一定需要相同,且order子句一定在命令的最末尾。

4)将10043号员工的信息从表中删除。

在testworkers表的末尾添加一列work_age:【alter table testworkers add
work_age tinyint unsigned;】

TIMESTAMP 4 YYYYMMDD HHMMSS 20170722 154730

(

10.特定条件查询:使用where子句:【select 列名1,列名2……列名n from
表名 where
条件;】,这里的条件是指由where子句的操作符所定义的条件表达式,where子句的操作符如下,意思如字面所示。

修改列:【alter table 表名 change 列名称 列新名称 新声明;】

登录时:【mysql -D testdb -u root -p】,或者【mysql -D testdb -u root
-p11111】

6)数据的增删改查等操作:

?更新数据:

float 4 float(m,d)最大位数m位,小数点后d位 单精度浮点数

LONGBLOM 0-4294967295 二进制形式的长文本数据

查询testworkers表的所有姓名在为axx、或cxx、或、dxx之间的男性员工的工号和姓名并按照年龄进行降序排序,当年龄相同时按照工号进行降序排序:【select
id,name from testworkers where name in (‘axx’,’cxx’,’dxx’) and not
sex=’female’ order by age desc,id desc;】

查询testworkers表的全部内容:【select * from testworkers;】

4.是否为主键;

MYSQL_FIELD:列信息;

删除列:【alter table 表名 drop 列名称;】

mysql_num_fields():返回结果集的列的个数;

4)注释的使用:单行注释格式为:【–注释】,多行注释格式为【/*注释*/】。

更新所有行的多列:【update 表名 set
列名1=新值1,列名2=新值2……列名n=新值n;】

TIME 3 HH:MM:SS 15:47:30

3.数据类型:mysql中定义了几个大类的数据类型,具体分类见下方:

2.代码编译:g++ test.cpp -o test
-lmysqlclient,这里要注意对mysql的操作需要编译环境依赖,需添加-lmysqlclient链接mysql库编译才可通过。

and和or分别表示逻辑上的与和或,但是要注意and的优先级高于or,在组合使用时要注意搭配顺序。in操作符用于指定一个范围,in操作符后跟由逗号分隔的合法值,这些值必须括在圆括号中。not操作符表示否定其后所跟的条件,其从不单独使用。

字符串类型:

更新所有行的某一单列:【update 表名 set 列名=新值;】

删除testworkers表的所有年龄为0的行:【delete from testworkers where
age=0;】

1)Sql语句必须以;结束;

示例:

登录后:【use testdb】

MEDIUMBLOB 0-16777215 二进制形式的中等文本数据

create table test

smallint 2 -32768~32767 0~65535

4.查询列并限制前n行:【select 列名from 表名 limit
n;】,查询列并限制从m+1行开始的n行:【select 列名from 表名 limit m
offset n;】

将testworkers表的id列修改为work_id,数据类型为smallint:【alter table
testworkers change id work_id smallint unsigned not null;】

示例:

将testworkers表的所有员工的性别改为male:【update testworkers set
sex=”male”;】

DATE 3 YYYY-MM-DD 2017-07-22

          sex char(4) not null

decimal decimal(m,d),若m>d,则为m+2;否则为d+2 适用于高精度 小数

4.查询检验:进入mysql后show
databases发现test2库已经创建,选择test2库后再show
tables命令可见test表也已经创建。

double 8 double(m,d)最大位数m位,小数点后d位 双精度浮点数

tinyint 1 -128~127 0~255

3.查询多个列:【select 列名1,列名2……列名n from 表名;】

CHAR 0-255;char(m)表示存储字符长度为m,不够则补空格,超出则截取m个
定长字符串

3.列名可以省略,但是此时必须按照各列的定义顺序来插入数据;

3.执行sql脚本:mysql -u root -p11111 -e “source /root/test.sql”