MySQLday01.docx
《MySQLday01.docx》由会员分享,可在线阅读,更多相关《MySQLday01.docx(35页珍藏版)》请在冰点文库上搜索。
![MySQLday01.docx](https://file1.bingdoc.com/fileroot1/2023-5/5/71ef81cc-0c4d-412a-972b-27fe7b9a4542/71ef81cc-0c4d-412a-972b-27fe7b9a45421.gif)
MySQLday01
mysqlday01
今天主要课程内容
1.mysql数据库安装和配置
2.数据库的操作语句sql
3.SQL语句---数据库相关操作语句
4.SQL语句---数据表结构操作语句
5.SQL语句---数据表记录简单查询语句
1.数据库概述
1.1.什么是数据库
数据库是一个文件系统。
通过标准SQL语言操作文件系统中数据----用来存放软件系统的数据
1.2.常用数据库简介
Oracle甲骨文公司,专门数据库厂商收购SUN、MySQL-------收费大型数据库,用于任何系统任何平台
MySQL早期开源免费数据库产品,LAMP组合Linux+Apache+MySQL+PHP完全开源免费,自从mysql被oracle收购后,从6.0开始出现收费版本
DB2IBM数据库产品大型收费数据库websphere服务器一起使用
SYBASE中等规模数据库收费PowerDesigner数据库建模工具
SQLServer微软公司数据库产品收费中等规模数据库,操作系统要求是windows结合.net一起使用
Java开发者主要使用MySQL、Oracle、DB2三种数据库
2.MySQL安装配置和卸载
1:
卸载软件:
控制面板--mysql卸载
找到该隐藏目录数据库存放存储的数据目录一般是隐藏的
cmd-->运行复制该目录
找到隐藏目录删除mysql目录名以及下所有子目录在控制面板卸载Mysql软件!
2:
安装mysql到电脑双击下发软件下一步
安装在电脑访问数据主机名+portmysql默认端口号3306一般不改!
修改数据库存储数据默认编码utf-8
选择编码第二个!
mysql环境变量可以dos窗口执行mysql命令
数据库访问准备操作用户默认设置管理员密码名称:
root固定密码:
root
勾选表示Mysql可以远程访问
最后一步点击执行完成!
!
安装完成!
测试:
数据库是否安装成功!
输入mysql命令
出现下拉字符显示表示成功!
!
手动输入mysql登录命令登录数据库
-uuser登录用户名root密码-ppasswordroot
学习sql语句操作数据库了!
!
注意win8安装可能25022503错误.
右击开始菜单以管理员运行cmd窗口
输入msiexec/package/mysql安装文件所在位置!
!
!
数据库进行配置
1、安装mysql数据库
字符集设置:
选择自定义安装注意点最后一步设置用户名root和密码root
MySQLServer默认位置c:
\programfiles\mysql目录
在安装目录下有Mysql的主配置文件my.ini编辑器打开找到类似该处:
datadir="C:
/DocumentsandSettings/AllUsers/ApplicationData/MySQL/MySQLServer5.5/Data/"可以在运行-->直接复制此目录即可打开该隐藏目录
此目录是数据库保存数据文件目录卸载软件该目录默认不会被删除的.
C:
\DocumentsandSettings\AllUsers\ApplicationData\MySQL目录
当你需要卸载的时候需要将此目录删除。
因为windoes默认卸载不会删除此目录的。
否则会导致重新安装数据库失败!
2安装过程中需要进行mysql配置
1)配置mysql默认字符集
默认latin1等价于ISO-8859-1改为utf8
2)IncludeBinDirectoryinWindowPath将mysql/bin目录配置环境变量path----勾选
可以帮助我们快速进入mysql数据库的主界面自动配置好mysql的环境变量
3)输入超级管理root密码密码的输入要知道系统默认的用户名管理员:
root
测试mysql是否安装成功启动cmd窗口输入mysql-uroot-p回车输入密码123====出现mysql>安装成功
3、重置root密码一般人都不会重置密码的!
!
知道了解即可!
1)停止mysql服务器运行输入services.msc停止mysql服务
2)在cmd下输入mysqld--skip-grant-tables启动服务器光标不动(不要关闭该窗口)
3)新打开cmd输入mysql-uroot-p不需要密码
usemysql;
updateusersetpassword=password('abc')WHEREUser='root';
4)关闭两个cmd窗口在任务管理器结束mysqld进程
5)在服务管理页面重启mysql服务
密码修改完成
4、卸载注意点!
在mysql安装目录my.ini
datadir="C:
/DocumentsandSettings/AllUsers/ApplicationData/MySQL/MySQLServer5.5/Data/"此目录是安装mysql数据存放目录一定要删除
步骤:
1)在控制面板中卸载MySQL
2)删除mysql安装目录
3)删除MySQL数据文件目录参看上述目录路径此目录是隐藏的需要通过my.ini文件查找用编辑器打开此文件查找datadir的路径位置!
3.Mysql数据库存储结构
3.1.MySQL服务器内部存储结果说明
数据库存储数据的结构说明
mysql数据库服务器可以创建多个数据库database每个database都是独立的
每一个数据库可以创建多张数据表table开发中一般是一个工程对应一个数据库
每张数据表用来保存数据记录表示数据库的基本单元表对应java对象
访问下数据库:
cmd登录数据库
查看默认的database四个
显示当前mysql有多少database
默认四个数据库
操作指定的数据库use命令use数据库名称;--代表注释
查看当前数据库select+函数名特殊关键字();相当于方法功能!
SQL语句(简称:
结构化查询语句)
特点:
非过程性一条SQL语句一个执行结果
为了使用SQL编写复杂程序,各个数据库厂商对SQL进行增强,SQLServerTSQL、OraclePLSQL。
3.2.SQL语句分类按功能(定义、管理、控制、查询)分类
需要掌握:
DMLDDL了解DCL
SQL语句学习流程:
库--->表---->表中记录
数据库操作语句----->数据表结构操作语句---->数据表记录操作语句
4.MyEclipse链接数据库配置操作
如图:
1:
myeclipse打开DBbrowser视图
选择dbBrowser点击ok
配置myeclipse链接底层mysql目的:
通过eclipsesql语句操作数据库
右击空白地方点击new操作
选择自己操作数据库类型模板
jdbc:
mysql:
//localhost:
3306/testtestmysql数据库名称database.
选择模板MySql填写相关信息:
Drivername链接底层mysql起一个名词可以自定义
URL:
远程链接mysqlurl地址修改主机名和数据库名称即可
name:
rootpassword:
root
AddJARS需要链接的第三方jar导入即可
点击TestDriver如果出现xxxsuccessful相关信息表示成功!
链接配置成功!
打开链接双击连接名称
出现以上视图表示myeclipse成功链接上mysql数据库操作数据库了!
!
新建一个web工程在工程src先新建一个xxx.sql文件即可
展示
链接脚本可以操作test数据库
测试输入四条sql命令
结果:
每条语句对应一个result视图
至此myeclipse链接底层数据库mysql完成!
我们可以通过Myeclipse编写脚本来操作数据库
5.数据库操作语句sql语句
structed结构化query查询language语言
5.1.创建数据库
为每个软件系统创建单独数据库
语法:
createdatabase数据库名称;(创建数据库采用数据库服务器默认字符集)
复杂写法createdatabase数据库名称characterset字符集;
举例:
创建一个名称为mydb1的数据库。
createdatabasemydb1;
创建一个使用utf8字符集的mydb2数据库。
createdatabasemydb2charactersetutf8;
补充:
每次创建一个数据库在数据存放目录中生成一个文件夹,每个文件夹中存在db.opt存放默认字符集
datadir="C:
/DocumentsandSettings/AllUsers/ApplicationData/MySQL/MySQLServer5.5/Data/"
5.2.查询数据库
showdatabases;-----查看所有数据库
showcreatedatabase数据库名;------查看数据编码集
查看当前正在使用数据库:
selectdatabase();
切换当前使用数据库:
use数据库名称;
5.3.删除数据库
语法:
dropdatabase数据库名称;
查看当前数据库服务器中的所有数据库showdatabases;
查看前面创建的mydb2数据库的定义信息showcreatedatabasemydb2;
删除前面创建的mydb1数据库dropdatabasemydb1;
6.数据表结构SQL语句
6.1.数据表的创建
建表语法:
createtable表名(列名类型(长度),列名类型(长度)...);
一个数据表可以存在很多列,每列具有类型和长度
*创建表之前必须使用usedb语法指定操作数据库注意点!
表中的字段类型
javaint--->mysqlint
javashortsmallint
javabytetinyint
longbigint
doubledouble
java常用intdouble
mysql常用intdouble
字符串Stringvarchar&char
MySQL常用数据类型
java中Stringchar-----mysql中字符串型charvarchar
*char是定长varchar是变长
例如:
char(8)保存lisi,因为lisi只有四个字符,所有会补充四个空格,成为8个字符存入char(8)中,
如果有varchar(8)自动根据存放内容改变长度
java中byteshortintlongfloatdouble
mysql中数值类型TINYINT、SMALLINT、INT、BIGINT、FLOAT、DOUBLE
java中boolean----mysql逻辑性bit存放一位数值0或者1(一般不用)
java中Date-----mysql日期类型date(只有日期)time(只有时间)datetime(日期时间都有)timestamp(日期时间都有)
*datetime和timestamp表现形式上完全相同,区别就在于timestamp在数据库可以自定更新(当前时间)
java中大数据类型inputStream二进制文件Reader文本文件-------mysql大数据类型blob(存放大二进制数据)text(存放大的文本文件)
tinyblobtinytext255字节
blobtext64KB
mediumblobmediumtext16MB
longbloblongtext4GB
举例:
***创建数据表时,只有字符串类型必须写长度,而其他类型都有默认长度
员工表建表语句
createtableemployee(
idint,
namevarchar(20),
gendervarchar(20),
birthdaydate,
entry_datedate,
jobvarchar(30),
salarydouble,
resumelongtext
);查看表结构desc表名;
表创建有无问题?
6.2.单表创建时约束
约束用来保证数据有效性和完整性
1:
主键约束primarykey:
信息记录某个字段可以唯一区分其他信息记录,这个字段就可以是主键(唯一非空)
主键约束举例:
上述的情况是不可以发生的为了解决此种现象表必须存有主键
主键:
区分记录中不同记录的唯一字段该字段赋予主键称之主键约束
2:
唯一约束unique:
该字段的值不允许重复比如email邮箱是不可以重复的
*一张表中可以有很多个唯一约束可以设置多个字段联合作为主键--联合主键
3:
非空约束notnull:
该字段的值不能为空必须有值
4:
自增长:
属性一般用户主键的字段主键的类型如果是Int类型
我们可以让数据库帮助我们去维护主键的字段值,而用户在输入数据记录的时候
主键的字段值不需要去维护让数据库帮助我们去自动生成即可!
例如:
*如果主键约束类型为数值型intbigint,添加auto_increment自动增长
createtableemp(
idintprimarykeyauto_increment,主键自增长
namevarchar(20)uniquenotnull,非空唯一
gendervarchar(20)notnull,
birthdaydatenotnull,
entry_datedatenotnull,
jobvarchar(30)notnull,
salarydoublenotnull,
resumelongtext
);
6.3.数据表结构修改(拓展)
应用场景:
当一张数据库中表已经建立好结构并且也已经存有数据。
如果需要修改表的的部分字段的类型字段名或者属性。
。
。
那么可以采用alter进行修改
1)增加列语法:
altertable表名add列名类型(长度)约束;
例如:
altertableempaddcolumnsalarydouble(8,2)notnull;
2)修改现有列类型、长度和约束语法:
altertable表名modify列名类型(长度)约束;
3)修改现有列名称语法:
altertable表名change旧列名新列名类型(长度)约束;
4)删除现有列语法:
altertable表名drop列名;
5)修改表的字符集:
altertable表名charactersetutf8;
练习:
在上面员工表的基本上增加一个image列。
altertableuseraddcolumnimagevarchar(20);
修改job列,使其长度为60。
altertableusermodifycolumnjobvarchar(60);
删除gender列
altertableuserdropcolumngender;
查看当前数据库内所有表
showtables
4、数据表删除
语法:
droptable表名;
5、查看数据表结构
desc表名;查看表结构
showtables;查看当前库内所有表名
7.数据表中数据记录的增删改查操作
7.1.向数据表插入记录
语法:
insertinto表名(列名,列名,列名...)values(值,值,值...);为数据表的每列进行赋值
注意事项
1)插入值类型必须和列类型匹配
2)值长度不能超过列定义长度
3)值的顺序和列顺序对应
4)字符串和日期型值必须写单引号
5)插入空值可以写null
案例:
新建employee表,插入三个员工信息
Insertintoemployee
(id,name,gender,birthday,entry_date,job,salary,resume)values
(1,'zhangsan','male','1990-10-10','2010-01-01','sales',4000,'goodboy!
');
上述出现的列名称必须和对应的值一一对应并且类型要一致。
语法2:
省略所有列名,但是后面值必须要和表中所有列进行匹配,按照表中列顺序
insertintoemployeevalues(2,'lisi','male','1988-10-01','2008-08-17','hr',3500,'goodhr!
');
语法3:
省略可以为空,有默认值部分列名,后面值要和前面列进行匹配
列名称可以选择性的出现赋值
insertintoemployee(id,name,job,salary)values(3,'wangwu','boss',20000);
*在插入记录后,通过select*fromemployee;查看所有员工信息
*号代表该表中的全部数据显示出来。
7.2.数据记录更改操作
语法:
update表名set列名=值,列名=值....where条件语句;
*如果没有where条件语句,默认修改所有行数据
课堂练习题:
将所有员工薪水修改为5000元。
Updateusersetsalary=5000;
将姓名为’zhangsan’的员工薪水修改为3000元。
Updateusersetsalary=3000whereusername=’zhangsan’;
将姓名为’lisi’的员工薪水修改为4000元,job改为ccc。
Updateusersalary=4000,job=’ccc’whereusername=’lisi’;
将wangwu的薪水在原有基础上增加1000元。
Updateusersalary=salary+1000whereusername=’wangwu’;
7.3.数据记录的删除操作
语法:
deletefrom表名where条件语句;如果没有where语句,将删除表中所有记录
如果要删除表中所有数据记录,使用truncatetable表名;等价于deletefrom表名;
delete语句不能删除某一列的值(可使用update)针对记录的删除操作
使用delete语句仅删除记录,不删除表本身。
如要删除表,使用droptable语句。
面试题:
如果使用delete删除表中所有记录和使用truncatetable删除表中所有记录有何不同?
truncate删除数据,过程先将整个表删除,再重新创建
delete删除数据,逐行删除记录
*truncate效率要好于delete
truncate属于DDL,delete属于DML
事务管理只能对DML有效,被事务管理SQL语句可以回滚到SQL执行前状态
Truncate数据删除不能回滚相当于delete+commit
删除表中名称为’zhangsan’的记录。
------deletefromemployeewherename='zhangsan';
删除表中所有记录。
-----deletefromemployee;(可以事务回滚)
使用truncate删除表中记录。
----truncatetableemployee;
insertupdatedelete属于DML语句
7.4.数据表记录的查询
语法一:
select[distinct]*列名,列名...from表名;
select*from表名;查询该表中所有列信息
select列名,列名...from表名;查询表中指定列的信息
distinct用于排重
案例说明:
createtableexam(
idintprimarykeyauto_increment,
namevarchar(20)notnull,
chinesedouble,
mathdouble,
englishdouble
);
insertintoexamvalues(null,'关羽',85,76,70);
insertintoexamvalues(null,'张飞',70,75,70);
insertintoexamvalues(null,'赵云',90,65,95);
insertintoexamvalues(null,'刘备',null,55,38);
课堂练习:
1:
查询表中所有学生的信息。
Select*fromexam;
2:
查询表中所有学生的姓名和对应的英语成绩。
Selectname,englishfromexam;
3:
过滤表中重复数据(查询英语成绩,排除完全相同重复数据)
selectdistinct(english)fromexam;
语法二:
select表达式(列名执行运算)from表名;
select列名as别名from表名;
课堂练习:
1:
在所有学生分数上加10分特长分。
2:
统计每个学生的总分。
3:
使用别名表示学生分数。
***在对列起别名时,as可以省略
语法三:
select列名from表名where条件语句
课堂练习:
查询姓名为关羽的学生成绩
查询英语成绩大于90分的同学
查询总分大于200分的所有同学
7.4.1.查询之运算符
1)相等=不等<>
2)between...and...在两者之间取值between70and80等价于>=70<=80
-----