1、MySQL数据存储综述MySQL1、常用的MySQL命令1,列举出数据库show databases;2,进入/切换数据库use 数据库名;3,列举出表show tables;4,查看表结构desc 表名2、MySQL简介MySQL是一款开源的关系型数据库,目前有Oracle公司来开发。目前为止在数据库排行榜上位于第三位。MySQL数据库有多重版本:windows,linux,Mac。关系型数据库:数据库是用来存放数据的,还要存放数据和数据之间的关系。这个关系在数据库看来也是数据。3、数据库SQL语句SQL语法属于第四代语法,自然语言。编程的规则就和人说话一样。主 谓 宾 定 状 补1,数据库
2、管理-创建数据库create database d_name;在mysql中有数据引擎的概念,默认情况下是InnoDB引擎,这个引擎可以支持关系数据。-删除数据库drop database d_name;-备份数据库-还原数据库2,执行外部的.txt/.sql文件来执行source 文件路径 (不能加;)4、常用的数据类型int:整型char(n):字符类型,固定长度 char(10):只能放10的英文字符或者5个汉字。aa ,如果没有用完指定长度,则用空格填满。查询速度快,浪费空间。如果是定长数据,则使用char,比如性别,手机号,身份证号码。varchar(n):字符类型,可变长度varc
3、har(10)aa,如果没有用完指定长度,则用空格填满。查询速度慢,不浪费空间。姓名,简介,地址等等。text:字符类型存放的字符数量比较大。DATETIME:时间类型,时间类型也是字符类型,只不过它有自己的格式。Date:日期类型。,时间类型也是字符类型,只不过它有自己的格式。在MySql中提供了几个时间函数:now():返回当前的日期+时间curDate():返回当前的日期curTime():返回当前的时间DATEDIFF(exp1,exp2):计算两个日期之间的天数date(YYYY-MM-DD hh:mm:ss):得到指定时间的日期部分1,表的创建数据库中是存放数据的,但是数据真正存储
4、在表中,表在数据库中。在数据库中可有很多的对象:表对象,触发器对象,存储过程对象等等。最重要的是表对象。create table t_name(字段列表);字段类表:规定这一列是用来存储什么数据的额,数据的类型是什么,数据的约束是什么。表和表之间的关系就可以用数据来表示出来。在数据报表中很多可能出现重复数据,重复数据称之为垃圾数据(冗余数据),应该避免这些垃圾数据。通过具体的分析来创建表。表的约束:约束数据必须是符合规则的。1、主键约束通过设置某个字段作为主键,用来唯一标示这条数据。primary key还可以设置字段的auto_increment来设置该字段是自动增长。注意:设置为自动增长之
5、后,在插入数据的时候,需要把该类的值设置为nullinsert into employee values(null,张三,89);2、检查约束在插入数据的时候,数据库会自动的检测数据是否合法在mysql中check约束不起作用,但是不会导致语法错误,数据库引擎会解析,但是不执行。在mysql中使用set,enum来实现相同的功能。在使用set或者enum的时候,不需要给该字段定义类型,应为后面的值已经确定了该字段的类型。Create Table A( sex Set(男,女)/*Create Table A( sex enum(男,女)*/insert into A values(男)inse
6、rt into A values(女)insert into A values(妖)3、默认值当插入数据的时候,可以不指定该字段的值,由默认值来代替。default 默认值create table B( id int, name varchar(32) default 张三);insert into B(id) values(1)insert into B values(1,default)这样在插入数据的时候,会使用默认值。4、非空约束不允许该字段为null。一般情况习惯性的都写上not null,该空不是。一般情况下null值几乎没有任何的作用,只有在联合查询的时候,null值才有作用。C
7、reate Table C( id int not null, name varchar(32) not null)insert into C values(null,null)insert into C values(1,)5、唯一约束主键约束也是一种唯一约束,要求该字段的值不能重复,但是主键是用来唯一标示一条记录的,除此之外还可能要求其他的字段的值也不能重复,此时就需要唯一约束。Create table D( id int primary key, name varchar(32) unique)insert into D values(1,宿舍)insert into D values(
8、2,宿1舍)6、复合主键两个或两个以上的字段作为主键,此时只有这几个字段的值不一样,才可以表示为一条记录。通常情况下,复合主键(联合主键)用于关系表中。7、外键关系型数据库,数据和数据之间是有关系,这个关系需要通过外键来描述。常见的关系:1:11:nn:nDemo:部门和员工之间的关系就是1:nDemo:老师和学生n:n在创建表和表之间关系的时候,通过foreign key(外键) references t_name(主键)。需要另起一行-创建部门 主键表create table department( dno varchar(32) primary key, dname varchar(64
9、)-外键表create table employee( eid int auto_increment primary key, ename varchar(32) not null, esex set(男,女), ebirth datetime , etel char(11) not null, eaddress varchar(256) not null, esalary double not null, dno varchar(32), foreign key (dno) references department (dno)5、SQL语句1,插入语句insert into 表名(字段名类
10、表) values(值类表)insert into employee(eid,ename,esex,eage) values(1,张三,男,34);如果说要插入全部数据insert into employee values(1,张三,男,34);2,修改语句update 表名 set 修改的字段列表 【where 更新条件】update employee set esalary = 1000 跟新的所有的记录通常情况下,使用条件来更新update employee set esalary = esalary+1000 where eid = 13,删除语句delete from 表名 【whe
11、re 删除条件】delete from employee -删除了全部记录了通常情况下,使用条件来删除delete from employee where eid = 14,where语句where语句是条件语句,可以用于select,update,delete.用来过滤数据的。where 布尔表达式。=,=,=,!=,not,is not ,in,not in,like,&,And,|,or,between.and .(= and (select avg(esalary) from employee as b group by eaddress having a.eaddress=b.ead
12、dress)-4,查询员工的姓名和总工资select ename from employeeselect sum(esalary) from employeeselect *,(select sum(esalary) from employee) from employee-5,查询部门平均工资大于5000的部门员工信息select eaddress from employee group by eaddress having avg(esalary)5000select * from employee where eaddress in (select eaddress from emplo
13、yee group by eaddress having avg(esalary)5000)4,limit查询分页查询,limit index,countselect * from employee limit 0,3从索引为0的记录开始查,每次查3条数据分页的公式:limit (pno-1)*pagesize,pagesize注意:limit语句只能出现在select语句的最后。6、常用函数length(字符串):得到字符串的字节数count(*):统计记录数sum(字段):求指定字段的总和avg(字段):求指定字段的平均值max(字段):求指定字段的最大值min(字段):求指定字段的最小值。7、起别名1,给字段起别名select name as 姓名select name 姓名2,给表起别名在表的后面加上 as a或者不加as