




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、高级软件人才实作培训专家高级软件人才实作培训专家! !1SQL(SQL(结构化查询语言结构化查询语言) ) 入门入门高级软件人才实作培训专家高级软件人才实作培训专家! !2MySQLMySQL简介简介l数据库简介Oracle、 SQLServer、 DB2MySQL(Linux+Apache+Mysql+Php)SyBase 、InformixlMySQL数据库的安装和配置l使用命令行窗口连接MYSQL数据库mysql u 用户名 p 回车密码高级软件人才实作培训专家高级软件人才实作培训专家! !3数据库服务器、数据库和表的关系数据库服务器、数据库和表的关系MySQL程序DB1DB2表1表3表
2、2Client程序l所谓安装数据库服务器,只是在机器上装了一个数据库管理程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。l为保存应用中的数据,一般会在数据库创建多个表,以保存程序中的数据。l数据库服务器、数据库和表的关系如图所示:高级软件人才实作培训专家高级软件人才实作培训专家! !4数据在数据库中的存储方式数据在数据库中的存储方式id=1name=“lisi”age=23User对象User表id=2name=“wang”age=24行(row)列(column)l表的一行称之为一条记录l表中一条记录对应一个java对象的数据User对象高级软件人才实作培训
3、专家高级软件人才实作培训专家! !5创建数据库CREATE DATABASE IF NOT EXISTS db_name create_specification , create_specification . create_specification: DEFAULT CHARACTER SET charset_name | DEFAULT COLLATE collation_name lCHARACTER SET:指定数据库采用的字符集lCOLLATE:指定数据库字符集的比较方式、规则,比如排序l练习:创建一个名称为mydb1的数据库。创建一个使用utf8字符集的mydb2数据库。创建一
4、个使用utf8字符集,并带校对规则的mydb3数据库。高级软件人才实作培训专家高级软件人才实作培训专家! !6查看、删除数据库显示数据库语句:SHOW DATABASES显示数据库创建语句:SHOW CREATE DATABASE db_name使用数据库USE db_name数据库删除语句:DROP DATABASE IF EXISTS db_name l练习:查看当前数据库服务器中的所有数据库查看前面创建的mydb2数据库的定义信息删除前面创建的mydb1数据库高级软件人才实作培训专家高级软件人才实作培训专家! !7修改、备份、恢复数据库数据ALTER DATABASE IF NOT EX
5、ISTS db_name alter_specification , alter_specification . alter_specification: DEFAULT CHARACTER SET charset_name | DEFAULT COLLATE collation_namel备份数据库表中的数据(退到window命令行窗口)mysqldump -u 用户名 -p 数据库名 D:文件名.sqll恢复数据库(进入mysql控制台)source D:文件名.sqll练习l 查看服务器中的数据库,并把其中mydb3库的字符集修改为utf8。l 备份mydb3库中的数据,并恢复。高级软件
6、人才实作培训专家高级软件人才实作培训专家! !8创建表(基本语句)CREATE TABLE table_name(field1 datatype,field2 datatype,field3 datatype,)character set 字符集字符集 collate 校对规则校对规则field:指定列名datatype:指定列类型l注意:创建表时,要根据需保存的数据创建相应的列,并根据数据的类型定义相应的列类型。例:user对象id int name stringpassword stringbirthday datel注意:创建表前,要先使用use dbname语句使用库。高级软件人才实作
7、培训专家高级软件人才实作培训专家! !9MySQL常用数据类型lVARCHAR、BLOB和TEXT类是变长类型。每个类型的存储需求取决于列值的实际长度。 分类数据类型说明数值类型BIT(M)TINYINT UNSIGNED ZEROFILL BOOL,BOOLEAN SMALLINT UNSIGNED ZEROFILL INT UNSIGNED ZEROFILL BIGINT UNSIGNED ZEROFILL FLOAT(M,D) UNSIGNED ZEROFILL DOUBLE(M,D) UNSIGNED ZEROFILL 位类型。M指定位数,默认值1,范围1-64带符号的范围是-128到
8、127。无符号0到255。使用0或1表示真或假2的16次方2的32次方2的64次方M指定显示长度,d指定小数位数表示比float精度更大的小数文本、二进制类型CHAR(size) char(20)VARCHAR(size) varchar(20)BLOB LONGBLOBTEXT(clob) LONGTEXT(longclob)固定长度字符串可变长度字符串二进制数据大文本时间日期DATE/DATETIME/TimeStamp(登录时间)日期类型(YYYY-MM-DD) (YYYY-MM-DD HH:MM:SS),TimeStamp表示时间戳,它可用于自动记录insert、update操作的时间
9、高级软件人才实作培训专家高级软件人才实作培训专家! !10创建表练习l创建/查看一个员工表(并指明字符集为UTF8)字段属性Id整形name字符型sex字符型brithday日期型entry_date日期型Job字符型salary小数型resume大文本型高级软件人才实作培训专家高级软件人才实作培训专家! !11修改表使用 ALTER TABLE 语句追加, 修改, 或删除列的语法.ALTER TABLE tableADD (column datatype DEFAULT expr , column datatype.);ALTER TABLE tableMODIFY (column data
10、type DEFAULT expr , column datatype.);ALTER TABLE tableDROP (column);修改表的名称:Rename table 原表名 to 新表名修改表的字符集:alter table student character set utf8;高级软件人才实作培训专家高级软件人才实作培训专家! !12修改表l练习在上面员工表的基本上增加一个image列。修改job列,使其长度为60。删除sex列。表名改为user。修改表的字符集为utf8。列名name修改为username。alter table user change column name
11、username varchar(20);高级软件人才实作培训专家高级软件人才实作培训专家! !13数据库CRUD语句lInsert语句 (增加数据)lUpdate语句 (更新数据)lDelete语句 (删除数据)lSelect语句(查找数据)高级软件人才实作培训专家高级软件人才实作培训专家! !14Insert语句employee.sqlINSERT INTOtable (column , column.)VALUES(value , value.);l使用 INSERT 语句向表中插入数据。l插入的数据应与字段的数据类型相同。l数据的大小应在列的规定范围内,例如:不能将一个长度为80的字符
12、串加入到长度为40的列中。l在values中列出的数据位置必须与被加入的列的排列位置相对应。l字符和日期型数据应包含在单引号中。字符和日期型数据应包含在单引号中。l插入空值,不指定或insert into table value(null)高级软件人才实作培训专家高级软件人才实作培训专家! !15Insert语句练习l练习:使用insert语句向表中插入三个员工的信息(英中文)。字段名字段类型id整形name字符串型sex字符串型birthday日期型salary浮点型entry_date日期型resume大文本型l注意:字符和日期要包含在单引号中。lshow variables like c
13、haracter%;lset character_set_results=gbk;高级软件人才实作培训专家高级软件人才实作培训专家! !16Update语句UPDATE tbl_name SET col_name1=expr1 , col_name2=expr2 . WHERE where_definition l使用 update语句修改表中数据。lUPDATE语法可以用新值更新原有表行中的各列。lSET子句指示要修改哪些列和要给予哪些值。lWHERE子句指定应更新哪些行。如没有WHERE子句,则更新所有的行。高级软件人才实作培训专家高级软件人才实作培训专家! !17Update语句练习l练
14、习:创建的employee表中修改表中的纪录。l要求l将所有员工薪水修改为3000元。l将姓名为张小明的员工薪水修改为4000元。l将张小明的薪水在原有基础上增加1000元。高级软件人才实作培训专家高级软件人才实作培训专家! !18Delete语句delete from tbl_name WHERE where_definition l使用 delete语句删除表中数据。l如果不使用where子句,将删除表中所有数据。lDelete语句不能删除某一列的值(可使用update)l使用delete语句仅删除记录,不删除表本身。如要删除表,使用drop table语句。l同insert和update
15、一样,从一个表中删除记录将引起其它表的参照完整性问题,在修改数据库数据时,头脑中应该始终不要忘记这个潜在的问题。l删除表中数据也可使用TRUNCATE TABLE 语句,它和delete有所不同。lTRUNCATE(复制表结构-销毁表-重建表结构)lDELETE(逐行删除记录)高级软件人才实作培训专家高级软件人才实作培训专家! !19Delete语句练习l删除表中名称为zs的记录。l删除表中所有记录。l使用truncate删除表中记录。高级软件人才实作培训专家高级软件人才实作培训专家! !20Select语句(1)student.sqlSELECT DISTINCT *|column1, co
16、lumn2. column3.FROMtable;lSelect 指定查询哪些列的数据。lcolumn指定列名。l*号代表查询所有列(开发中建议不要使用)。lFrom指定查询哪张表。lDISTINCT可选,指显示结果时,是否剔除重复数据l基本select语句高级软件人才实作培训专家高级软件人才实作培训专家! !21Select语句(1)l练习:l查询表中所有学生的信息。l查询表中所有学生的姓名和对应的英语成绩。l过滤表中重复数据。高级软件人才实作培训专家高级软件人才实作培训专家! !22Select语句()SELECT *|column1expression, column2expressio
17、n,.FROMtable;l在select语句中可使用表达式对查询的列进行运算l在select语句中可使用as语句SELECT column as 别名别名 from 表名表名;高级软件人才实作培训专家高级软件人才实作培训专家! !23Select语句()l练习l在所有学生分数上加10分特长分。l统计每个学生的总分。l使用别名表示学生分数。高级软件人才实作培训专家高级软件人才实作培训专家! !24Select语句(3)l使用where子句,进行过滤查询。l查询姓名为张小明的学生成绩l查询英语成绩大于90分的同学l查询总分大于200分的所有同学高级软件人才实作培训专家高级软件人才实作培训专家!
18、!25Select语句()l在where子句中经常使用的运算符比较运算符 = = 大于、小于、大于(小于)等于、不等于BETWEEN .AND.显示在某一区间的值IN(set)显示在in列表中的值,例:in(100,200)LIKE 张张pattern模糊查询IS NULL/IS NOT NULL判断是否为空逻辑运算符and多个条件同时成立or多个条件任一成立not不成立,例:where not(salary100);Like语句中,% 代表零个或多个任意字符,_ 代表一个字符,例first_name like _a%;高级软件人才实作培训专家高级软件人才实作培训专家! !26Select语句
19、(4)l查询英语分数在 8090之间的同学。l查询数学分数为89,90,91的同学。l查询所有姓李的学生成绩。l查询数学分80且语文分80的同学。高级软件人才实作培训专家高级软件人才实作培训专家! !27Select语句()SELECT column1, column2. column3.FROMtable;order by column asc|desclOrder by 指定排序的列,排序的列即可是表中的列名,也可以是select 语句后指定的列名。lAsc 升序、Desc 降序lORDER BY 子句应位于SELECT语句的结尾。l练习:l对数学成绩排序后输出。l对总分排序后输出。l对姓
20、李的学生总分排序输出。l使用order by 子句排序查询结果。高级软件人才实作培训专家高级软件人才实作培训专家! !28合计函数count()Select count(*)|count(列名列名) from tablenameWHERE where_definition l练习:l统计一个班级共有多少学生?l统计数学成绩大于80的学生有多少个?l统计总分大于250的人数有多少?lCount(列名)返回某一列,行的总数,除null外高级软件人才实作培训专家高级软件人才实作培训专家! !29合计函数sum()Select sum(列名列名),sum(列名列名) from tablenameWHE
21、RE where_definition l练习:l统计一个班级数学总成绩。l统计一个班级语文、英语、数学各科的总成绩。l统计一个班级语文、英语、数学的成绩总和。l统计一个班级语文成绩平均分。l注意:sum仅对数值起作用,否则会报错。l注意:对多列求和,“,”号不能少。lSum函数返回满足where条件的行的和高级软件人才实作培训专家高级软件人才实作培训专家! !30平均函数avg()Select sum(列名列名),sum(列名列名) from tablenameWHERE where_definition l练习:l求一个班级数学平均分。l求一个班级总分平均分。lAVG函数返回满足where
22、条件的一列的平均值高级软件人才实作培训专家高级软件人才实作培训专家! !31最大最小值函数max()/min()Select max(列名列名)from tablenameWHERE where_definition l练习:l求班级最高分和最低分。(数值范围在统计中特别有用)lMax/min函数返回满足where条件的一列的最大/最小值高级软件人才实作培训专家高级软件人才实作培训专家! !32Select语句(6)orders.sqlSELECT column1, column2. column3. FROM table;group by columnl练习:对订单表中商品归类后,显示每一类
23、商品的总价l使用group by 子句对列进行分组SELECT column1, column2. column3.FROMtable;group by column having .l使用having 子句组过滤l练习:查询购买了几类商品,并且每类总价大于100的商品lHaving和和where均可实现过滤,但在均可实现过滤,但在having可以使用合计函数可以使用合计函数,having通常跟在通常跟在group by后,它作用于组。后,它作用于组。高级软件人才实作培训专家高级软件人才实作培训专家! !33定义表的约束(数据安全的保证)l定义主键约束l primary key:不允许为空,不
24、允许重复l删除主键:alter table tablename drop primary key ;l定义主键自动增长l auto_increment(MySQL特有/UUID类生成)l定义唯一约束l uniquel定义非空约束l not nulll定义外键约束lconstraint ordersid_FK foreign key(ordersid) references orders(id),高级软件人才实作培训专家高级软件人才实作培训专家! !34表的关联设计(实体关系的体现)l一对一l人和身份证(外键唯一非空/主键外键合二唯一)l一对多/多对一l部门和员工l多对多(中间表)l老师和学生l
25、1号老师所对应的学员l1号学员所对应的老师高级软件人才实作培训专家高级软件人才实作培训专家! !35TipTip:mysqlmysql中文乱码中文乱码lmysql有六处使用了字符集,分别为:client 、connection、database、results、server 、system。client是客户端使用的字符集。 connection是连接数据库的字符集设置类型,如果程序没有指明连接数据库使用的字符集类型就按照服务器端默认的字符集设置。 database是数据库服务器中某个库使用的字符集设定,如果建库时没有指明,将使用服务器安装时指定的字符集设置。 results是数据库给客户端返
26、回时使用的字符集设定,如果没有指明,使用服务器默认的字符集。 server是服务器安装时指定的默认字符集设定/utf8。 system是数据库系统使用的字符集设定。高级软件人才实作培训专家高级软件人才实作培训专家! !36附录:时间日期相关函数参考ADDTIME (date2 ,time_interval )将将time_interval加到加到date2CURRENT_DATE ( )当前日期当前日期CURRENT_TIME ( )当前时间当前时间CURRENT_TIMESTAMP ( )当前时间戳当前时间戳DATE (datetime )返回返回datetime的日期部分的日期部分DATE
27、_ADD (date2 , INTERVAL d_value d_type )在在date2中加上日期或时间中加上日期或时间DATE_SUB (date2 , INTERVAL d_value d_type )在在date2上减去一个时间上减去一个时间DATEDIFF (date1 ,date2 )两个日期差两个日期差NOW ( )当前时间当前时间YEAR|Month|DAY (datetime )年月日年月日示例:select addtime(02:30:30,01:01:01); 注意:字符串、时间日期的引号问题 select date_add(entry_date,INTERVAL 2
28、year) from student;增加两年select addtime(time,1 1-1 10:09:09) from student;时间戳上增加,注意年后没有-高级软件人才实作培训专家高级软件人才实作培训专家! !37附录:字符串相关函数参考CHARSET(str)返回字串字符集返回字串字符集CONCAT (string2 ,. )连接字串连接字串INSTR (string ,substring )返回返回substring在在string中出现的位置中出现的位置,没有返回没有返回0UCASE (string2 )转换成大写转换成大写LCASE (string2 )转换成小写转换成小写LEFT (str
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030年中国米非司酮片行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030年中国管内检测机器人行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030年中国积累链行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030年中国禁烟产品行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030年中国磁共振脉搏血氧仪行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030年中国真空发生器行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030年中国直接面向消费者的远程医疗服务行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030年中国盐湖电池级行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030年中国疫苗合同制造行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030年中国生物聚合物涂层行业市场现状供需分析及投资评估规划分析研究报告
- 服装零售售后服务与退换货流程
- 肝衰竭诊治指南(2024年版)解读
- 2025-2030年中国预付卡行业运行现状及发展前景预测报告
- 【物理】跨学科实践:制作简易杆秤 2024-2025学年物理人教版八年级下册
- 马铃薯种薯繁育示范基地建设项目可行性研究报告
- 不良事件分级及上报流程
- 申请做女朋友的申请书
- 【语文】第18课《井冈翠竹》课件 2024-2025学年统编版语文七年级下册
- 家电店庆活动方案范文
- 《特种设备无损检测机构检测能力确认 工作导则》
- 医疗纠纷鉴定委员会工作制度及职责
评论
0/150
提交评论