MySQL数据存储_第1页
MySQL数据存储_第2页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、MySQL、常用的MySQL命令1,列举出数据库showdatabases;mysql>shoudatabases;IDatabaseIinformation_schemaIImi/sqlIIperfomance_scheiiaIItestI2,进入/切换数据库use数据库名;niysql>usemsrsqlDatabasechangedniysql>3,列举出表showtables;nysql>shoutables;+iTables_in_mysqli+icolumns_priui:db:ieventiifunciigeneral_logiihelp_category

2、iihelp_keywordiihelp_relationiihelp_topiciihostiIndb_binlog_indexIIpluginIIprocIIprocs_priuIIproxies_priuIIseruersIIslow_logIItables_priuIItime_EoneI4, 查看表结构desc表名lysqTXaesceinpToyee;-+-+-+-+-+-+11FieldiiType11Null!Key11Default!Extra111-+-+-+-+-+-+11eidiiint<ll>11¥ES1111NULL111111enameiiu

3、archar<32>11¥ES1111NULL111111esexiichar<2>11¥ES1111NULL111111eageiiint<ll>11¥ES1111NULL11111-+-+-+-+-+-+1rowsinset<0.01sec>二、MySQL简介MySQL是一款开源的关系型数据库,目前有Oracle公司来开发。目前为止在数据库排行榜上位于第三位。MySQL数据库有多重版本:windows,linux,Maco关系型数据库:数据库是用来存放数据的,还要存放数据和数据之间的关系。这个关系在数据库看来也是

4、数据。三、数据库SQL语句SQL语法属于第四代语法,自然语言。编程的规则就和人说话一样。主谓宾定状补1,数据库管理-创建数据库createdatabased_name;在mysql中有数据引擎的概念,默认情况下是InnoDB引擎,这个引擎可以支持关系数据。-删除数据库dropdatabased_name;-备份数据库-还原数据库2,执行外部的.txt/.sql文件来执行source文件路径(不能加;)四、常用的数据类型int:整型char(n):字符类型,固定长度char(10):只能放10的英文字符或者5个汉字。aa',如果没有用完指定长度,则用空格填满。查询速度快,浪费空间。如果是

5、定长数据,则使用char,比如性别,手机号,身份证号码。varchar(n):字符类型,可变长度varchar(10)aa',如果没有用完指定长度,则用空格填满。查询速度慢,不浪费空间。姓名,简介,地址等等。text:字符类型存放的字符数量比较大。DATETIME:时间类型,时间类型也是字符类型,只不过它有自己的格式。Date:日期类型。,时间类型也是字符类型,只不过它有自己的格式。在MySql中提供了几个时间函数:now():返回当前的日期+时间curDate():返回当前的日期curTime():返回当前的时间DATEDIFF(exp1,exp2):计算两个日期之间的天数date(

6、YYYY-MM-DDhh:mm:ss'):得至U指定时间的日期部分1,表的创建数据库中是存放数据的,但是数据真正存储在表中,表在数据库中。在数据库中可有很多的对象:表对象,触发器对象,存储过程对象等等。最重要的是表对象。createtablet_name(字段列表);字段类表:规定这一列是用来存储什么数据的额,数据的类型是什么,数据的约束是什么。表和表之间的关系就可以用数据来表示出来。在数据报表中很多可能出现重复数据,重复数据称之为垃圾数据(冗余数据),应该避免这些垃圾数据。通过具体的分析来创建表。表的约束:约束数据必须是符合规则的。1主键约束通过设置某个字段作为主键,用来唯一标示这条

7、数据。primarykey还可以设置字段的auto_increment来设置该字段是自动增长。注意:设置为自动增长之后,在插入数据的时候,需要把该类的值设置为nullinsertintoemployeevalues(null,'张三',89);2、检查约束在插入数据的时候,数据库会自动的检测数据是否合法在mysql中check约束不起作用,但是不会导致语法错误,数据库引擎会解析,但是不执行。在mysql中使用set,enum来实现相同的功能。在使用set或者enum的时候,不需要给该字段定义类型,应为后面的值已经确定了该字段的类型。CreateTableA(sexSet(

8、9;男','女')/*CreateTableA(sexenum(男','女')*/insertintoAvalues('男')insertintoAvalues('女')insertintoAvalues('妖')3、默认值当插入数据的时候,可以不指定该字段的值,由默认值来代替。default默认值createtableB(idint,namevarchar(32)default'张三');insertintoB(id)values(1)insertintoBvalues(1,def

9、ault)这样在插入数据的时候,会使用默认值。4、非空约束不允许该字段为null。一般情况习惯性的都写上notnull,该空不是''般情况下null值几乎没有任何的作用,只有在联合查询的时候,null值才有作用。CreateTableC(idintnotnull,namevarchar(32)notnull)insertintoCvalues(null,null)insertintoCvalues(1,'')5、唯一约束主键约束也是一种唯一约束,要求该字段的值不能重复,但是主键是用来唯一标示一条记录的,除此之外还可能要求其他的字段的值也不能重复,此时就需要唯一约

10、束。CreatetableD(idintprimarykey,namevarchar(32)uniqueinsertintoDvalues(1,'宿舍)insertintoDvalues(2,'宿1舍)6、复合主键两个或两个以上的字段作为主键,此时只有这几个字段的值不一样,才可以表示为一条记录。通常情况下,复合主键(联合主键)用于关系表中。7、外键关系型数据库,数据和数据之间是有关系,这个关系需要通过外键来描述。常见的关系:1:11:nn:nDemo:部门和员工之间的关系就是1:nDemo:老师和学生n:n在创建表和表之间关系的时候,通过foreignkey(外键)refere

11、ncest_name(主键)。需要另起一行-创建部门主键表createtabledepartment(dnovarchar(32)primarykey,dnamevarchar(64)-外键表createtableemployee(eidintauto_incrementprimarykey,enamevarchar(32)notnull,esexset('男','女'),ebirthdatetime,etelchar(11)notnull,eaddressvarchar(256)notnull,esalarydoublenotnull,dnovarchar(3

12、2),foreignkey(dno)referencesdepartment(dno)五、SQL语句1,插入语句insertinto表名(字段名类表)values(值类表)insertintoemployee(eid,ename,esex,eage)values(1,'张三',男',34);如果说要插入全部数据insertintoemployeevalues(1,'张三','男',34);2,修改语句update表名set修改的字段列表【where更新条件】updateemployeesetesalary=1000跟新的所有的记录通常情况

13、下,使用条件来更新updateemployeesetesalary=esalary+1000whereeid=13,删除语句deletefrom表名where删除条件】deletefromemployee-J删除了全部记录了通常情况下,使用条件来删除deletefromemployeewhereeid=14,where语句where语句是条件语句,可以用于select,update,delete.用来过滤数据的。where布尔表达式。=,,,=,=,!=,,not,isnot,in,notin,like,&&,And,|,or,between.and.(=and)5,查询语句1

14、,简单查询select查询字段列表from表名where条件groupby分组依据having分组过滤orderby排序模糊查询:字段like值,可以使用通配符来表示,,_%:代表0个或多个字符_:代表一个字符。分组查询:select分组字段,聚合函数from表groupby分组字段having布尔表达式2,联合查询链接查询主要解决的就是一个笛卡尔积的问题,通过连接条件来取消笛卡尔积。innerjoin:内联,A表的外键和B表的主键完全相等才能匹配(1) selecta.*.b.*fromainnerjoinbon连接条件(2) selecta.*,b.*froma,bwhere连接条件lef

15、tjoin:左联,把左表和右表匹配的记录查询出来之外,还要把左表中没有匹配的也查询出来。rightjoin:右联,把右表和左表匹配的记录查询出来之外,还要把右表中没有匹配的也查询出来。在多对多关系中,使用单独的一张表用来存放数据的关系。此时的链接查询称之为多表链接。-多对多createtablestudent(sidintprimarykey,snamevarchar(32);insertintostudentvalues(1,'张三')insertintostudentvalues(2,'李四');insertintostudentvalues(3,'

16、王五');insertintostudentvalues(4,'马六');createtableteacher(tidintprimarykey,tnamevarchar(32));insertintoteachervalues(1,'贝吉塔');insertintoteachervalues(2,'超级塞牙人');createtablestudent_teacher(sidint,tidint,foreignkey(sid)referencesstudent(sid),foreignkey(tid)referencesteacher(t

17、id),primarykey(sid,tid)insertintostudent_teachervalues(1,1);insertintostudent_teachervalues(1,2);insertintostudent_teachervalues(2,2);insertintostudent_teachervalues(3,1);insertintostudent_teachervalues(4,1);insertintostudent_teachervalues(4,2);select*fromstudent;select*fromteacher;select*fromstuden

18、t_teacher;selecta.*,c.*fromstudentasainnerjoinstudent_teacherasbona.sid=b.sidinnerjointeacherasc3,子查询嵌套在查询中的查询称之为子查询,子查询的作用是为父查询提供查询依据的。子查询可以出现在父查询中的任意位置。-子查询1,查看一下工资最高的员工信息selectmax(esalary)fromemployeeselect*fromemployeewhereesalary=(selectmax(esalary)fromemployee)2,查看一下工资最低的员工信息selectmin(esalary)fromemployeeselect*fromemployeewhereesalary=(selectmin(esalary)fromemployee)-3,查询一下工资大于本部门平均工资的人selectavg(esalary)fromemployeegroupbyeaddressselect*fromemployeeasawhereesalary>(selectavg(esalary)fromemployeeasbgroupbyeaddresshavinga.eaddress=b.eaddr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论