MySQL_01
A.概述
1.数据的存储
JavaSE:定义一个变量,都存储在内存里
当程序执行完毕,这个变量就从内存中消失
JavaSE-->IO流:针对文件进行存储
a.永久保存
b.频繁的使用IO流对数据进行读写,执行效率低
2.数据库软件
a.对数据永久保存
b.执行效率高
c.方便维护和管理
3.市面上常用的数据库软件
a.Oracle:是甲骨文公司的产品,和Java语言兼容性比较好,大型应用:JavaEE
b.MySQL:是开源的数据库,和Java语言兼容比较好,针对中小型的应用
c.SQLServer:微软公司产品,和net平台兼容性最好(C#)
d.DB2:是IBM公司的
e.manggoDB:noSQL
4.MySQL应用
a.下载:
下载安装版:安装----->配置mysql里面的参数
解压版:里面把一些关于使用dos登陆mysql的东西封装了,可能会出现问题
安装过程属于傻瓜式安装,在这就不介绍了
数据库的结构:
b.登陆检测:
进入cmd登陆mysql数据库
输入mysql -u root -p (root为安装时设置的用户名)
然后根据提示,输入密码(安装时设置的密码)
c.查看当前MySQL数据库里有哪些具体的数据库
通过show databases;命令查看
可以看出,有4个自带的数据库
5.退出数据库
exit;命令
B.操作库(数据库的创建,修改和删除)
1.创建一个数据库
create database mydb_01;
2.查看数据库中指定的字符集
show create database mydb_01;
3.修改数据库的字符集为gbk
alter database mydb_01 default character set gbk;
4.删除数据库
drop database mydb_01;
C.操作表(创建,修改和删除)
1.创建表
在创建一个表之前,要切换数据库,使用数据库(当前数据库在mysql存在)使用数据库:use mydb_01;
创建表:create table 表名(字段名称 字段类型, 字段名称 字段类型......)
2.查看表
show tables;
3.查看表结构
desc 表名
4.添加字段
添加一个性别字段:alter table student add column gender varchar(1);
alter table student add column gender varchar(1);
5.修改字段类型
将gender的长度改为2
alter table student modify column gender varchar(2);
6.修改字段名称
将gender改为sex
alter table student change column gender sex varchar(2);
![]()
7.删除字段名称
删除age
alter table student drop column age;
![]()
8.修改表名称
修改表名为teacher
alter table student rename to teacher;
![]()
9.删除表
drop table teacher;
D.管理数据
1.引入工具
在此,我使用的是SQLyogEnt,也可以使用其他的,如workbench等
2.创建一个表
执行哪一条指令,就选中,并点击运行
执行查看表语句-- 注释的文字:数据库中的注释"--空格" -- 创建数据库 CREATE DATABASE mydb_02; -- 执行哪一条语句,就在选中点击运行 -- 管理表 -- 选择哪一个数据库 USE mydb_02; -- 也可以直接在左侧工程栏点击mydb_02即可 -- 创建表 CREATE TABLE student( id INT, NAME VARCHAR(20), age INT ); -- 查看表 SHOW TABLES; -- 查看表的结构 DESC student;
执行查看表结构语句
3.插入数据
a.插入完整字段:insert into 表名 values(每个字段具体值);
查看查询结果-- 1.1插入数据(insert into 表名 values(每个字段的具体值)) INSERT INTO student VALUES(1,'张三',20); -- 查询当前表中所有的数据(SQL中重点) SELECT * FROM student;
b.插入数据的注意事项
c.插入部分字段:insert into 表名(插入字段类型) values(值);-- 插入数据的注意事项 -- 1) 插入字段的值和字段的信息的顺序一致 INSERT INTO student VALUES('张三',2,30);-- ERROR 1366 (HY000): Incorrect integer value: '????' for column 'id' at row 1 -- 2) 插入字段的数量要和创建表中参数的数量保持一致 INSERT INTO student VALUES(2,'李四');-- RROR 1136 Column count doesn't match value count at row 1
-- 1.2插入部分字段 INSERT INTO student(id,NAME) VALUES(2,'李四'); -- 查询当前表中所有的数据(SQL中重点) SELECT * FROM student;
![]()
4.修改数据
update表名 修改set 字段名称 = 值 where..);
a.批量修改
-- 1)批量修改(在实际开发中,不建议使用)! UPDATE student SET NAME = '张三'; -- 查询当前表中所有的数据(SQL中重点) SELECT * FROM student;
b.修改指定字段
-- 2)修改指定字段 UPDATE student SET NAME = '李四' WHERE id = 1; -- 查询当前表中所有的数据(SQL中重点) SELECT * FROM student;
![]()
c.修改多个字段
-- 3)修改多个字段 UPDATE student SET NAME = '王五',age = 30 WHERE id = 2; -- 查询当前表中所有的数据(SQL中重点) SELECT * FROM student;
![]()
5.删除数据delete from
a.删除制定数据数据
-- 删除id = 2 的字段 DELETE FROM student WHERE id = 2; -- 查询当前表中所有的数据(SQL中重点) SELECT * FROM student;
![]()
b.删除全数据
-- 删除全数据 DELETE FROM student; -- 查询当前表中所有的数据(SQL中重点) SELECT * FROM student;
![]()
c.删除全数据:truncate
truncate table:这个语法也是删除全表数据:只能删除全表数据,不能删除单个数据
TRUNCATE TABLE student;
6.面试题
delete from 和 truncate table的区别
a.delete from既可以删除全数据,又可以删除指定数据,而truncate 只能删除全数据
b.delete from可以回滚,而truncate不可以回滚
c.delete from不可以让自增长约束重置,truncate可以重置
(自增长重置,就是删除后,再添加数据,id重置从0开始,不重置,则从之前的最大值开始)
添加数据
-- 添加数据 INSERT INTO test(NAME,age) VALUES('张三',20); INSERT INTO test(NAME,age) VALUES('李四',25); -- 查询当前表中所有的数据(SQL中重点) SELECT * FROM test;
![]()
使用delete from删除所有,再添加并查看
-- 添加数据 INSERT INTO test(NAME,age) VALUES('张三',20); INSERT INTO test(NAME,age) VALUES('李四',25); -- 删除全数据 DELETE FROM test; -- 查询当前表中所有的数据(SQL中重点) SELECT * FROM test;
![]()
使用truncate table 删除再添加并查看
-- 添加数据 INSERT INTO test(NAME,age) VALUES('张三',20); INSERT INTO test(NAME,age) VALUES('李四',25); -- 删除全数据 TRUNCATE TABLE test; -- 查询当前表中所有的数据(SQL中重点) SELECT * FROM test;
![]()
7.数据查询(select)里面最基本语法
a.查询所有数据
SELECT * FROM student;
![]()
b.查询指定别名
-- 查询编号对应的学生姓名,并且指定别名 SELECT id AS '编号',NAME AS '姓名' FROM student;
![]()
as也可以省略
c.查询的时候指定字段
-- 查询编号对应的学生姓名 SELECT id,NAME FROM student;
![]()
d.查询时添加常量列
-- 查询的时候动态的添加指定的列 -- 查询id 别名 编号,name 姓名, 添加一个常量列'班级' 值为'javaEE' SELECT id AS '编号', NAME AS '姓名', 'JavaEE' AS '班级' FROM student;
![]()
e.查询时合并列
-- 查询学生姓名对应的总成绩 -- 添加两个字段:java,mysql ALTER TABLE student ADD COLUMN Java INT; ALTER TABLE student ADD COLUMN mysql INT; -- 修改数据 UPDATE student SET Java = 90, mysql = 85 WHERE id = 1; UPDATE student SET Java = 88, mysql = 86 WHERE id = 2; -- 查询 SELECT * FROM student;
![]()
现在合并
-- 查询学生姓名对应的总成绩 SELECT NAME AS '姓名', Java AS 'Java', mysql AS 'mysql', (Java + mysql) AS '总分' FROM student; -- 注意事项:和并列的时候,两个列的字段类型一致,如果字段类型不一致,那么没有效果的! SELECT NAME AS '姓名',(mysql+NAME) AS '总成绩' FROM student ;-- 两个字段类型不一致
![]()