您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页MYSQL5.5数据库命令总结

MYSQL5.5数据库命令总结

来源:华佗小知识
第一部分数据库基本操作命令语句

标准的SQL语句:select*from表名;数据库创建语句:creatdatabasetest;

数据库登陆语句:mysql-h主机IP-u用户名-p密码例如:

远程登陆:mysql-h131.17.99.43-uroot-p12345ok;本机登陆:mysql-uroot-p12345ok;省略了主机ip地址

查看当前mysql所有数据库showdatabases;使用某数据库usetest;

显示连接后的数据库的所有表showtables;

查看连接了的数据库的某表里面的记录select*fromperson;

Selectid,passwordfromperson;

查看表的结构:describeadmin;

数据库结构图:

第二部分数据库常见操作

1删除数据库

dropdatabasexue_xiao;2创建一个数据库

createdatabasexue_xiao;

3显示所有数据库

showdatabases;

4创建一个简单的表

(注意:先一定要使用某一个数据库,语句:usexue_xiao;)

createtablexue_sheng(namevarchar(50));

5查看正在使用的数据库的所有表

showtables;

6查看正在使用的数据库的某一个表结构:

describexue_sheng;或descxue_sheng(常用);

7在某张表中增加一个字段:

altertablexue_shengaddnian_lingint;

查看表结构descxue_sheng;

8删除表的一个字段

altertablexue_shengdropnian_ling;

9在表中插入一条记录

insertintoxue_shengvalue(\"LiMing\"');

10在表中插入中文字符

insertintoxue_shengvalue('李明')

11删除一个表

droptablexue_sheng;

12删除一个数据库

dropdatabasexue_xiao;

13创建一个指定字符编码的数据库,即在创建数据库的时候指定编码(建议使用:UTF-8)

createdatabasexue_xiaocharactersetutf8collateutf8_general_ci;

注意:由于在创建数据库的使用指定了字符编码,所以在插入中文字符时,可以不用指定字符编码

14查看一个表的记录

select*fromuser;或selectuser_id,user_name,user_passwordfromuser;

第三部分数据记录的基本操作

1创建一个完整的表

Createtablexue_sheng(idint,xing_mingvarchar(50),fen_shuint,xing_biechar(2));注意:int型默认长度为11,在创建时可以不指定,使用默认长度;创建时如果不指定,默认可以为空2往表中插入一条记录

Insertintoxue_shengvalues(1,'张三',90,'男');查看表中的所有记录Select*fromxue_sheng;3查询表中的某一个字段

Selectxing_mingfromxue_sheng;4模糊查询like'%关键字%'

查询姓李的所有记录Select*fromxue_shengwherexing_minglike'李%';5多条件查询

Select*fromxue_shengwherexing_minglike'李%'andxing_bie='女';6进行排序查询

Orderby字段名desc(降序)或者asc(默认升序);Select*fromxue_shengorderbyfen_shudesc;Select*fromxue_shengorderbyfen_shuasc;7分页查询

Select*fromxue_shenglimit1,2;(从第1条开始(不包括第一条),查询2条记录)8更新指定记录

Updatexue_shengsetxing_bie='男'whereid=3;9删除指定记录

Deletefromxue_shengwhereid=2;注意:不指定删除条件,则删除所有记录第四部分常用函数和分组查询,表连接,

嵌套查询

1查询总成绩

Selectsum(fen_shu)fromxue_sheng;

2求最大数

Selectmax(fen_shu)fromxue_sheng;

3求最小数

Selectmin(fen_shu)fromxue_sheng;

4求平均数

Selectavg(fen_shu)fromxue_sheng;

5统计一个表有多少记录(求和)Selectcount(*)fromxue_sheng;

6分组查询

Selectxing_bie,sum(fen_shu)fromxue_shenggroupbyxing_bie;

7同时查询两张表

Selectxing_ming,ban_mingfromxue_sheng,,ban_ji;

8别名的使用

Selectxing_ming,ban_mingfromxue_shengx,ban_jix.bj_id=b.id;

bwhere9表连接查询

selectxing_ming,ban_mingfromxue_shengxjoinban_jibonx.bj_id=b.id;

10子查询(嵌套查询)in()或者notin查询一年级1班的所有的学生信息

select*fromxue_shengwherebj_idin(selectidfromban_jiwhereban_ming='年级(1)班');

Selectidfromban_jiwhereban_ming='一年级(1)班';的结果为1Select*fromxue_shengwherebj_idin(1);

第五部分主键(primarykey)外键(foreignkey)

1在建立表的时候,建立一个自动增长的id作为主键

Droptablexue_sheng;[注意:删除表和删除记录的语句不一样]Createtablexue_sheng(Idint(20)auto_incrementnotnullprimarykey,Xing_mingvarchar(50),Fen_shuint,Xing_biechar(2),Bj_idint);2插入一条记录

Insertintoxue_sheng(xing_ming,fen_shu,xing_bie,bj_id)values('张三',90,'男',1);3一次插入多条记录

Insertintoxue_sheng(xing_ming,fen_shu,xing_bie,bj_id)values('李四',70,'男',2),('李小红',80,'女',1),('陈小明',80,'男',3);4外键,数据参照的完整性,保持数据一致/一张表的外键必须是另一张表的主键

Altertablexue_shengaddconstraintfk_xue_shengforeignkey(bj_id)referencesban_ji(id);5check约束

Alterbablexue_shengaddconstraintck_xue_shengcheck(xing_bie='男'orxing_bie='女');Altertablexue_shengaddconstraintck_xue_shengcheck(xing_biein('男','女'));Altertablexue_shengchangexing_mingxing_mingvarchar(50)notnull;6notnull非空

Altertablexue_shengchangexing_mingxing_mingvarchar(50)notnull;7默认值

Altertablexue_shengchangexing_biexing_biechar(2)default'男'notnull;第六部分索引index(快速查询)与视图view(安全,方便查询)

视图是一个逻辑表,它并不存在硬盘上。1创建视图

Createviewv_xue_shengasselectxing_ming,yu_wen+shu_xuefromxue_sheng;2访问视图(但是不能删除,插入,更新视图里面的数据)

Select*fromv_xue_sheng;3修改视图

Alterviewv_xue_shengasselectxing_mingas姓名,yu_wen+shu_xueas总分xue_sheng;fromselect*fromv_xue_sheng;4删除视图(和删除表是一样的)

Dropviewv_xue_sheng;5查询两张表的数据

6在两张表上建立视图

Createviewv_xue_shengasselectxing_ming,ban_mingfromxue_shengx,ban_jibwherex.bj=b.id;7两个表上的视图查询

8查询当前数据库的表和视图

Showtables;9索引index用来快速查找特定值的记录。加快查询速度

创建索引Createindexidx_xing_mingonxue_sheng(xing_ming);删除索引Dropindexidx_xing_mingonxue_sheng;10建立唯一索引(主键是一种唯一索引)

Createuniqueindexidx_xing_mingonxue_sheng(xing_ming);11另一种创建,删除索引的方法

Altertablexue_shengaddindexidx_xing_ming(xing_ming);Altertablexue_shengadduniqueidx_xing_ming(xing_ming);Altertablexue_shengdropindexidx_xing_ming;第七部分存储过程procedure与存储函数function

1创建存储过程

Delimiter//(//表示结束)delimiter//createproceduresimpleproc(outparam1int)beginselectsum(yu_wen)intoparam1fromxue_sheng;end//delimiter;2调用存储过程

Callsimpleproc(@a);Select@a;3带输入,输出参数的存储过程

dropprocedureifexistssimpleproc;delimiter//createproceduresimpleproc(INidint,OUTresult1varchar(100))beginselectxing_mingintoresult1fromxue_shengwherexue_sheng.id=id;end//delimiter;callsimpleproc(1,@a);select@a;4存储函数里面声明变量和赋值,逻辑判断

dropprocedureifexistssimpleproc;delimiter//createproceduresimpleproc(INin_namevarchar(50),OUTresult_1varchar(150))begindeclaretemp_1int;declaretemp_2intdefault60;select(yu_wen+shu_xue)/2intotemp_1fromxue_shengwherexing_ming=in_name;iftemp_1>=temp_2thensetresult_1='及格';elsesetresult_1='不及格';endif;end//delimiter;callsimpleproc('张三',@a);select@a;callsimpleproc('李四',@a);select@a;5存储函数

delimiter//createfunctionhello(schar(20))returnsintdeterministicbegindeclaretemp_sumint;selectyu_wen+shu_xueintotemp_sumfromxue_shengwherexing_ming=s;returntemp_sum;end//delimiter;selecthello('张三');selecthello('李四');第八部分事务transaction与锁定lock

事务的出现,考虑这样的一个经典例子:张三账户转账100元到李四的账户1,张三账户减去100元2,李四账户增加100元1创建数据库

createdatabaseyin_hangcharactersetutf8collateutf8_general_ci;useyin_hang;createtablezhang_hao(idint(20)auto_incrementnotnullprimarykey,xing_mingvarchar(50)notnull,jin_eint);insertintozhang_hao(xing_ming,jin_e)values('张三',100),('李四',100);starttransaction;updatezhang_haosetjin_e=0wherexing_ming='张三';rollback;commit;2回滚到自定义点

starttransaction;updatezhang_haosetjin_e=0wherexing_ming='张三';updatezhang_haosetjin_e=200wherexing_ming='李四';savepoints1;updatezhang_haosetjin_e=250wherexing_ming='李四';rollbacktos1;commit;3锁定lock

数据库有一个特性,允许多用户访问,就会出现并发性。例如,网上购物系统,只剩下一本书,张三,李四同时进行网上购买剩下这本书有可能他们都会买到这本书,但是不符合现实,因为只有一本书这样我们通过锁来实现(read,write)mysql>locktableszhang_haoread;mysql>select*fromzhang_hao;由于对账号表进行了读权限进行锁定,所以更新失败mysql>updatezhang_haosetjin_e=1000wherexing_ming='张三';ERROR1099(HY000):Table'zhang_hao'waslockedwithaREADlockandcan'tbeupdatedmysql>unlocktables;解开锁之后,成功更新mysql>updatezhang_haosetjin_e=1000wherexing_ming='张三';QueryOK,0rowsaffected(0.00sec)Rowsmatched:1Changed:0Warnings:0

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务