SQLServer修改表数据,mysql基础教程

2019-10-19 08:27 来源:未知

利用SSMS数据库管理工具修改数据

1.1基本概念:

修改任性一条恐怕多条都能够

1:打开数据库,选拔数据表,右键点击-》编辑全部行(如未配备,点击编辑前200行)。

图片 1

2、编辑须求修改的数据-》编辑达成后,右键点击空白处-》选取施行SQL就可以编辑成功。

图片 2

Mysql是一种关系型数据库,将数据寄存在分歧的报表中,表格中的要素有:

使用T-SQL脚本修改数据

?列:表中的一个字段,贰个列富含了一致数据类型的多寡。

修改单表中一行单列也许多列数据

语法:update 表名 set 列名1=值,列名2=值 where 条件;

示例一:update test1  set age='21' where id='1';

演示结果:

图片 3

?行:表中的数量是按行存款和储蓄的,行是表中的一个记录。要是将表想象为网格,网格中垂直的列为表列,水平表现表行。

修改单表中多行一列或多列数据

语法:update top(数量) 表名 set 列名1=值,列名2=值2 where 条件;

示例:

update test1 set age='23' where id in ('1','2');

update test1 set age='22' where id between '3' and '4';

update test1 set age='23' where id>='5' and id <='6';

update top(2) test1 set age='23' where id>='5';

update test1 set age='23' where test1.id in (select top(2) id from test1 order by id desc);

亲自去做结果:

图片 4

图片 5

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

多表关联修改表中数量

语法:update 表1 set 表1.列1=值,表1.列2=值 from 表1 as a,表2 as b where a.列名=b.列名;

示例:update test1 set test1.name='李华',test1.sex='女' from test1 as a,test2 as b where a.classid=b.id;

演示结果:

 图片 6

图片 7

1.2mysql语句典型:

小结:修改数据表数据,灵活组合修改数据列,数据源,查询条件是重要。

 

1)Sql语句必得以;截止;

2)保留重要字不区分轻重缓急写;

3)可随机参预空白和换行符;

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

1.3 mysql的命令行操作命令:

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

mysql数据库,当登入当前主机时可粗略;-u钦定顾客名,暗许为root;-p为设置时设定的密码,如若为空能够省略。

示例:

报到本机mysql数据库:【mysql -u root -p】

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

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

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

示例:

创建叁个名叫test的数据库:【create database test;】

删去贰个名称叫test的数据库:【drop database test;】

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

?查询数据库:【show databases;】在通过该命令查询时意识在除本身创制的数据库之外,还应该有多个暗许的库,查找有关材质后对其张开了认知,分别是:information_schema库,该库保存着有关MySQL服务器所保险的保有别的数据库的新闻,如数据库名,数据库的表等;mysql库,mysql的核心数据库,存款和储蓄了数据库的客户、权限设置、关键字等mysql本人需求动用的调控和管理音信;performance_schema库,该库重要用于收集数据库服务器品质参数。

?查询数据表:【show tables】,注意查询数据表应该在选择好了数据库之后实行,要是是在步向mysql后未选择特定数据库使用此命令,则不算。

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

4)接纳数据库:有三种方法,分别为:1.登入时直接钦赐:【mysql -D 所选用的数据库名 -h 主机名 -u 客商名 -p】2.登陆后选拔操作的数据库:【use 数据库名】

示例:

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

登录后:【use testdb】

补充,另一种登入时的抉择,更简约:【mysql -u root -p11111 testdb】

5)创立/删除数据表:

?创制数据表:【create table 表名 (列证明)】列的扬言钦赐了各列的性质,日常包罗以下几点要素:

1.表名;

2.表中的各列名;

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

4.是否为主键;

5.是否可感到NULL;

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

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

tinyint 1 -128~127 0~255

smallint 2 -32768~32767 0~65535

mediumint 3 -8388608~8388607 0~16777215

int 4 -2147483648~2147483647 0~4294967295

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

浮点型:

类型 字节 含义 用途

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

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

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

日期和时间项目:

类型 字节 格式 示例

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

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

YEAR 1 YYYY 2017

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

TIMESTAMP 4 YYYYMMDD HHMMSS 20170722 154730

字符串类型:

类型 字节 含义

CHA奥迪Q5 0-255;char(m)代表存款和储蓄字符长度为m,缺乏则补空格,超过则截取m个 定长字符串

VARCHARubicon 0-65535 变长字符串

TINYBLOB 0-255 短二进制字符串

BLOB 0-65535 二进制方式的文书数据

MEDIUMBLOB 0-16777215 二进制方式的中级文本数据

LONGBLOM 0-4294967295 二进制格局的长文本数据

TINYTEXT 0-255 短文本字符串

TEXT 0-65535 文本字符串

MEDIUMTEXT 0-16777215 中等本文字符串

LONGTEXT 0-4294967295 长文本字符串

示例:

【create table testworkers

(

id int unsigned not null auto_increment primary key,

name char(8) not null,

sex char(6) not null,

age tinyint unsigned not null

);】

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

示例:

删除testworkers表:【drop table testworkers;】

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

?插入数据:【insert into 表名 [(列名1,列名2......列名n)] values [(值1,值2......值n)]】。有以下几点须求留意:

1.into方可省略;

2.字符串需求运用’ ’恐怕” ”;

3.列名能够省略,不过此时必得依据各列的概念顺序来插入数据;

4.能够只插入部分列的数据,别的未有出现的列将被赋予暗许值;

5.能够经过一条语句壹回性插入多行数据,格式为【insert into 表名values (值1,值

2,值3),(另八个列1的值,另贰个列2的值,另三个列3的值); 】;

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

6.auto_increment标识的字段能够绝不赋具体值,系统为机关依据前一条目款项标值实行自增。

示例:

简易列名的插入:【insert into testworkers values (一千1,"axx","male",35);】

局地列的插入:【insert testworkers (name,sex,age) values (bxx,"female",27);】

三回性插入多列:

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

三回性插入多列,同一时间只对有的列赋值:

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

利用set子句插入,同有的时候间只对部分列赋值:【insert into testworkers set name='exx',age='50';】

?查询数据:

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

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

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

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

5.只询问分裂的值:【select distinct 列名 from 表名;】注意distinct成效于其后全体的列,不是单列,当功能于如下多列时【select distinct 列名1,列名2 from 表名】,列1和列2同期比较,唯有当两行的列1和列2都一样期才不会列出,有八个同一则会列出。

6.询问单个并列排在一条线序:使用order by 子句:【select 列名 from 表名 order by 列名;】注意这里的三个列名并不一定供给平等,且order子句一定在命令的最末尾。

7.询问五个列并列排在一条线序:【select 列名1,列名2......列名n from 表名 order by 列名x 列名y;】要静心的是:排序按语句的相继进行,当列x的有所数据分化时,列名y排序无效;当列x的多稀少重新时,则遵照列y的一一进行排序。

8.询问多少个列并按列的职位排序:【select 列名1,列名2......列名n from 表名 order by x y;】注意这种方法只适用于排序的列在select的列之中,且列的岗位不是指完全部据表中该列的职责号,而是指select语句后的地点号。

9.查询并降序排序:当仅用order by子句时,数据的排序以升序进行,假诺供给多少按降序排序来输出,则下令格式为【select 列名1,列名2......列名n from 表名 order by 列名x desc;】

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

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

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

and or in not

and和or分别代表逻辑上的与和或,然而要专心and的优先级高于or,在重新整合使用时要注意搭配顺序。in操作符用于钦定贰个限制,in操作符后跟由逗号分隔的法定值,那些值必须括在圆括号中。not操作符表示否认其后所跟的尺度,其并未有单独使用。

操作符优先级示范:

有那样一条命令须求:查询testworkers表的职工工号<一千3依然工号>一千4的还要年纪>30的职员和工人的姓名。倘诺依据下边命令1的格局来写:

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

则该命令中尽管or写在眼下,但是实际上奉行中and的优先级越来越高,会先实行and操作符,由此该命令的情趣实际上是:查询testworkers表的工号>一千4且年纪>30的职员和工人工号以至工号<一千3的职员和工人工号。

赶尽杀绝办法是使用()来将操作符进行精通的分组,如下:

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

12.通配符查询:通配符是用来合营一部分数目标特殊字符,平常代表着某种特殊格局,通过LIKE操作符搭配通配符能够查询某一类特定方式的数目,常用的通配符有:

通配符 含义

% 任何字符出现率性次数

_ 任何字符现身二回

[] 钦命三个字符集

在乎:上述各类查询命令的方式只是每一种情势的最基本气象,在事实上行使中会出现多样形式一同使用的情景,要专心结合使用。

示例:

询问testworkers表的全体内容:【select * from testworkers;】

查询testworkers表的百分之百工号:【select id from testworkers;】

询问testworkers表的万事工号和人名:【select id,name from testworkers;】

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

查询testworkers表的享有差异年龄:【select distinct name from testworkers;】

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

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

查询testworkers表的职工工号、姓名和年龄,并按年龄进行排序,当岁数同样期则依据工号实行排序:【select id,name,age from testworkers order by age,id;】

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

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

询问testworkers表的持有年龄小于40的职工工号和姓名并按岁数升序举行排序:【select id ,name from testworkers where age<40 order by age;】

询问testworkers表的工号在10002和10004以内的职工工号:【select id from testworkers where id between 10002 and 10004;】(输出一千2、10003、一千4,可以知道mysql对between语句的管理是一个满含两端的闭区间)

查询testworkers表的有所工号小于10005的男子职员和工人的工号和人名,并根据他们的年龄实行降序排序:【select id,name from testworkers where id<一千5 and sex='male' order by age desc;】

询问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表的兼具名字以cx最初的职工的工号:【select id from testworkers where name like 'cx%';】

?更新数据:

立异全部行的某一单列:【update 表名 set 列名=新值;】

履新全部行的多列:【update 表名 set 列名1=新值1,列名2=新值2......列名n=新值n;】

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

更新特定行的多列:【update 表名 set 列名1=新值1,列名2=新值2......列名n=新值n where 更新规范;】

示例:

将testworkers表的兼具职员和工人的性别改为male:【update testworkers set sex="male";】

将testworkers表的具备职员和工人的年华改为0:【update testworkers set age=0;】

将testworkers表的有着工号小于等于一千4的职员和工人的年纪改为30:【update testworkers set age=30 where id<=一千4;】

将testworkers表的全部姓名在axx-cxx之间的职工的岁数改为35且性别改为female:【update testworkers set age=35,sex='female' where name between 'axx' and 'cxx';】

?删除数据:

剔除所有行:【delete from 表名;】,日常当想要清空表时不会选用上述命令,而是采纳【turncate table 表名;】该命令比选取delete清空时越来越快。

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

示例:

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

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

7)数据表的退换操作:

在意:上述6)的内容是对数据内容的操作,数据表自个儿格式不改变,此部分的授命是对数据表格式的转移,和5)是同类型的操作。

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

增加列:【alter table 表名 add 列名 列申明 after 插入地点;】after能够差相当的少,当省略时表示在表的末尾增添列

修改列:【alter table 表名 change 列名称 列新名称 新注脚;】

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

示例:

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

在testworkers表的最后增加一列work_age:【alter table testworkers add work_age tinyint unsigned;】

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

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

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

1.4 mysql脚本的使用:

sql脚本是带有一到多个sql命令的sql语句,大家能够将这个sql脚本放在二个文本文件中(称之为“sql脚本文件”),然后通过相关的吩咐履行这些sql脚本文件,轻巧的领会sql便是sql语句的批管理文件。

示例:

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

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

create database test2;

use test2;

create table test

(

          id int unsigned not null  primary key,

          name char(8) not null,

          sex char(4) not null

);

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

4.询问核准:步向mysql后show databases发掘test2库已经创办,选择test2库后再show tables命令可知test表也早已创办。

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

Mysql针对种种语言提供了编制程序接口以供在代码中落到实处对mysql数据库的拜望与操作,个中针对c有c api,针对c++有Connector C++接口,当中c api的行使广为人知,由此主要学习了如何接纳c api在代码中对数据库举办操作。

参照他事他说加以考察链接:

Mysql的c api提供了比非常多效果的协会和函数,在那之中比较常用的有:

MYSQL结构,实行mysql操作的底子结构;

MYSQL_RES:结果集;

MYSQL_FIELD:列信息;

MYSQL_ROW:行信息;

mysql_real_connect( ):mysql数据库的总是;

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

mysql_query():实行sql语句的函数,创立库、创制表、添扩充少、查询数据都可用此函数完毕;

mysql_real_query():包罗二进制数据的操作必须用这一个,别的real的速度更加快;

mysql_store_result():查询结果的蕴藏;

mysql_num_田野同志s():再次来到结果集的列的个数;

mysql_fetch_田野先生():重临八个表列的信息;

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

为了能到家精通代码中经过api对数据库调整的为主使用,我透过在linux遭逢下编写制定测验代码,并编写翻译运行,通过对打字与印刷音信检查命令的运作境况,最后编写翻译运营并透过测量检验,达成对此部分剧情的就学。

现实编写调节和测量检验和认证步骤如下,测量试验代码另附:

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

2.代码编写翻译:g++ test.cpp -o test -lmysqlclient,这里要留心对mysql的操作需求编写翻译情状正视,需增多-lmysqlclient链接mysql库编写翻译才可由此。

3.代码实施:./test,试行编写翻译链接后的可实施文件。

4.结实检查测量检验:

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

2)创设了数据库之后,代码首先创制一个test3表并插入了三行音讯,通过输出消息可以知道此部分实现。

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

4)将10043号职员和工人的消息从表中删除。

TAG标签:
版权声明:本文由金沙澳门唯一官网发布于数据库管理,转载请注明出处:SQLServer修改表数据,mysql基础教程