当前位置: 首页 > news >正文

Web基础 -MYSQL

初始化

以管理员身份运行命令行窗口并输入指令

mysqld --initialize-insecure

稍微等待一会,如果出现没有出现报错信息,则证明data目录初始化没有问题,此时再查看MySQL目录下已经有data目录生成。

注册MYSQL服务

mysqld -install

启动/停止MYSQL服务

net start mysql  // 启动mysql服务net stop mysql  // 停止mysql服务

修改默认账户密码

mysqladmin -u root password 1234

这里的1234就是指默认管理员(即root账户)的密码,可以自行修改成你喜欢的。

登录

mysql -uroot -p1234

退出

exit

卸载

net stop mysql
mysqld -remove mysql

MySQL服务器启动完毕后,然后再使用如下指令,来连接MySQL服务器:

mysql -u用户名 -p密码 [-h数据库服务器的IP地址 -P端口号]
  • -h 参数不加,默认连接的是本地 127.0.0.1 的MySQL服务器

  • -P 参数不加,默认连接的端口号是 3306

当然,这种连接方式不安全,因为密码直接显示在命令行窗口中,我们可以只输入到-p为止,然后命令行窗口会给出一个输入密码的框,带有隐藏密码的效果。

SQL语句

1、DDL语句

DDL英文全称是Data Definition Language(数据定义语言),用来定义数据库对象(数据库、表)。​
DDL中数据库的常见操作:查询、创建、使用、删除。

(1)查询所有数据库

show databases;

(2)查询当前数据库

select database();

(3)创建数据库

创建数据库时,可以不指定字符集。 因为在MySQL8版本之后,默认的字符集就是 utf8mb4。

create database [ if not exists ] 数据库名  [default charset utf8mb4];

案例: 创建一个itcast数据库。

create database itcast;

(4)使用数据库

当我们需要使用某个数据库下的表时,就可以使用该语句,将当前数据库切换为需要使用的数据库。

案例:切换到itcast数据库

use itcast;

(5)删除数据库

drop database [ if exists ] 数据库名 ;

如果删除一个不存在的数据库,将会报错。​
可以加上参数 if exists ,如果数据库存在,再执行删除,否则不执行删除。

案例:删除itcast数据库

drop database if exists itcast; -- itcast数据库存在时删除

2、表操作

创建表

create table  表名(字段1  字段1类型 [约束]  [comment  字段1注释 ],字段2  字段2类型 [约束]  [comment  字段2注释 ],......字段n  字段n类型 [约束]  [comment  字段n注释 ] 
) [ comment  表注释 ] ;

约束用于限制表中的数据

约束描述关键字
非空约束限制该字段值不能为nullnot null
唯一约束保证字段的所有数据都是唯一、不重复的unique
主键约束主键是一行数据的唯一标识,要求非空且唯一primary key
默认约束保存数据时,如果未指定该字段值,则采用默认值default
外键约束让两张表的数据建立连接,保证数据的一致性和完整性foreign key

主键自增:auto_increment

每次插入新的行记录时,数据库自动生成id字段(主键)下的值

具有auto_increment的数据列是一个正数序列开始增长(从1开始自增)

数据类型

(1)数值类型

类型大小有符号(SIGNED)范围无符号(UNSIGNED)范围描述
TINYINT1byte(-128,127)(0,255)小整数值
SMALLINT2bytes(-32768,32767)(0,65535)大整数值
MEDIUMINT3bytes(-8388608,8388607)(0,16777215)大整数值
INT/INTEGER4bytes(-2147483648,2147483647)(0,4294967295)大整数值
BIGINT8bytes(-2^63,2^63-1)(0,2^64-1)极大整数值
FLOAT4bytes(-3.402823466 E+38,3.402823466351 E+38)0 和 (1.175494351 E-38,3.402823466 E+38)单精度浮点数值
DOUBLE8bytes(-1.7976931348623157 E+308,1.7976931348623157 E+308)0 和 (2.2250738585072014 E-308,1.7976931348623157 E+308)双精度浮点数值
DECIMAL依赖于M(精度)和D(标度)的值依赖于M(精度)和D(标度)的值小数值(精确定点数)

(2)字符串类型

类型大小描述
CHAR0-255 bytes定长字符串(需要指定长度)
VARCHAR0-65535 bytes变长字符串(需要指定长度)
TINYBLOB0-255 bytes不超过255个字符的二进制数据
TINYTEXT0-255 bytes短文本字符串
BLOB0-65 535 bytes二进制形式的长文本数据
TEXT0-65 535 bytes长文本数据
MEDIUMBLOB0-16 777 215 bytes二进制形式的中等长度文本数据
MEDIUMTEXT0-16 777 215 bytes中等长度文本数据
LONGBLOB0-4 294 967 295 bytes二进制形式的极大文本数据
LONGTEXT0-4 294 967 295 bytes极大文本数据

(3)日期时间类型

类型大小范围格式描述
DATE31000-01-01 至 9999-12-31YYYY-MM-DD日期值
TIME3-838:59:59 至 838:59:59HH:MM:SS时间值或持续时间
YEAR11901 至 2155YYYY年份值
DATETIME81000-01-01 00:00:00 至 9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS混合日期和时间值
TIMESTAMP41970-01-01 00:00:01 至 2038-01-19 03:14:07YYYY-MM-DD HH:MM:SS混合日期和时间值,时间戳

示例: 生日字段  birthday ---生日只需要年月日  birthday date创建时间 createtime --- 需要精确到时分秒createtime  datetime

表结构设计案例 


--  表结构设计 --
create table emp(id int primary key auto_increment comment 'ID,主键',username varchar(20) not null unique comment '用户名',password varchar(32) not null comment '密码',name varchar(10) not null comment '姓名',gender char(1) default '男' comment '性别',phone char(11) not null unique comment '手机号',job tinyint unsigned comment '职位, 1:班主任,2:讲师,3:学工主管,4:教研主管,5:咨询师',salary int unsigned comment '薪资',image varchar(255) comment '头像',entry_date date comment '入职时间',create_time datetime comment '创建时间',update_time datetime comment '修改时间'
)comment '员工表';

表的其它操作案例(DML语句)

now()为此刻时间

-- 查询当前数据库的所有表
show tables ;-- 查看特定的表结构
desc emp ;-- 查询指定表的建表语句
show create table emp;-- 添加字段类型
alter table emp add qq varchar(11) comment 'QQ号码';-- 修改字段类型
alter table emp modify qq varchar(13) comment 'QQ号码';-- 修改字段名
alter table emp change qq qq_num varchar(13) comment 'QQ号码';-- 删除字段
alter table emp drop qq_num;-- 修改表名
rename table emp to tb_emp;rename table tb_emp to emp;-- 删除表
drop table if exists tb_emp; -- 如果tb_emp存在,删除表
-- 删除表时,表中的全部数据也删除
drop table if exists emp;-- - 向指定字段添加数据 insert into 表名 (字段名1, 字段名2) values (值1, 值2);
insert into emp(username,password,name,gender,phone,create_time,update_time)
values ('wuji',123,'张无忌',1,'13309091231',now(),now());-- 全部字段添加数据
-- 方式一:
insert into emp(id, username,password,name,gender,phone, job, salary, image, entry_date, create_time, update_time)
values (2,'shinaian','123456','施耐庵',1,'13309090001',4,15000,'1.jpg','2000-01-01',now(),now());
-- 方式二:
insert into emp values (null,'luwan','123456','鹿丸',1,'13309092001',4,15000,'1.jpg','2002-01-01',now(),now());-- 批量向emp表的username、name、gender字段插入数据
insert into emp(username, password, name, gender, phone, create_time, update_time)
values ('Tom1', '1234','汤姆1', 1, '13309091239', now(), now()),('Tom2', '1234','汤姆2', 1, '13309091236', now(), now());-- 修改 将emp表中id为1的员工,姓名name字段更新为'张三'
update emp set name ='张三' ,update_time=now() where id=1;-- 将emp表的所有员工入职日期更新为'2010-01-01'
update emp set entry_date='2010-01-01' ,update_time=now();-- 删除emp表id为1的员工
delete from emp where id = 1;-- 删除tb_emp表的所有员工
delete from emp;

3、DQL语句(案例)

use db01;create table emp(id int unsigned primary key auto_increment comment 'ID,主键',username varchar(20) not null unique comment '用户名',password varchar(32) not null comment '密码',name varchar(10) not null comment '姓名',gender tinyint unsigned not null comment '性别, 1:男, 2:女',phone char(11) not null unique comment '手机号',job tinyint unsigned comment '职位, 1:班主任,2:讲师,3:学工主管,4:教研主管,5:咨询师',salary int unsigned comment '薪资',image varchar(300) comment '头像',entry_date date comment '入职日期',create_time datetime comment '创建时间',update_time datetime comment '修改时间'
) comment '员工表';-- 准备测试数据
INSERT INTO emp(id, username, password, name, gender, phone, job, salary, image, entry_date, create_time, update_time)
VALUES (1,'shinaian','123456','施耐庵',1,'13309090001',4,15000,'1.jpg','2000-01-01','2024-04-11 16:35:33','2024-04-11 16:35:35'),(2,'songjiang','123456','宋江',1,'13309090002',2,8600,'2.jpg','2015-01-01','2024-04-11 16:35:33','2024-04-11 16:35:37'),(3,'lujunyi','123456','卢俊义',1,'13309090003',2,8900,'3.jpg','2008-05-01','2024-04-11 16:35:33','2024-04-11 16:35:39'),(4,'wuyong','123456','吴用',1,'13309090004',2,9200,'4.jpg','2007-01-01','2024-04-11 16:35:33','2024-04-11 16:35:41'),(5,'gongsunsheng','123456','公孙胜',1,'13309090005',2,9500,'5.jpg','2012-12-05','2024-04-11 16:35:33','2024-04-11 16:35:43'),(6,'huosanniang','123456','扈三娘',2,'13309090006',3,6500,'6.jpg','2013-09-05','2024-04-11 16:35:33','2024-04-11 16:35:45'),(7,'chaijin','123456','柴进',1,'13309090007',1,4700,'7.jpg','2005-08-01','2024-04-11 16:35:33','2024-04-11 16:35:47'),(8,'likui','123456','李逵',1,'13309090008',1,4800,'8.jpg','2014-11-09','2024-04-11 16:35:33','2024-04-11 16:35:49'),(9,'wusong','123456','武松',1,'13309090009',1,4900,'9.jpg','2011-03-11','2024-04-11 16:35:33','2024-04-11 16:35:51'),(10,'lichong','123456','林冲',1,'13309090010',1,5000,'10.jpg','2013-09-05','2024-04-11 16:35:33','2024-04-11 16:35:53'),(11,'huyanzhuo','123456','呼延灼',1,'13309090011',2,9700,'11.jpg','2007-02-01','2024-04-11 16:35:33','2024-04-11 16:35:55'),(12,'xiaoliguang','123456','小李广',1,'13309090012',2,10000,'12.jpg','2008-08-18','2024-04-11 16:35:33','2024-04-11 16:35:57'),(13,'yangzhi','123456','杨志',1,'13309090013',1,5300,'13.jpg','2012-11-01','2024-04-11 16:35:33','2024-04-11 16:35:59'),(14,'shijin','123456','史进',1,'13309090014',2,10600,'14.jpg','2002-08-01','2024-04-11 16:35:33','2024-04-11 16:36:01'),(15,'sunerniang','123456','孙二娘',2,'13309090015',2,10900,'15.jpg','2011-05-01','2024-04-11 16:35:33','2024-04-11 16:36:03'),(16,'luzhishen','123456','鲁智深',1,'13309090016',2,9600,'16.jpg','2010-01-01','2024-04-11 16:35:33','2024-04-11 16:36:05'),(17,'liying','12345678','李应',1,'13309090017',1,5800,'17.jpg','2015-03-21','2024-04-11 16:35:33','2024-04-11 16:36:07'),(18,'shiqian','123456','时迁',1,'13309090018',2,10200,'18.jpg','2015-01-01','2024-04-11 16:35:33','2024-04-11 16:36:09'),(19,'gudasao','123456','顾大嫂',2,'13309090019',2,10500,'19.jpg','2008-01-01','2024-04-11 16:35:33','2024-04-11 16:36:11'),(20,'ruanxiaoer','123456','阮小二',1,'13309090020',2,10800,'20.jpg','2018-01-01','2024-04-11 16:35:33','2024-04-11 16:36:13'),(21,'ruanxiaowu','123456','阮小五',1,'13309090021',5,5200,'21.jpg','2015-01-01','2024-04-11 16:35:33','2024-04-11 16:36:15'),(22,'ruanxiaoqi','123456','阮小七',1,'13309090022',5,5500,'22.jpg','2016-01-01','2024-04-11 16:35:33','2024-04-11 16:36:17'),(23,'ruanji','123456','阮籍',1,'13309090023',5,5800,'23.jpg','2012-01-01','2024-04-11 16:35:33','2024-04-11 16:36:19'),(24,'tongwei','123456','童威',1,'13309090024',5,5000,'24.jpg','2006-01-01','2024-04-11 16:35:33','2024-04-11 16:36:21'),(25,'tongmeng','123456','童猛',1,'13309090025',5,4800,'25.jpg','2002-01-01','2024-04-11 16:35:33','2024-04-11 16:36:23'),(26,'yanshun','123456','燕顺',1,'13309090026',5,5400,'26.jpg','2011-01-01','2024-04-11 16:35:33','2024-04-11 16:36:25'),(27,'lijun','123456','李俊',1,'13309090027',5,6600,'27.jpg','2004-01-01','2024-04-11 16:35:33','2024-04-11 16:36:27'),(28,'lizhong','123456','李忠',1,'13309090028',5,5000,'28.jpg','2007-01-01','2024-04-11 16:35:33','2024-04-11 16:36:29'),(29,'songqing','123456','宋清',1,'13309090029',5,5100,'29.jpg','2020-01-01','2024-04-11 16:35:33','2024-04-11 16:36:31'),(30,'liyun','123456','李云',1,'13309090030',NULL,NULL,'30.jpg','2020-03-01','2024-04-11 16:35:33','2024-04-11 16:36:31');-- 查询指定字段 name,entry_date并返回
select name,entry_date from emp;-- 查询返回所有字段
select * from emp;-- 查询所有员工的 name, entry_date,并起别名(姓名、入职日期)
-- 方式1:
select name AS 姓名, entry_date AS 入职日期 from emp;-- 方式2: 别名中有特殊字符时,使用''或""包含
select name AS '姓 名', entry_date AS '入职日期' from emp;-- 方式3:
select name AS "姓名", entry_date AS "入职日期" from emp;-- 查询已有的员工关联了哪几种职位(不要重复)
select distinct job from emp;-- 查询 姓名 为 '武松' 的员工
select id, username, password, name, gender, phone, salary, job, image, entry_date, create_time, update_time
from emp
where name = '武松'; -- 字符串使用''或""包含-- 查询薪资低于5000的员工
select id, username, password, name, gender, salary
from emp
where salary<5000;-- 查询没有职位的员工
select id, username, password, name, gender, phone, salary, job, image, entry_date, create_time, update_time
from emp
where job is null ;
-- 查询 入职时间 在 '2000-01-01' (包含) 到 '2010-01-01'(包含) 之间 且 性别为女 的员工信息
select id, username, password, name, gender, phone, salary, job, image, entry_date, create_time, update_time
from emp
where entry_date between '200-01-01' and '2010-01-01' and gender = 2;-- 查询 职位是 2 (讲师), 3 (学工主管), 4 (教研主管) 的员工信息
-- 方式1:使用or连接多个条件
select id, username, password, name, gender, phone, salary, job, image, entry_date, create_time, update_time
from emp
where job=2 or job=3 or job=4;-- 方式2:in关键字
select id, username, password, name, gender, phone, salary, job, image, entry_date, create_time, update_time
from emp
where job in (2,3,4);-- 查询 姓 '张' 的员工信息
select id, username, password, name, gender, phone, salary, job, image, entry_date, create_time, update_time
from emp
where name like '张%'; # 通配符 "%" 代表任意个字符(0个 ~ 多个)-- 查询 姓名中包含 '二'  的员工信息
select id, username, password, name, gender, phone, salary, job, image, entry_date, create_time, update_time
from emp
where name like '%二%'; # 通配符 "%" 代表任意个字符(0个 ~ 多个)-- 统计该企业员工数量
-- count(字段)
select count(id) from emp;-- 结果:30
select count(job) from emp;-- 结果:29 (聚合函数对NULL值不做计算)-- count(常量)
select count(0) from emp;
select count('A') from emp;-- count(*)  推荐此写法(MySQL底层进行了优化)
select count(*) from emp;-- 根据性别分组 , 统计男性和女性员工的数量
select gender,count(*)
from emp
group by gender;-- 根据入职时间, 对员工进行升序排序
select id, username, password, name, gender, phone, salary, job, image, entry_date, create_time, update_time
from emp
order by entry_date ASC; -- 按照entrydate字段下的数据进行升序排序select id, username, password, name, gender, phone, salary, job, image, entry_date, create_time, update_time
from emp
order by  entry_date; -- 默认就是ASC(升序)-- 根据入职时间,对员工进行降序排序
select id, username, password, name, gender, phone, salary, job, image, entry_date, create_time, update_time
from emp
order by entry_date DESC; -- 按照entrydate字段下的数据进行降序排序-- 根据入职时间对公司的员工进行升序排序,入职时间相同,再按照更新时间进行降序排序
select id, username, password, name, gender, phone, salary, job, image, entry_date, create_time, update_time
from emp
order by entry_date ASC , update_time DESC;-- 从起始索引0开始查询员工数据, 每页展示5条记录
select id, username, password, name, gender, phone, salary, job, image, entry_date, create_time, update_time
from emp
limit 0 , 5; -- 从索引0开始,向后取5条记录
-- 查询 第1页 员工数据, 每页展示5条记录
select id, username, password, name, gender, phone, salary, job, image, entry_date, create_time, update_time
from emp
limit 5; -- 如果查询的是第1页数据,起始索引可以省略,直接简写为:limit 条数-- 查询 第2页 员工数据, 每页展示5条记录
select id, username, password, name, gender, phone, salary, job, image, entry_date, create_time, update_time
from emp
limit 5 , 5; -- 从索引5开始,向后取5条记录

http://www.dtcms.com/a/283184.html

相关文章:

  • 冷库耗电高的原因,冷链运营者的降本增效的方法
  • LVS四种模式及部署NAT、DR模式集群
  • CD53.【C++ Dev】模拟实现优先级队列(含仿函数)
  • 【计算机网络】数据通讯第二章 - 应用层
  • 深度学习之反向传播
  • 【迭代】PDF绘本录音播放,点读笔方案调研和初步尝试
  • leetcode 725 分割链表
  • 微算法科技研究量子视觉计算,利用量子力学原理提升传统计算机视觉任务的性能
  • Kafka入门
  • 语音增强论文汇总
  • Go基本数据类型
  • 81、面向服务开发方法
  • Redisson实现分布式锁
  • Redisson实现限流器详解:从原理到实践
  • HTML 入门教程:从零开始学习网页开发基础
  • 前端知识:浏览器工作原理与开发者工具知识笔记
  • WIN10系统优化篇(一)
  • Leetcode 02 java
  • IDEA报错“资源找不到”?重启就好了!!?
  • 使用Dify构建HR智能助理,深度集成大模型应用,赋能HR招聘管理全流程,dify相关工作流全开源。
  • 城市蓝影.
  • 服务注册nacos和OpenFerign(用于封装跨服务之间的调用方法)
  • kubernetes学习笔记(一)
  • 数据结构 双向链表(2)--双向链表的实现
  • 黄仁勋链博会演讲实录:脱掉皮衣,穿上唐装,中文开场
  • 完善评论发布功能
  • PHP面向对象编程:类与对象的基础概念与实践
  • 从0到1搭建Lazada账号矩阵:自养号测评的精细化养号全攻略
  • Linux 定时器应用示例
  • 功能测试和回归测试