Mysql数据库一

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yuewen2008/article/details/83141797

1.关系化数据库

关系化数据库就是用来保存有实体关系的 数据的 软件.

实际开发过程中,一套 标准的流程是 画E-R实体关系 图, 做数据库建模分析, 分析 实体之间的 关系, 确定
需要的 属性信息, 最终 建立 不同的表, 从而完整的 去描述 实体 之间的关系.
在这里插入图片描述
在这里插入图片描述

2.Mysql数据库的使用

数据库只是一个软件, 这个软件 帮组咱们将 数据以特定的形式保存到硬盘上去了, 并且 可以使用 标准的 sql 语句去操作他们.
关系型 数据库都支持 标准的sql 语句去操作的.

Mysql 的使用必须要先安装…

2.1. 如何卸载

假设你已经安装了一个msyql 数据库, 安装失败了 .
第一步:
进到 你安装的文件夹下 找到 这个 文件
在这里插入图片描述

进到 控制 面板,然后 卸载掉 …

同时 进到 c盘的安装文件夹, 将 整个 mysql 文件夹给删掉.
第二步:
进入到 如上的数据保存的位置 …

在这里插入图片描述

结论:如果安装的时候出现了问题,就按照 如上的步骤去完整的卸载.

2.2. 如何安装

Mysql 有多个版本, 你直接去网上 下一个就可以了.
双击 傻瓜式的一步步往下走 就可以了

如下是需要注意的步骤, 其他的没有列出来,就默认继续可以往下走.
在这里插入图片描述
在这里插入图片描述

扫描二维码关注公众号,回复: 3608142 查看本文章

在这里插入图片描述

在这里插入图片描述
使用dos 命令行,
敲一个 mysql , 如果没有出现既不是内部命令,也不是外部命令, 那么就可以了.

3. Sql语句的介绍

在这里插入图片描述

 Sql语言的分类 :

DDL (数据定义语言)
数据定义语言 - Data Definition Language
用来定义数据库的对象,如数据表、视图、索引等
DML (数据操纵语言)
数据处理语言 - Data Manipulation Language
在数据库表中更新,增加和删除记录
如 update, insert, delete
DCL (数据控制语言)
数据控制语言 – Data Control Language
指用于设置用户权限和控制事务语句
如grant,revoke,if…else,while,begin transaction
DQL (数据查询语言)
数据查询语言 – Data Query Language
select

Mysql 是有 相关的技术文档的, 你可以查询.

在线api文档
http://tool.oschina.net/apidocs/apidoc?api=mysql-5.1-zh

4. DDL语句

=====创建数据库
语法:
create database 数据库名称 character set 编码集 collate 比较规则;
character set 指定数据库采用的字符集
collate 指定数据库字符集的比较方式,一般很少设置

注意:数据库中sql语句不区分大小写。

练习:
创建一个名称为mydb1的数据库。
create database mydb1;

创建一个使用utf8字符集的mydb2数据库。
create database mydb2 character set utf8;

创建一个使用utf8字符集,并带校对规则的mydb3数据库。
create database mydb3 character set utf8 collate utf8_general_ci;

显示字符集以及默认的校对方法:
在这里插入图片描述

首先查看下现有的数据库:
show databases;

查看数据库的建表语句:
show create database mydb2;
在这里插入图片描述
删除数据库:
语法:
drop database 数据库名称;
删除数据库mydb1
drop database mydb1;

修改数据库:
语法:
alter database 数据库名称 更改后的信息;

切换数据库:
use 数据库名称;

查看当前使用的数据库:
select database();

练习
查看服务器中的数据库,并把其中某一个库的字符集修改为gbk;
show databases();
alter database mydb2 character set gbk;

在这里插入图片描述
====如何创建表

表是二维表, 有行有列 , 表中存的一行行的记录, 每一行记录对应着 javabean 的一个实体

语法:
create table 表名
(
字段一 字段类型,
字段二 字段类型,
字段三 字段类型
);

字段一, 字段二… 就是二维表的列的名称, 但是每一列实际上是有列的 数据的类型的
而这里每一行都对应着javabean的一个实体,javabean 中每个字段的数据是有具体的数据类型的,
在msyql 中字段的类型与java中的字段类型又是怎样对应的呢?
Java中的数据类型:byte,short,int,long,float,double,char,String,boolean。
而在mysql中:
数值型:
TINYINT 、SMALLINT、INT、BIGINT、FLOAT、DOUBLE , bit (0,1)

字符串型:
VARCHAR、CHAR
varchar(1), char(1) 单个字符
varchar(5), char(5) 字符串

大数据类型:mysql中特有的,java中没有这种数据类型,但是java中有字符流和字节流可以认为是两者对应的。
BLOB(字节流)、TEXT(字符流)

text:
blob:big large object

日期型
DATE(只有日期)、TIME(只有时间)、DATETIME(有日期,有时间)、
TIMESTAMP(时间戳,是自动生成的,不需要人工是维护)

练习:
创建一个员工表employee:

字段 属性
id 整形 int
name 字符型 varchar(20)
gender 字符型 varhcar(10)
birthday 日期型 date
entry_date 日期型 date
job 字符型 varchar(100)
salary 小数型 float
resume 大文本型 varchar(255)

create table employee
(
id int,
name varchar(20),
gender varchar(10),
birthday date,
entry_date date,
job varchar(100),
salary float,
resume varchar(255)
);

创建数据表时先切换到相应的数据库。
在这里插入图片描述
查看数据库下表:
–会将当前数据库下所有的表都 都列出来(前面两道杠这也是sql语句的注释)
show tables;

查看表结构:
desc 表名;

desc employee;
在这里插入图片描述

查看 表的创建语句:
show create table employee;
在这里插入图片描述

定义单表字段的约束:

不管是单表还是多表, 添加约束都是为了保证数据库中表的数据的有效性和完整性。
单表约束:

a) 主键约束 — primary key不允许为空, 也不允许重复
b) 唯一约束----不允许重复
c) 非空约束-----不允许为空
对于以上三种约束, 通常会根据需求将某些字段设置为非空, 唯一约束或者主键约束
其中 设置 某个字段为主键约束时, 如果那个 字段是 数值 类型, 那么通常可以在主键约束后
加上 auto_increment (表示主键的值自动增长),

create table emp2
(
id int primary key auto_increment,
name varchar(20) not null,
gender varchar(10) not null,
birthday date,
entry_date date,
job varchar(100),
salary float not null,
resume varchar(255)
);
在这里插入图片描述

修改表:

添加列:
语法:
alter table 表名 add 列名称 列字段类型;

修改列:
alter table 表名 modify 列名称 列字段类型;
删除列:
alter table 表名 drop 列名;

修改表的名称:
rename table 表名 to 新表名;
修改列的名称:
alter table 表名 change 现有的列的名称 新的列的名称 新的列的类型;

修改表的字符集:
alter table 表名 character set utf8;

练习
在上面员工表的基本上增加一个image列。
alter table employee add image blob;

修改job列,使其长度为60。
alter table employee modify job varchar(60);

删除gender列。
alter table employee drop gender;

表名改为users。
rename table employee to users;

修改表的字符集为utf8
alter table users character set utf8;

列名name修改为username
alter table users change name username varchar(30);

++++++++++++++++++++++DML语句+++++++++++++++++++++++++++++++++++

dml 语句 包括增加(insert ), 删除(delete) , 修改 (update)

=====insert 语句:

插入数据记录到表中

语法:
insert into 表名 (列名一,列名二,列名N) values(列一的值,列二的值,列N的值);
第一种写法(全部都写):
insert into users (id,username,birthday,entry_date,job,salary,resume,image) values(1,‘bb’,‘1995-09-09’,‘2015-07-15’,‘developer’,15000,‘a good boy’,‘not uploaded’);

第二种写法(只写部分):
insert into users (id,username,entry_date,job,salary,resume) values(2,‘pp’,‘2015-06-30’,‘project manager’,20000,‘a hansome man’);

第三种写法(不写列名,直接写值,所有的值都要按照表的列的顺序去写):
insert into users values(3,‘junjie’,‘1993-10-10’,‘2015-08-02’,‘a good coder’,21000,‘a lady killer’,‘clik to visit’);

注意: 以上三种语法中用的最多的是 第三种.

insert into users values(3,‘童林’,‘1999-10-10’,‘2015-08-10’,‘a good boy’,22000,‘一个钻石王老五的哥们’,‘点我吧’);

mysql> insert into users values(3,‘童林’,‘1999-10-10’,‘2015-08-10’,‘a good boy’,22000,‘一个钻石王老五的哥们’,‘点我吧’);
ERROR 1366 (HY000): Incorrect string value: ‘\xC1\xD6’ for column ‘username’ at row 1

解决方式:
两种
方式一(临时的解决):
只针对当前的窗口有效
set names gbk;

方式二(一劳永逸的解决):
进到 mysql安装文件夹下, 将编码改为 gbk ,然后重新启动mysql的服务就可以了.

show variables like ‘character%’;

=====update 语句:
主要用于对表中现有的数据进行更新操作

语法:
update 表名 set 列名一=列名的值,列名二=列名的值,列名三=列名…;
where 从句-- 加上限定条件, 只有满足条件的才会被修改;如果update不加where从句, 那就是所有的都更新。

练习:
要求
将所有员工薪水修改为5000元。
update users set salary=5000;
将姓名为‘pp’的员工薪水修改为6000元。
update users set salary=6000 where username=‘pp’;
将姓名为’junjie’的员工薪水修改为4000元,job改为ccc。
update users set salary=4000,job=‘ccc’ where username=‘junjie’;
将童林的薪水在原有基础上增加1000元。
update users set salary=salary+1000 where username=‘童林’;

=====delete 语句:

删除表中的数据

语法:
delete from 表名 [where从句];

如果不加where 从句,就会全部删除

练习:
删除表中名称为’阿花’的记录。
delete from users where username=‘阿花’;

删除表中所有记录。
– 属于 DML语句
delete from users;

使用truncate删除表中记录。
– 先将表给摧毁,然后新建一个同样的表
– 属于DDL语句
truncate users;

++++++++++++++++++++++++DQL语句++++++++++++++++++++++++++++++++++++
数据查询语句
DQL 语句, 指的是使用sql语句对数据库表中的记录做查询操作 .
关键字是 select , 非常的复杂,

create table exams(
id int,
name varchar(30),
chinese double,
english double,
math double
);

insert into exams values(1,‘mayun’,96,97,55);
insert into exams values(2,‘tonglin’,88,92,91);
insert into exams values(3,‘hejie’,89,82,99);
insert into exams values(4,‘zhuzhu’,89,83,91);

语法一:
select *| 列名一,列名二 from 表名;

练习:
查询表中所有学生的信息。
select * from exams;
在这里插入图片描述

查询表中所有学生的姓名和对应的英语成绩。
select name,english from exams;
在这里插入图片描述

select语句后面紧跟的是最终显示的数据。
过滤表中重复数据。
– 过滤表中语文重复的数据
select distinct chinese from exams;//distinct是去掉重复的数据
在这里插入图片描述

select distinct math from exams;
在这里插入图片描述

练习
在所有学生分数上加5分特长分。
– 注意这个语句只是将查询到的结果进行加法运算,并没有真正的修改表中的数据
select name, chinese+5,english+5,math+5 from exams;

统计每个学生的总分。
select name,chinese+math+english as 总分 from exams;

使用别名表示学生分数。
select name as 姓名,chinese+math+english as 总分 from exams;
select name 姓名,chinese+math+english 总分 from exams;//as 可以省略
在这里插入图片描述
使用where子句,进行过滤查询。
练习:
查询姓名为何生的学生成绩
select * from exams where name=‘何生’;

查询英语成绩大于90分的同学
select * from exams where english>90;

查询总分大于255分的所有同学
select * from exams where chinese+math+english>255;

猜你喜欢

转载自blog.csdn.net/yuewen2008/article/details/83141797