MySql数据库操作

IdiotXue 2016-09-21

MySql数据库操作

 –登录MySql:——–

Windows环境进入cmd后,输入mysql–hlocalhost–uroot–p,再输入密码就可以启动mysql;其中localhost是mysql服务器所在的ip,如果是本机可以用localhost。

–数据库相关操作——–

createdatabasedb_name(数据库名称):建名为db_name的数据库

showdatabases:查看已经存在的数据库

dropdatabasedb_name:删除名为db_name的数据库

usedb_name:操作名为db_name的数据库

showtables:显示数据库中的表

desctable¬_name:查看表名为table_name的表的结构

–数据库中表(TABLE)的操作——–

Createtabletable_name(IDintprimarykey,NAMEvarchar(50),AGEint,SEXvarchar(10)):创建表且设置了ID为主键

createtabletable_name(stu_idint,course_idint,namevarchar(20),gradefloat,primarykey(stu_id,course_id)):设置了表中stu_id和course_id两个都为主键

外键:如果表A的某一个属性值依赖于表B的主键,则称B为父表,A为子表,A中的这个字段为A的外键,如果父表中的信息改变,则对应子表的数据也会改变

语法:createtabletable_name01(idintprimarykey,stu_idint,course_idint,scorefloat,gradeint,constraintc_fk(外键别名)foreignkey(stu_id,course_id)referencestable_name02(stu_id,course_id));table_name02是父表,table_name01是子表,给子表设置了两个外键

表字段的非空约束:createtabletable_name(idintprimarykeynotnull,namevarchar(50)notnull,stu_idint);设置notnull表示字段不能为空,也就是非空

唯一约束,指字段中值不能重复:createtabletable_name(idintprimarykeyauto_increment,stu_idintunique,namevarchar(20)notnull);其中设置了id自动增加,且unique设置了stu_id的值必须唯一性,不能有相同的值存在

E,为表设置默认值,即在没有插入数据的时候会用默认值代替;

Createtabletable_name(idintprimarykeyauto_increment,stu_idintunique,namevarchar(50)notnullEnglishvarchar(20)default‘zero’);即为Englist字段设置了默认值为zero;

showcreatetabletable_name;查看表的详细结构语句

–表的修改操作——–

修改表名:altertable旧表名rename[to]新表名;把表名更改

修改字段属性:Altertabletable_namemodify属性名数据类型(修改后的类型)

修改字段:altertabletable_namechange旧字段名新字段名新数据类型

增加字段:altertabletable_nameadd字段1数据类型after字段2;在字段2后面增加字段1;如果把字段2改成FIRST即加在最前面

删除字段:altertabletable_namedrop字段名

修改字段的位置:altertabletable_namemodify字段名First(第一个位置,after字段,指定字段的后面)

更改表的引擎名:altertabletable_nameengine=Mylsam;

删除表的外键约束:altertabletable_namedropforeignkey外键别名

删除表:

9.1:普通的没有关联的表:droptabletable_name;

9.2:删除有关联的表:先用showcreatetabletable_name;查看表的详情,看到外键的另名,先删除外键,再删除表格就可以了。

–数据库的增删改查操作——–

数据库的增(insertinto)删(delete)改(update)查(select)操作:

1.添加数据insertinto

A增加数据分两种:1,不指定具体字段名如:insertintotable_namevalues(值1,值2…)

指定字段名:insertintotable_name(字段1,字段2….)values(值1,值2….);如果是为指定的字段加数据,只需要写出需要加数据的字段即可

同事插入多条数据:insertintotable_name[字段列表]values(取舍列表1),(取值列表2)…

将一个表的数据插入到别个一张表中:

Insertintotable_name1(字段列表)select(表2字段)fromtable_name2where条件表达式;

2.更新数据(改)操作update

总体操作是:updatetable_nameset字段1=值1,字段2=值2…where条件表达式

可以对一定范围中的数据更改,主要是从where后面的条件来判断

3.删除数据操作delete

deletefromtable_namewhere条件表达式

Deletefromtable_name;将会删除所有数据;

4.查询数据query

Select字段名列表fromtable_name[where条件表达式1][groupby字段名[having条件表达式2]][orderby字段名[ASC(升序)/DESC(降序)]]

单表查询:select字段名fromtable_namewhere条件

带in关键字查询:

判断某个字段的值是否在指定的集合中,是的话就查出来:select字段名或*table_namewhere字段名in(值1,值2…..)

带betweenand关键字的查询:select*或字段名fromtable_namewhere字段名between值1and值2;查找的是范围在值1与值2之间对应的数据;结果是包含两端的值的

带like的匹配查询一个完整字符串,可以加%或;%表示任意长度的字符串如b%k表示以b开头,以k对事的任意字符串,而只表示单个字符,如b_k表示以b开始k结束的3个字符的字符串

方法:select*或字段名fromtable_namewhere字段名[not]like条件;not表示不匹配时

-空值查询:select*或字段名fromtable_namewhere字段名is[not]null;即查询[不]为空的数据

and与or的多条件查询:select*或字段名fromtable_namewhere条件1and条件2;与fromtable_namewhere条件1and条件2;and表示所以条件都必须成立,而or表示只需要其中任何一个条件成立就可以

F,查询结果不重复:selectdistinct字段名fromtable_name;

5.分组查询

单独用groupby分组,结果只会显示一个分组的一条记录:

Select*或字段名fromtable_namegroupby字段名

groupby和group_concat()函数使用:每个分组的所有字段都可以显示

Select字段名,roup_coucat(字段名)fromtable_namegroupby字段名

-groupby与集合函数使用:select字段名,count(字段名)fromtable_namegroupby字段名havingcount(字段名)条件

多字段分组:select*fromtable_namegroupby字段1,字段2…

E,groupby与withrollup一起用

Select字段名,count(字段名)fromtable_namegroupby字段名withrollup

6.用limit限制查询数据

Select*fromtable_namelimita或(limita,b),前者是显示从第一条到a条数据,后者是显示从a条到b条间的数据

7.使用集合函数查询数据

count()统计数据条数:Selectcount(*)fromtable_name

sum()求和:Select字段名,sum(字段名)fromtable_namewhere条件

avg()求平均数:Selectavg(字段名)fromtable_namegroupby字段名

max与min最大与最小值:Selectmax(字段名)/min(字段名)fromtable_name;

8.多表连接查询

-内连接查询:两个以上表中存在意义相同的字段时,可以用该字段来连接表进行查询.如:select字段1,字段2,字段3…fromtable_name1,table_name2wheretable_name1.字段a=table_name2.字段b

-外连接查询:select字段列表fromtable_name01left/rightjointable_name02ontable_name01.字段名=talbe_name02.字段名。Letf表示左链接,right表示右链接

-复合条件查询:运用多条件精确查询

9.用正则表达式查询

查询以特定字符开头的记录:select*fromtable_namewhere字段名regexp‘^a’以a头

查询以特定字符结束的记录:Select*fromtable_namewhereregexp‘xx$;

用符号“.”来代替字符串中任意一个字符:Select*fromtable_namewherenameregexp‘^l..y$’;

–表或字段取别名——–

表的别名:select*fromtable_nametwheret.字段=值;t就是表的别名

字段的别名:用as关键字,如:selectt_idas字段idfromtable_namewheret_id=值;t_id就是对应字段的别名,别名可以同真实名一样使用

–数据库备份——–

mysqldump命令备份:mysqldump–uusername–pdb_nametable1,table2….>BackupName.sql;//其中db_name是数据库的名称,table1..是表名,如果没有表名将备份整个数据库,backupname.sql表示备份文件的名称,前面可以加个绝对路径

备份多个数据库:Mysqldump-uusername–p–databasesdb_name1db_name2…>backupname.sql

备份所有数据库:Mysqldump–uroot–p–all-databases>C:\all.sql

用Mysqlhotcopy工具快速备份

数据库还原:Mysql–uroot–p<backup.sql//其中backup.sql是保存的数据库文件

以上分享来自兄弟连MySQL数据库培训,转载请注明出处。

相关推荐