1、Mysql数据库 Basic

1.为什么选择MySQL数据库

1、免费
2、功能强大

在这里插入图片描述

数据库安装网址:
链接

2.SQL 语句分类

  1. Data Definition Language (DDL 数据定义语⾔), 如:建库,建表
  2. Data Manipulation Language(DML 数据操纵语⾔),如:对表中的记录操作增删改
  3. Data Query Language(DQL 数据查询语⾔),如:对表中的查询操作
  4. Data Control Language(DCL 数据控制语⾔),如:对⽤户权限的设置

2.1 DDL操作数据库

创建数据库

1、直接创建

create database 数据库名;

2、先判断,再创建数据库

create datebase if not exists 数据库名;

3、指定字符集创建

create datebase 数据库名 character set 字符集;

查看数据库

– 查看所有数据库

show datebase

– 查看某个数据的信息

show creat datebase db3;

删datebase

drop datebase 数据库名;

use 数据库名;-- 转换数据库名

⾯试题

在 MySQL 数据库软件中,有test1、test2、test3三个数据库,登录数据库之后,输⼊语句:
select database test2; 运⾏结果是什么?
这是⼀条错误的语句,如果要选中⼀个数据库,应⽤使⽤:use test2;

DDL操作表

create table 表名(
字段名1   字段类型1,
 字段名 2 字段类型 2
);

在这里插入图片描述
在这里插入图片描述
具体操作:

-- 创建student表包含id,name,birthday字段
create table student (
 id int, -- 整数
 name varchar(20), -- 字符串
 birthday date -- ⽣⽇,最后没有逗号
);

在这里插入图片描述
在这里插入图片描述

复制一个相同的表

在这里插入图片描述

删除表

在这里插入图片描述

修改表结构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

DML操作数据

对表中的记录进行增删改查

插入记录

insert into 表名 字段名 values 字段值;
在这里插入图片描述
在这里插入图片描述

乱码问题

在这里插入图片描述

蠕⾍复制

在这里插入图片描述

更新表记录

UPDATE 表名 SET 列名=[WHERE 条件表达式]
# UPDATE: 需要更新的表名
# SET: 修改的列值
# WHERE: 符合条件的记录才更新
# 你可以同时更新⼀个或多个字段。
# 你可以在 WHERE ⼦句中指定任何条件。

不带条件修改数据:

update 表名 set 字段号 = 值 ;–修改所有的行

带条件修改数据:

update 表名 set 字段号=值 where 字段名=值;
具体操作:

-- 不带条件修改数据,将所有的性别改成⼥
update student set sex = '⼥';
-- 带条件修改数据,将 id 号为 2 的学⽣性别改成男
update student set sex='男' where id=2;
-- ⼀次修改多个列,把 id 为 3 的学⽣,年龄改成 26 岁,address 改成北京
update student set age=26, address='北京' where id=3;

注:如果update和delete不能执⾏,需要修改数据库安全模式:
SET SQL_SAFE_UPDATES = 0;

删除表记录

DELETE FROM 表名 [WHERE 条件表达式]
# 如果没有指定 WHERE ⼦句,MySQL 表中的所有记录将被删除。
# 你可以在 WHERE ⼦句中指定任何条件

在这里插入图片描述

DQL查询表中的数据

SELECT 列名 FROM 表名 [WHERE 条件表达式]
# 1) SELECT 命令可以读取⼀⾏或者多⾏记录。
# 2) 你可以使⽤星号(*)来代替其他字段,SELECT 语句会返回表的所有字段数据
# 3) 你可以使⽤ WHERE 语句来包含任何条件。

简单查询

-- 使用*表示所有列
select * from 表名;

-- 查询指定列的数据, 多个列之间以逗号分隔
SELECT 字段名 1, 字段名 2, 字段名 3, ... FROM 表名;
-- 查询 student 表中的 name 和 age 列
select name,age from student;

指定列的别名查询

语法:

-- 对列指定别名
SELECT 字段名 1 AS 别名, 字段名 2 AS 别名... FROM 表名;
-- 对列和表同时指定别名
SELECT 字段名 1 AS 别名, 字段名 2 AS 别名... FROM 表名 AS 表别名;

实操:

– 使用别名
select name as 姓名,age as 年龄 from Student as st;

表使⽤别名的原因:⽤于多表查询操作。

清除重复值

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
实操:

-- 查询 math 分数⼤于 80 分的学⽣
select * from student where math > 80;
-- 查询 english 分数⼩于或等于 80 分的学⽣
select * from student where english <= 80;
-- 查询 age 等于 20 岁的学⽣
select * from student where age = 20;
-- 查询 age 不等于 20 岁的学⽣,注:不等于有两种写法
select * from student where age <> 20;
select * from student where age != 20;

实操:

-- 查询 age ⼤于 35 且性别为男的学⽣(两个条件同时满⾜)
select * from student where age > 35 and sex = '男';
-- 查询 age ⼤于 35 或性别为男的学⽣(两个条件其中⼀个满⾜)
select * from student where age > 35 or sex = '男';
-- 查询id是1或3或5的学⽣
select * from student where id = 1 or id = 3 or id = 5;

in关键字

SELECT 字段名 FROM 表名 WHERE 字段 in (数据 1, 数据 2…);

in ⾥⾯的每个数据都会作为⼀次条件,只要满⾜条件的就会显示

实操:

-- 查询id是1或3或5的学⽣
select * from student where id in(1, 3, 5);
-- 查询id不是1或3或5的学⽣
select * from student where id not in(1, 3, 5);

范围查询

在这里插入图片描述
在这里插入图片描述

-- 查询姓⻢的学⽣
select * from student where name like '⻢%';
select * from student where name like '⻢';
-- 查询姓名中包含'德'字的学⽣
select * from student where name like '%德%';
-- 查询姓⻢,且姓名有两个字的学⽣
select * from student where name like '⻢_';

总的具体实操:

/*存数据:
  存文件 - txt excel
  数据库 - 文件(特定格式),只有数据库软件可以读取

  数据库 - 服务器(软件),可以由客户端访问

  MariaDB
  

  关系型数据库 - 非关系型数据库 NOSql - Not Only SQL

  SQL语句 99标准 - 官方语言(统一) + 方言(个性)
  DB  DataBase

  此电脑 -> 右键 -> 管理 -> 服务
  C:/Programe Files/MySQL/MySQL Server/bin

环境变量:CMD 可以执行的命令的所有目录
	ipconfig  ping  dir  cd  net

	执行命令[工具、文件]:
	 1.在当前文件夹搜索
	 2.在环境变量定义的所有目录中搜索

图形化工具:
  Workbench - mysql自带
  SqlDeveloper - oracle自带

  Navicat12 
  Sqlyog 

TCP/IP协议 自行研究

ip:port 套接字,确定是一个服务器软件
	ip:确定主机
	port:确定服务器软件
域名:套接字的映射
DNS:IP集合,中转站
127.0.0.1  localhost

默认数据库:(数据分区,仓库)
  1.sys - 系统相关配置
  2.mysql - mysql系统相关内容,例如用户\权限
*/
/* 语法: 
   大小写不敏感
   每一句sql最后一定要以 ; 结尾
   命名: 表名/字段名 不能使用关键字 order user
   字符串: 引号 ''  ""
 */
/* SQL分类:
  1.DDL: Data Defined Language
  2.DML: Data Manipulation Language
  3.DQL: Query
  4.DCL: Control 
 */
-- DDL
-- 查看当前数据库的字符集 charset utf8  latain-改字符集,需要修改配置文件 my.cnf/my.ini
show variables like '%char%';
-- 查看当前所有数据库
Show databases;

-- 创建数据库
-- create database java2106;
-- mysql独特写法
create database if not exists java2106;

-- 使用数据库 / 切换数据库(要操作哪个数据库)
use java2106;
use test;

-- 删除数据库
-- drop database test;
drop database if exists test;
-- 改变数据库字符集
alter DATABASE java2106 default charset=utf8;

-- select 全局函数()
select now();

/*操作table, 前提必须切换数据库  use xxx;
  1.创建
  2.删除
  3.修改
  
  数据类型: 
    1.字符/字符串: varchar(10)-最大10个字符  char(10)-固定10个字符
    2.整数: int(2)[mysql] number(2)[oracle]
	3.小数: double(3,1)-[mysql]最大值99.9  number(3,1)[oracle]
    4.时间: 年月日date  时分秒timestamp  年月日时分秒datetime
 */
-- 1.创建表 - 确定字段名(列), 确定字段类型
-- 表名全称: java2106.user
create table if not exists `user` (
	name varchar(20) comment '姓名', -- varchar(20)指的是长度最大20, comment指代字段说明
    age int(2),
    gender char(1),
    score double(3,1) comment '个人综合评分',
    birthday datetime
);

-- 2.查看表结构
desc user;

-- 3.查看所有的表
show tables;

-- 4.显示创建user表的sql语句
show create table user;
 
-- 5.创建一张和user相同的表
create table user1 like user;
desc user;

-- 6.修改表  alter
-- 6.1 添加新的字段  add
alter table user add (no int(2));
-- 6.2 修改原先字段的类型  modify
alter table user modify name varchar(10);
-- 6.3 删除字段  drop 
alter table user drop no;
-- 6.4 修改字段名  change
alter table user change gender sex char(1);

-- 7.重命名表
rename table user to user2;

-- 8.删除表
drop table user2;

-- DML 操作
-- 1.向表中添加数据
insert into user1 values('张三', 23, '男', 78.9, '2021-07-13 13:23:45'); -- 值的顺序和字段顺序要一致
insert into user1 values('张三', 23, '男', 78.9, now());
insert into user1 values('张三', null, '男', 78.9, null);

-- values值的个数和顺序必须跟前面括号中的字段顺序一致
insert into user1(name, score, gender) values('张三', 78.9, '男');

-- mysql可以一次性添加多个记录
insert into user1 values('lucy', null, '男', 78.9, null),
						('tom', 18, '男', 78.9, null),
						('jack', 23, '男', 78.9, null),
						('rose', 45, '女', 78.9, null),
						('david', 32, '男', 78.9, null);

-- 2.修改数据
update user1 set name = 'jerry'; -- 修改所有数据
update user1 set name = 'jerry' where name='张三'; -- name=张三的才要修改(条件)
update user1 set age = 19, birthday=now() where name='lucy';

-- 3.删除数据
delete from user1 ; -- 删除全部记录
delete from user1 where name='jerry';

truncate user1; -- 删除全部

SET SQL_SAFE_UPDATES = 0; 


-- DQL: Data Query Language
-- 单表查询 select 
-- 查询全部
select * from emp; -- * 在执行时会解析成字段名,消耗资源
-- 查询指定字段
select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp;
select empno,ename from emp;
-- 查询的字段可以直接计算, 字段起别名[as] 
select ename, sal*12 as salary from emp;
select ename, sal*12 salary from emp;

-- 查询的字段可以使用函数来操作
-- 函数: 数字相关, 字符串相关, 时间相关
select ename, date_format(hiredate, '%Y年%m月%d日') from emp;

SELECT DATE_FORMAT(now(), '%Y年%m月%d日');

-- 条件查询: 筛选 where
-- 查询薪资范围 > < >= <= = !=[<>]
select ename, sal from emp
 where sal > 2000;

select ename, sal from emp
 where sal <> 3000;
-- 条件 并且:and  或者:or
select ename, sal from emp where sal > 2000 and sal < 3000;
select ename, sal from emp where sal < 2000 or sal > 3000;
-- sal>=2000 and sal<=3000
select ename, sal from emp where sal between 2000 and 3000;
-- null 表示无穷大或者无穷小, 不能判断范围, 也不能计算
-- is null - 是null值     is not null - 不是null值
select ename from emp where mgr is null;

-- 在部门20的人
select ename, deptno from emp where deptno = 20;
-- 不在部门20和30的人
select ename, deptno from emp where deptno = 20 or deptno=30;
select ename, deptno from emp where deptno not in (20,30);

-- 名字长度>4的人 - 函数结果可以作为条件
select ename from emp where length(ename) > 5;
-- 查询入职时间是当年7月份以后的员工

-- 名字是 SMITH 的人
select ename from emp where ename = 'SMITH';
-- 首字母是 S 的人 like-模糊查询
-- %(任意字符任意长度)  _(一个任意字符)
select ename from emp where ename like 'S%';
select ename from emp where ename like '_A%';
select ename from emp where ename like '%A%';
-- ESCAPE '*'  转义
SELECT ENAME FROM EMP WHERE ENAME LIKE 'A*_SMITH' ESCAPE '*';

-- sal > 2000,3000,4000中的任意一个值
select ename, sal from emp where sal > any(2000,3000,4000);
-- sal > 2000,3000,4000中的每一个值
select ename, sal from emp where sal > every(2000,3000,4000);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值