Mysql安装及常用命令
短信预约 -IT技能 免费直播动态提醒
1、下载安装
下载连接:https://downloads.mysql.com/archives/community/
解压后配置环境变量
1.1、初始化Mysql
mysqld --initialize-insecure
1.2、注册Mysql服务
mysqld -install
1.3、启动Mysql服务
net start mysqld
1.4、修改root密码
mysqladmin -u root password 1234//1234为设置的密码
1.5、登录Mysql
mysql -uroot -p1234
2、数据库及表操作
# 操作数据库-- 显示所有数据库show databases;-- 创建数据库create database db1;-- 删除数据库drop database db1;-- 使用数据库use db2;-- 查询当前正在使用的数据库select database();# 表操作-- 查询当前数据库下所有表show tables;-- 创建表create table if not exists tb1(id int,username varchar(30),password varchar(30));-- 查询表结构desc tb2;-- 删除表drop table tb1;-- 修改表-- 修改表名alter table tb1 rename to tb2;-- 添加一列alter table tb2 add nicename varchar(30);-- 修改数据类型alter table tb2 modify username char(10);-- 修改列名和数据类型alter table tb2 change username uname varchar(30) not null;-- 删除列alter table tb2 drop nicename;
3、数据操作
# 数据操作-- 给全部列添加数据insert into tb2(id,uname,password) value(1,"user1","123456");-- 批量添加数据insert into tb2(id,uname,password) values(2,"user2","123456"),(3,"user3","123456"),(4,"user4","123456");-- 修改数据update tb2 set uname = 'user11' where uname = 'user1';-- 删除数据delete from tb2 where id = 1;
4、数据查询
4.1、添加数据
-- 删除stu表drop table if exists stu;-- 创建stu表CREATE TABLE stu ( id int, -- 编号 name varchar(20), -- 姓名 age int, -- 年龄 sex varchar(5), -- 性别 address varchar(100), -- 地址 math double(5,2), -- 数学成绩 english double(5,2), -- 英语成绩 hire_date date -- 入学时间);-- 添加数据INSERT INTO stu(id,NAME,age,sex,address,math,english,hire_date) VALUES (1,'马运',55,'男','杭州',66,78,'1995-09-01'),(2,'马花疼',45,'女','深圳',98,87,'1998-09-01'),(3,'马斯克',55,'男','香港',56,77,'1999-09-02'),(4,'柳白',20,'女','湖南',76,65,'1997-09-05'),(5,'柳青',20,'男','湖南',86,NULL,'1998-09-01'),(6,'刘德花',57,'男','香港',99,99,'1998-09-01'),(7,'张学右',22,'女','香港',99,99,'1998-09-01'),(8,'德玛西亚',18,'男','南京',56,65,'1994-09-02');
4.2、基础查询
-- 查询多个字段select * from stu;-- 去除重复记录select distinct sex from stu;-- 起别名select id,name as 姓名,age as 年龄,sex 性别,address 地址 from stu;-- 查询姓名、数学成绩、英语成绩。并通过as给math和english起别名(as关键字可以省略)select name,math 数学,english 英语 from stu;
4.3、条件查询
-- 查询年龄大于20岁的学员信息select * from stu where age > 20;-- 查询年龄大于等于20岁的学员信息select * from stu where age >= 20;-- 查询年龄大于等于20岁 并且 年龄 小于等于 30岁 的学员信息 两种方式select * from stu where age >= 20 and age <= 30;select * from stu where age between 20 and 30;-- 查询入学日期在'1998-09-01' 到 '1999-09-01' 之间的学员信息select * from stu where hire_date between '1998-09-01' and '1999-09-01';-- 查询年龄等于18岁的学员信息select * from stu where age = 18;-- 查询年龄不等于18岁的学员信select * from stu where age != 18;-- 查询年龄等于18岁 或者 年龄等于20岁 或者 年龄等于22岁的学员信息select * from stu where age in (18,20,22);-- 查询英语成绩为 null的学员信息select * from stu where english is null;
4.4、模糊查询和排序
-- 查询姓'马'的学员信息select * from stu where name like '马%';-- 查询第二个字是'花'的学员信息select * from stu where name like '_花%';-- 查询名字中包含 '德' 的学员信息select * from stu where name like '%德%';-- 查询学生信息,按照年龄升序排列select * from stu order by age asc;-- 查询学生信息,按照数学成绩降序排列select * from stu order by math desc;-- 查询学生信息,按照数学成绩降序排列,如果数学成绩一样,再按照英语成绩升序排列select * from stu order by math desc,english asc;
4.5、聚合查询
-- 统计班级一共有多少个学生select count(*) from stu;-- 查询数学成绩的最高分select max(math) from stu;-- 查询数学成绩的最低分select min(math) from stu;-- 查询数学成绩的总分select sum(math) from stu;-- 查询数学成绩的平均分select avg(math) from stu;-- 查询英语成绩的最低分select min(english) from stu;
4.6、分组查询
-- 查询男同学和女同学各自的数学平均分select sex,avg(math) from stu group by sex;-- 查询男同学和女同学各自的数学平均分,以及各自人数select sex,avg(math),count(*) from stu group by sex;-- 查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组select sex,avg(math),count(*) from stu where math >= 70 group by sex;-- 查询男同学和女同学各自的数学平均分,以及各自人数-- 要求:分数低于70分的不参与分组,分组之后人数大于2个的select sex,avg(math),count(*) num from stu where math >= 70 group by sex having num > 2;
4.7、分页查询
-- 从0开始查询,查询3条数据select * from stu limit 0,3;-- 每页显示3条数据,查询第1页数据select * from stu limit 0,3;-- 每页显示3条数据,查询第2页数据select * from stu limit 3,3;-- 每页显示3条数据,查询第3页数据select * from stu limit 6,3;
5、多表查询案例
5.1、数据准备
DROP TABLE IF EXISTS emp;DROP TABLE IF EXISTS dept;DROP TABLE IF EXISTS job;DROP TABLE IF EXISTS salarygrade;-- 部门表CREATE TABLE dept ( did INT PRIMARY KEY, -- 部门id dname VARCHAR(50), -- 部门名称 loc VARCHAR(50) -- 部门所在地);-- 职务表,职务名称,职务描述CREATE TABLE job ( id INT PRIMARY KEY, jname VARCHAR(20), description VARCHAR(50));-- 员工表CREATE TABLE emp ( id INT PRIMARY KEY, ename VARCHAR(50), job_id INT, -- 职务id mgr INT , -- 上级领导 joindate DATE, -- 入职日期 salary DECIMAL(7,2), -- 工资 bonus DECIMAL(7,2), -- 奖金 dept_id INT, -- 所在部门编号 CONSTRAINT emp_jobid_ref_job_id_fk FOREIGN KEY (job_id) REFERENCES job (id), CONSTRAINT emp_deptid_ref_dept_id_fk FOREIGN KEY (dept_id) REFERENCES dept (did));-- 工资等级表CREATE TABLE salarygrade ( grade INT PRIMARY KEY, -- 级别 losalary INT, -- 最低工资 hisalary INT -- 最高工资);-- 添加4个部门INSERT INTO dept(did,dname,loc) VALUES (10,'教研部','北京'),(20,'学工部','上海'),(30,'销售部','广州'),(40,'财务部','深圳');-- 添加4个职务INSERT INTO job (id, jname, description) VALUES(1, '董事长', '管理整个公司,接单'),(2, '经理', '管理部门员工'),(3, '销售员', '向客人推销产品'),(4, '文员', '使用办公软件');-- 添加员工INSERT INTO emp(id,ename,job_id,mgr,joindate,salary,bonus,dept_id) VALUES (1001,'孙悟空',4,1004,'2000-12-17','8000.00',NULL,20),(1002,'卢俊义',3,1006,'2001-02-20','16000.00','3000.00',30),(1003,'林冲',3,1006,'2001-02-22','12500.00','5000.00',30),(1004,'唐僧',2,1009,'2001-04-02','29750.00',NULL,20),(1005,'李逵',4,1006,'2001-09-28','12500.00','14000.00',30),(1006,'宋江',2,1009,'2001-05-01','28500.00',NULL,30),(1007,'刘备',2,1009,'2001-09-01','24500.00',NULL,10),(1008,'猪八戒',4,1004,'2007-04-19','30000.00',NULL,20),(1009,'罗贯中',1,NULL,'2001-11-17','50000.00',NULL,10),(1010,'吴用',3,1006,'2001-09-08','15000.00','0.00',30),(1011,'沙僧',4,1004,'2007-05-23','11000.00',NULL,20),(1012,'李逵',4,1006,'2001-12-03','9500.00',NULL,30),(1013,'小白龙',4,1004,'2001-12-03','30000.00',NULL,20),(1014,'关羽',4,1007,'2002-01-23','13000.00',NULL,10);-- 添加5个工资等级INSERT INTO salarygrade(grade,losalary,hisalary) VALUES (1,7000,12000),(2,12010,14000),(3,14010,20000),(4,20010,30000),(5,30010,99990);
5.2、查询练习
-- 查询所有员工信息。查询员工编号,员工姓名,工资,职务名称,职务描述selectemp.id 员工编号,emp.ename 员工姓名,emp.salary 工资,job.jname 职务名称,job.description 职务描述from empjoin jobon emp.job_id = job.id;-- 查询员工编号,员工姓名,工资,职务名称,职务描述,部门名称,部门位置selectemp.id 员工编号,emp.ename 员工姓名,emp.salary 工资,job.jname 职务名称,job.description 职务描述,dept.dname 部门名称,dept.loc 部门位置from empjoin jobon emp.job_id = job.idjoin depton emp.dept_id = dept.did;-- 查询员工姓名,工资,工资等级selectemp.ename 员工姓名,emp.salary 工资,salarygrade.grade 工资等级from empjoin salarygradeon emp.salary >= salarygrade.losalaryand emp.salary <= salarygrade.hisalary;-- 查询员工姓名,工资,职务名称,职务描述,部门名称,部门位置,工资等级selectemp.id 员工编号,emp.ename 员工姓名,emp.salary 工资,job.jname 职务名称,job.description 职务描述,dept.dname 部门名称,dept.loc 部门位置,salarygrade.grade 工资等级from empjoin jobon emp.job_id = job.idjoin depton emp.dept_id = dept.didjoin salarygradeon emp.salary >= salarygrade.losalaryand emp.salary <= salarygrade.hisalary;-- 查询出部门编号、部门名称、部门位置、部门人数selectdept.did 部门编号,dept.dname 部门名称,dept.loc 部门位置,t2.num 部门人数from deptleft join (select dept_id,count(*) num from emp group by dept_id) t2on dept.did = t2.dept_id;
来源地址:https://blog.csdn.net/kkwyting/article/details/129628788
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341