Mysql 数据库表如何增删改查


这篇文章将为大家详细讲解有关Mysql 数据库表如何增删改查,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、表操作1、【增加】 create table DBname.table_name(id int, namevarchar(255))engine=MyISAM charset=gbk;2、【删除】删除表drop table table_name;3、【修改】修改表选项alter table table_name engine=myisamcharset=utf8;//修改字符集rename table Old_tablename to new_tablename;//修改表名4、【查询】show tables like ‘%_name’; //查看表show create table table_name //查看建表语句desc table_name //查看表结构 (describe)show variables like ‘character_set%’;//展示以character_set开头变量二、表字段操作1、【增加】增加表字段alter table table_name add column字段定义//增加字段alter table table_name add column heightint after name;//增加一个字height字段在name之后alter table table_name add column snvarchar(10) first;//在最形始增加sn字段、使用关键字first2、【删除】删除字段alter table table_name drop columncolumn_name;alter table table_name drop columnheight;//删除表table_name中height字段3、【修改】修改已有字段(修改字段定义)alter table table_name modify columncolumn_name新的定义;alter table table_name modify column sn intafter name; //修改sn字段修改字段alter table table_name change column原字段名新字段名新字段定义;alter table table_name change column snnew_sn varchar(30) after age;//修改字段4、【查询】查看表和表结构show tables like ‘%_name’; //查看表show create table table_name //查看建表语句desc table_name //查看表结构(describe)三、表数据操作1、【增加】insert into 表名(字段列表) values(与字段相对的值列表);insert into table_name(‘name’,’age’,’height’)values(ssw,22,180);2、【删除】delete from 表名 where 条件;(删除是不可逆的)delete 时、支持order by 和limit来限制删除数据记录delete from table_name where id>2;delete from tb_student order byheight desc limit 3;truncatetb_student;//清空表3、【修改】update 表名 set 字段=新值,字段n=新值n where 条件;(也可用order by 和limit限制)update table_name set name=’php’ where id=3;4、【查询】select[字段表达式列表] from 表名 [where 子句] [group by子句] [having 子句] [order by子句] [limit 子句]select 字段列表 from 表名 [where 条件表达式] (*表示所有字段)select * from table_name where id>6;select name from table_name where id>2;select 加法逻辑关系别名(as)//select 运算select 1+1; select 10>20; select 1 or 0;select 1+1 as a;select * from tb1,tb2;//多表查询select tb1.id as s_id, tb2.* from tb1,tb2;//字段别名多表查询selecttb1.id as s_ id,s.class_name, c.* fromtb1 as s, tb2as c;//表别名where子句、查询条件子句:关系:> >=
Like:模糊查询、like ‘模式匹配符%和_’;(%任意字符,_表示一个字符)Notlike: 是like取反Betweennum1 and num2: 在某个区间、闭区间。In(元素列表): 在某个集合之内 Notin(元素列表): 不在某个集合之内Null判断、is null 或者is not null事例:selsect * from tb1where class_name like ‘%22’;selsect * from tb1 where class_name like ‘_22’;select * from tb1where id between11 and 40;select * from tb1where id >=11 andid
select * from tb1where id not in(11,30);select * from tb1where id in (11,20);group by 字段:分组查询对查询结果(已经通过where子句过滤之后的数据),按照某个字段,进行分组!合计函数:count(): 统计记录数、可以是*和字段名sum(字段表达式): 统让和、对某个字段求和、avg(): 平均值max(字段表达式):最大值min(字段表达式):最小值group_concat(字段表达式):组内连接字符串selectcount(*),id from tb1where 1 groubby id;selectsum(money),class_id from tb1groub by class_id;selectavg(money),class_id from tb1groub by class_id;select concat(‘It’ ,’is’,’test’);分组排序:ASC: 升序DESC:降序Selectcount(*),class_id from tb1group by class_id;多字段分组:Selectcount(*),class_id,class_namefrom tb1 groubby class_id,class_name;Having子句:条件子句、功能和where类似Select* from tb1where money>300;Select* from tb1having money>300;Having和where区别:having的结果一定是 where 已经过滤之后的结果!having对结果进行二次处理Selectavg(age),class_id from tb1where 1 group byclass_id having avg(age)>16;Order by 排序子句Orderby 字段名 [asc|desc],[字段名[asc|desc],]//对结果进行排序的语句!可对多个字段排序Select * from tb1order by class_iddesc, age asc;原则是,先按照第一个字段进行排序,如果字段值相同,则采用第二个,以此类推Selectclass_id from tb1group by class_idasc order byclass_id desc;Limit 子句:限制结果记录的子句、limit start (起始位置), size(记录数);Select* from tb1limit 1,3;执行顺序:字段表达式,from子句,where子句,group by子句,having子句,order by子句,limit子句子查询语句:selectmax(height) from tb1;select* from tb1where height=170;select* from tb1where height=(select max(height)from tb1);子查询的两种分类依据:依据子查询出现的位置!where型子查询, 出现在where子句内!from 型子查询, 出现在from子句内!依据子查询的返回数据的格式!标量子查询,返回值是一个数据,称之为标量子查询!列子查询,返回一个列,行子查询,返回一个行,表子查询,返回的是一个二维表Select * from tb1 where height=(selectmax(height) from tb1); //where型需要,先用一个查询,得到身高排序结果,再将该结果分组Select* from (select * from tb1 order byheight desc) group by class_id;//from型Select* from (select * from tb1 order byheight desc) as tmp group by class_id;列子查询:Select * from tb1where sex=’girl’ and class_idin(select class_id fromtb1 where sex=’body’ group byclass_id); //找到班级内有女同学的男学生信息Select * from tb1 where (height,money)=(selectmax(height),max(money) from tb1);//找到,高富,最高并且最有钱!exists型子查询:select * from tb1 where exists(select * from tb2 where tb1.class_id = tb2.id);连接查询,join:连接多个表记录之间的连接!from 表名1 join 表名2 on 连接条件Select name,class_id,age from tb_xuejoin tb_ban ontb_xue.class_id=tb_ban.id;需要不单从 学生表获取数据,还需要从 班级表获得数据内连接,inner joinmysql默认的连接就是 inner joinselect stu_name,class_id,class_name fromselect_student inner join select_class onselect_student.class_id=select_class.id;(可省略inner)外连接,left join,right joinSelectstu_name,class_id,class_name from select_student left join select_classon select_student.class_id = select_class.id;join关键字前面的(左边的)左表,join关键字后边的(右边的)右表!左外:如果出现左表记录连接不上右表记录的,左表记录会出现正在最终的连接结果内!而右表记录相应设置成NULL。右外:如果出现右表记录连接不上左表记录的,右表记录会出现正在最终的连接结果内!而左表记录相应设置成NULL。交叉连接,cross join: 相当于是 没有条件的内连接自然连接,natural join: mysql,自动判断连接条件,帮助我们完成连接!Selectstu_name,class_name from select_classnatural join select_student;而自然连接也分内连接与外连接!自然内连接:natural join自然左外:natural left join自然右外:natual right join总结:最终的效果只有:内,左外,右外!交叉,特殊的内!自然,相当于自动判断连接条件,完成内,左外,右外!连接条件,on,using:on,后面使用一个连接条件表达式!using(连接字段),要求使用同名字段进行连接!Selectclass_name,stu_name from tb_classinner join tb_student ontb_class.class_id=tb_student.class_id;Selectclass_name,stu_name from tb_classinner join tb_student using(class_id);union查询,联合查询:将多个查询的结果,并列到一个结果集合内!(selectstu_name,height from tb_studentwhere sex=’girl’ order byheight asc limit 1000) union(select stu_name ,height fromtb_student where sex=’box’order by height desc limit 1000 );union 的连接的两个子句,不要求实同表,只要求,列的数量相同!union会在联合时:主动去掉相同的记录:此时,可以使用 all关键字加以修正:select 1=1 union allselect 2;select语句的选项:distinct,取消相同的记录selectclass_id from tb_student;selectall class_id fromtb_student;selectdistinct class_id fromtb_student;四、编码1、建库,建表,建字段 设置(数据库中的数据的编码)2、PHP作为mysql服务器的客户端,设置的客户端编码和连接编码(set names gbk/utf8)3、设置php返回给浏览器数据的编码,(Content-Type,header(),)4、PHP文件本身保存的编码(文件编码,通过文本编辑器设置)五、视图视图:就是通过一条查询语句得到一个张虚拟表!因此,视图就是 select语句的结果作用:简化查询的业务逻辑,隐藏真实的表结构。语法:create view 视图名字 as 查询语句Createview view_name asselect * fromtb_student as sleft join tb_classusing(class_id);Select *from v开发云主机域名iew_name whereid=22;//取得每个班级最高的学生信息Createview view_student asselect * fromview_student order byheight desc;Select *from view_student groupby class_id;六、事务事务:一组 SQL 的集合,要不集体都执行成功,要不集体都失败,语法:开启事务:start transaction (可简写begin)提交:commit (如果sql成功、则提交、将sql的执行结果保存到数据库里)回滚:rollback (如果sql失败、则回滚、将sql的执行结果退到事务开始之前)注:无论回滚还是提交,都会关闭该事务!(需要再次开启,才能使用)事务,只针对当前的连接生效!事例:Starttransaction;Updatetb_student set money=money+1000 whereid=10;Commit;七、数据库备份1、备份单个表select 字段列表into outfile文件地址 from 表名 where 其他的select子句select* into outfile‘d:/b.txt’fieldsterminated by ‘,’linesterminated by ‘rn’fromtb_student;还原:load data infilefilename into tb_name;2、备份一个库Mysqldump-h227.0.0.1 -P3306 -uroot-p > d:/data_back.sql;//备份库Mysqldump-h227.0.0.1 -P3306 -uroot -p data_name tb_studnet >d:/tb_back.sql;//备份表3、还原数据库Mysql-h227.0.0.1 -P3306 -uroot-p data_name

Mysql>source d:/data_back.sql;(登录后还原)

3、忘记root密码

mysqld服务器程序,有一个选项,跳过权限认证选项!客户端登陆不用密码

my.ini里面要有这个选项、没有就手动填加添加skip-grant-tables(改好密码就删除这段)

第一步:

重新开启mysqld服务、直接mysql就能进去了。

cmd>mysql

第二步:

更新mysql.user表root用户的password字段

Updatemysql.user set password=password(‘123456’) whereuser=’root’;这个不行就用下面这个

updatemysql.usersetauthentication_string=password('**')whereuser='**';

第三步:

重启mysqld

八、PHP操作mysql服务器

php作为mysql服务器的客服端

php–链接认认证–发送sql–执行sql、生成结果–处理结果–关闭连接

1、【连接认证】

$_host = ‘localhost’;

$_port = ‘3306’;

$_user = ‘root’;

$_pass = ‘rootpass’;

if(!$_link = mysql_connect(“$_host:$_port”,$_user, $_pass)){

die(‘连接失败!’);

}

2、【向mysql服务器发送sql

$_sql = ‘show databases’;

if(!$_result = mysql_query($_sql, $_link)){

echo’sql执行失败’;

}

3、【处理返回的数据】

$_row = mysql_fetch_assoc($_result);

var_dump($_row);

结果集取出来的函数:

mysql_fetch_assoc() 函数从结果集中取得一行作为关联数组。

mysql_fetch_row() 函数从结果集中取得一行作为索引数组。

mysql_fetch_array() 函数从结果集中取得一行作为关联数组,或数字数组,或二者兼有

mysql_num_rows()函数返回结果集中行的数目。

注:任何有结果的sql操作,返回的都是结果集!结果集,就是一个二维表的结构!是一行行的记录组成!

4、【释放释源】

mysql_free_result($_result);结果集

mysql_close($_link);连接资源

关于Mysql 数据库表如何增删改查就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

Mysql>source d:/data_back.sql;(登录后还原)3、忘记root密码mysqld服务器程序,有一个选项,跳过权限认证选项!客户端登陆不用密码my.ini里面要有这个选项、没有就手动填加添加skip-grant-tables(改好密码就删除这段)第一步:重新开启mysqld服务、直接mysql就能进去了。cmd>mysql第二步:更新mysql.user表root用户的password字段Updatemysql.user set password=password(‘123456’) whereuser=’root’;这个不行就用下面这个第三步:重启mysqld八、PHP操作mysql服务器php作为mysql服务器的客服端php–链接认认证–发送sql–执行sql、生成结果–处理结果–关闭连接1、【连接认证】$_host = ‘localhost’;$_port = ‘3306’;$_user = ‘root’;$_pass = ‘rootpass’;if(!$_link = mysql_connect(“$_host:$_port”,$_user, $_pass)){ die(‘连接失败!’);}2、【向mysql服务器发送sql$_sql = ‘show databases’;if(!$_result = mysql_query($_sql, $_link)){ echo’sql执行失败’;}3、【处理返回的数据】$_row = mysql_fetch_assoc($_result);var_dump($_row);结果集取出来的函数:mysql_fetch_assoc() 函数从结果集中取得一行作为关联数组。mysql_fetch_row() 函数从结果集中取得一行作为索引数组。mysql_fetch_array() 函数从结果集中取得一行作为关联数组,或数字数组,或二者兼有mysql_num_rows()函数返回结果集中行的数目。注:任何有结果的sql操作,返回的都是结果集!结果集,就是一个二维表的结构!是一行行的记录组成!4、【释放释源】mysql_free_result($_result);结果集mysql_close($_link);连接资源关于Mysql 数据库表如何增删改查就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

相关推荐: MySQL有哪些入门知识

不知道大家之前对类似MySQL有哪些入门知识的文章有无了解,今天我在这里给大家再简单的讲讲。感兴趣的开发云主机域名话就一起来看看正文部分吧,相信看完MySQL有哪些入门知识你一定会有所收获的。 看完MySQL有哪些入门知识这篇文章,大家觉得怎么样?如果想要了解…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 06/21 20:43
下一篇 06/21 20:43

相关推荐