资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,北京传智播客教育,*,高级软件人才实作培训专家,!,高级软件人才实作培训专家,!,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,北京传智播客教育,*,北京传智播客教育,SQL,入门,北京传智播客教育SQL 入门,北京传智播客教育,MySQL,简介,数据库简介,SQL Server,、,Oracle,、,MySQL,、,DB2,、,SyBase,MySQL,数据库的安装和配置,使用命令行窗口连接,MYSQL,数据库,mysql u,用户名,p,密码,北京传智播客教育MySQL简介数据库简介,北京传智播客教育,数据库服务器、数据库和表的关系,MySQL,DB,DB,表,表,表,Client,所谓安装数据库服务器,只是在机器上装了一个数据库管理程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。,为保存应用中实体的数据,一般会在数据库创建多个表,以保存程序中实体的数据。,数据库服务器、数据库和表的关系如图所示:,北京传智播客教育数据库服务器、数据库和表的关系MySQLDB,北京传智播客教育,数据在数据库中的存储方式,id=1,name=“lisi”,age=23,User,对象,User,表,id=2,name=“wang”,age=24,行,(row),列,(column),表的一行称之为一条记录,表中一条记录对应一个,java,对象的数据,User,对象,北京传智播客教育数据在数据库中的存储方式id=1User对象,北京传智播客教育,创建数据库,CREATE DATABASE IF NOT EXISTS,db_name,create_specification,create_specification, .,create_specification,:,DEFAULT CHARACTER SET,charset_name,| DEFAULT COLLATE,collation_name,CHARACTER SET,:指定数据库采用的字符集,COLLATE,:指定数据库字符集的比较方式,练习:,创建一个名称为,mydb1,的数据库。,创建一个使用,utf-8,字符集的,mydb2,数据库。,创建一个使用,utf-8,字符集,并带校对规则的,mydb3,数据库。,北京传智播客教育创建数据库CREATE DATABASE,北京传智播客教育,查看、删除数据库,显示数据库语句:,SHOW DATABASES,显示数据库创建语句:,SHOW CREATE DATABASE,db_name,数据库删除语句:,DROP DATABASE IF EXISTS,db_name,练习:,查看当前数据库服务器中的所有数据库,查看前面创建的,mydb2,数据库的定义信息,删除前面创建的,mydb1,数据库,北京传智播客教育查看、删除数据库显示数据库语句:练习:,北京传智播客教育,修改、备份、恢复数据库,ALTER DATABASE IF NOT EXISTS,db_name,alter_specification,alter_specification, .,alter_specification,:,DEFAULT CHARACTER SET,charset_name,| DEFAULT COLLATE,collation_name,备份数据库表中的数据,mysqldump -u,用户名,-p,数据库名,文件名,.sql,恢复数据库,Source,文件名,.sql,练习,查看服务器中的数据库,并把其中某一个库的字符集修改为,utf8;,备份,test,库中的数据,并恢复,北京传智播客教育修改、备份、恢复数据库ALTER DATA,北京传智播客教育,创建表,(,基本语句,),CREATE TABLE table_name,(,field1 datatype,field2 datatype,field3 datatype,)character set,字符集,collate,校对规则,field,:指定列名,datatype,:指定列类型,注意:创建表时,要根据需保存的数据创建相应的列,并根据数据的类型定义相应的列类型。例:,user,对象,id int,name string,password string,birthday date,注意:创建表前,要先使用,use db,语句使用库。,北京传智播客教育创建表(基本语句)CREATE TABLE,北京传智播客教育,MySQL,常用数据类型,VARCHAR,、,BLOB,和,TEXT,类是变长类型。每个类型的存储需求取决于列值的实际长度。,北京传智播客教育MySQL常用数据类型VARCHAR、BLO,北京传智播客教育,创建表练习,创建一个员工表,北京传智播客教育创建表练习创建一个员工表,北京传智播客教育,修改表,使用,ALTER TABLE,语句追加,修改,或删除列的语法,.,ALTER TABLE,table,ADD,(,column datatype,DEFAULT,expr,column datatype,.);,ALTER TABLE,table,MODIFY,(,column datatype,DEFAULT,expr,column datatype,.);,ALTER TABLE,table,DROP,(,column,);,修改表的名称:,Rename table,表名,to,新表名,修改表的字符集:,alter table student character set utf8;,北京传智播客教育修改表使用 ALTER TABLE 语句追加,北京传智播客教育,修改表,练习,在上面员工表的基本上增加一个,image,列。,修改,job,列,使其长度为,60,。,删除,sex,列。,表名改为,user,。,修改表的字符集为,utf-8,列名,name,修改为,username,alter table user,change,column name username varchar(20);,北京传智播客教育修改表练习,北京传智播客教育,北京传智播客教育,北京传智播客教育,数据库,CRUD,语句,Insert,语句,(,增加数据,),Update,语句,(,更新数据,),Delete,语句,(,删除数据,),Select,语句,(,查找数据,),北京传智播客教育数据库CRUD语句Insert语句 (,北京传智播客教育,Insert,语句,INSERT INTO,table,(,column, column.,),VALUES,(value, value.,);,使用,INSERT,语句向表中插入数据。,插入的数据应与字段的数据类型相同。,数据的大小应在列的规定范围内,例如:不能将一个长度为,80,的字符串加入到长度为,40,的列中。,在,values,中列出的数据位置必须与被加入的列的排列位置相对应。,字符和日期型数据应包含在,单引号,中。,插入空值,不指定或,insert into table value(null),北京传智播客教育Insert语句INSERT INTOta,北京传智播客教育,Insert,语句练习,练习:使用,insert,语句向表中插入三个员工的信息。,注意:字符和日期要包含在单引号中。,show variables like character%;,set character_set_results=gbk;,北京传智播客教育Insert语句练习练习:使用insert语,北京传智播客教育,Update,语句,UPDATE,tbl_name,SET,col_name1,=,expr1,col_name2,=,expr2,.,WHERE,where_definition,使用,update,语句修改表中数据。,UPDATE,语法可以用新值更新原有表行中的各列。,SET,子句指示要修改哪些列和要给予哪些值。,WHERE,子句指定应更新哪些行。如没有,WHERE,子句,则更新所有的行。,北京传智播客教育Update语句UPDATE tbl_na,北京传智播客教育,Update,语句练习,练习:在上面创建的,employee,表中修改表中的纪录。,要求,将所有员工薪水修改为,5000,元。,将姓名为,zs,的员工薪水修改为,3000,元。,将姓名为,aaa,的员工薪水修改为,4000,元,job,改为,ccc,。,将,wu,的薪水在原有基础上增加,1000,元。,北京传智播客教育Update语句练习练习:在上面创建的emp,北京传智播客教育,Delete,语句,delete from,tbl_name,WHERE,where_definition,使用,delete,语句删除表中数据。,如果不使用,where,子句,将删除表中所有数据。,Delete,语句不能删除某一列的值(可使用,update,),使用,delete,语句仅删除记录,不删除表本身。如要删除表,使用,drop table,语句。,同,insert,和,update,一样,从一个表中删除记录将引起其它表的参照完整性问题,在修改数据库数据时,头脑中应该始终不要忘记这个潜在的问题。,删除表中数据也可使用,TRUNCATE TABLE,语句,它和,delete,有所不同,参看,mysql,文档。,北京传智播客教育Delete语句delete from tb,北京传智播客教育,Delete,语句练习,删除表中名称为,zs,的记录。,删除表中所有记录。,使用,truncate,删除表中记录。,北京传智播客教育Delete语句练习删除表中名称为zs的,北京传智播客教育,Select,语句,(1),SELECT,DISTINCT, *|,column,1,column,2.,column,3.,FROM,table;,Select,指定查询哪些列的数据。,column,指定列名。,*,号代表查询所有列。,From,指定查询哪张表。,DISTINCT,可选,指显示结果时,是否剔除重复数据,基本,select,语句,北京传智播客教育Select语句(1)SELECT DIS,北京传智播客教育,Select,语句,(1),练习:,查询表中所有学生的信息。,查询表中所有学生的姓名和对应的英语成绩。,过滤表中重复数据。,北京传智播客教育Select语句(1)练习:,北京传智播客教育,Select,语句,(,),SELECT *|,column,1,expression,column,2,expression,,,.,FROM,table;,在,select,语句中可使用表达式对查询的列进行运算,在,select,语句中可使用,as,语句,SELECT,column as,别名,from,表名,;,北京传智播客教育Select语句()SELECT *|c,北京传智播客教育,Select,语句,(,),练习,在所有学生分数上加,10,分特长分。,统计每个学生的总分。,使用别名表示学生分数。,北京传智播客教育Select语句()练习,北京传智播客教育,Select,语句,(3),使用,where,子句,,进行过滤查询。,练习:,查询姓名为,wu,的学生成绩,查询英语成绩大于,90,分的同学,查询总分大于,200,分的所有同学,北京传智播客教育Select语句(3)使用where子句,进,北京传智播客教育,Select,语句,(,),在,where,子句中经常使用的运算符,Like,语句中,,%,代表零个或多个任意字符,,_,代表一个字符,例,first_name like _a%;,北京传智播客教育Select语句()在where子句中经常,北京传智播客教育,Select,语句,(4),查询英语分数在,80,90,之间的同学。,查询数学分数为,89,90,91,的同学。,查询所有姓李的学生成绩。,查询数学分,80,,语文分,80,的同学。,北京传智播客教育Select语句(4)查询英语分数在 80,北京传智播客教育,Select,语句,(,),SELECT,column,1,column,2.,column,3.,FROM,table;,order by column asc|desc,Order by,指定排序的列,排序的列即可是表中的列名,也可以是,select,语句后指定的列名。,Asc,升序、,Desc,降序,ORDER BY,子句应位于,SELECT,语句的结尾。,练习:,对数学成绩排序后输出。,对总分排序后输出,然后再按从高到低的顺序输出,对姓李的学生成绩排序输出,使用,order by,子句排序查询结果。,北京传智播客教育Select语句()SELECT colu,北京传智播客教育,合计函数,count,Select count(*)|count(,列名,) from tablename,WHERE,where_definition,练习:,统计一个班级共有多少学生?,统计数学成绩大于,90,的学生有多少个?,统计总分大于,250,的人数有多少?,Count(,列名,),返回某一列,行的总数,北京传智播客教育合计函数countSelect count,北京传智播客教育,合计函数,SUM,Select sum(,列名,),sum(,列名,),from tablename,WHERE,where_definition,练习:,统计一个班级数学总成绩?,统计一个班级语文、英语、数学各科的总成绩,统计一个班级语文、英语、数学的成绩总和,统计一个班级语文成绩平均分,注意:,sum,仅对数值起作用,否则会报错。,注意:对多列求和,“,”号不能少。,Sum,函数返回满足,where,条件的行的和,北京传智播客教育合计函数SUMSelect sum(列名),北京传智播客教育,合计函数,AVG,Select sum(,列名,),sum(,列名,),from tablename,WHERE,where_definition,练习:,求一个班级数学平均分?,求一个班级总分平均分,AVG,函数返回满足,where,条件的一列的平均值,北京传智播客教育合计函数AVGSelect sum(列名),北京传智播客教育,合计函数,MAX/MIN,Select max(,列名,),from tablename,WHERE,where_definition,练习:,求班级最高分和最低分(数值范围在统计中特别有用),Max/min,函数返回满足,where,条件的一列的最大,/,最小值,北京传智播客教育合计函数MAX/MINSelect max,北京传智播客教育,Select,语句,(6),SELECT,column,1,column,2.,column,3. FROM,table;,group by column,练习:对订单表中商品归类后,显示每一类商品的总价,使用,group by,子句对列进行分组,SELECT,column,1,column,2.,column,3.,FROM,table;,group by column having .,使用,having,子句过滤,练习:,查询购买了几类商品,并且每类总价大于,100,的商品,Having,和,where,均可实现过滤,但在,having,可以使用合计函数,having,通常跟在,group by,后,它作用于组。,北京传智播客教育Select语句(6)SELECT colu,北京传智播客教育,时间日期相关函数,示例:,select addtime(02:30:30,01:01:01);,注意:字符串、时间日期的引号问题,select date_add(entry_date,INTERVAL 2 year) from student;,增加两年,select addtime(time,1 1-1 10:09:09) from student;,时间戳上增加,,注意年后没有,-,北京传智播客教育时间日期相关函数示例:select addt,北京传智播客教育,字符串相关函数,北京传智播客教育字符串相关函数,北京传智播客教育,数学相关函数,北京传智播客教育数学相关函数,北京传智播客教育,定义表的约束,定义主键约束,primary key:,不允许为空,不允许重复,删除主键:,alter table tablename drop primary key ;,定义主键自动增长,auto_increment,定义唯一约束,unique,定义非空约束,not null,定义外键约束,constraint ordersid_FK foreign key(ordersid) references orders(id),北京传智播客教育定义表的约束定义主键约束,北京传智播客教育,Tip,:,mysql,中文乱码,mysql,有六处使用了字符集,分别为:,client,、,connection,、,database,、,results,、,server,、,system,。,client,是客户端使用的字符集。,connection,是连接数据库的字符集设置类型,如果程序没有指明连接数据库使用的字符集类型就按照服务器端默认的字符集设置。,database,是数据库服务器中某个库使用的字符集设定,如果建库时没有指明,将使用服务器安装时指定的字符集设置。,results,是数据库给客户端返回时使用的字符集设定,如果没有指明,使用服务器默认的字符集。,server,是服务器安装时指定的默认字符集设定。,system,是数据库系统使用的字符集设定。,北京传智播客教育Tip:mysql中文乱码mysql有六处使,
展开阅读全文