一、MySQL启动与停止
1.启动MySQL服务
net start mysql
2.停止MySQL服务
net stop mysql
二、登录MySQL
1.命令行MySQL的路径
先跳到mysql放置的盘中,比如我的放在d盘,所以我要先输入d:
cd mysql-8.0.25-winx64\bin或者如下图,分两次输入也可以
2.登录MySQL数据库
mysql -u root -p
三、数据库操作
1>.创建数据库
1.创建数据库test_db
CREATE DATABASE test_db
2.创建数据库如果不存在
CREATE DATABASE IF NOT EXISTS test_db
3.创建数据库时指定字符集和校对规则
CREATE DATABASE test_db
DEFAULT CHARACTER SET utf8mb4
DEFAULT COLLATE utf8mb4_0900_ai_ci
如果不确定字符集有哪些,可以用show variables like '%character%'来查看
如果不确定校验规则有哪些,可使用show variables like ‘collation%’来查看
2>.查看数据库
1.查看所有数据库
SHOW DATABASES
2.查看名为test_db的数据库
SHOW DATABASES LIKE 'test_db'
3.查看名字中包含test的数据库
SHOW DATABASES LIKE '%test%'
4.查看名字以test开头的数据库
SHOW DATABASES LIKE 'test%'
5.查看名字以db结尾的数据库
SHOW DATABASES LIKE '%db'
3>.修改数据库
1.修改数据库
ALTER DATABASE test_db
DEFAULT CHARACTER SET gb2312
DEFAULT COLLATE gb2312_chinese_ci
4>.删除数据库
1.删除数据库
DROP DATABASE test_db
2.如果有test_db数据库,则删除
DROP DATABASE IF EXISTS test_db
5>.选择数据库
1.指定数据库
USE test_db
6>.MySQL注释
1.单行注释
#注释内容
或
-- 注释内容(注意内容前的空格)
2.多行注释
/*
第一行
第二行
*/
7>.大小写规范
mysql语句的关键字和函数名没有大小写之分,select和SELECT和SeLect都是一样的,
但是表的别名、字段名都是区分大小写的,操作数据库过程中要注意字段名、表名等是否一致,
8>.备份数据库
mysqldump -u root -p 123456 db > db.sql
mysqldump -u root -p 123456 -A > all.sql
9>.恢复数据
mysql -u root -p 123456 db < db.sql
四、用户管理:
1.新建用户:
CREATE user name
2.更改密码:
set password for name=111111
五、数据表基本操作
1>.创建数据表
/*
字段名:id 数据类型:int(11) 备注:员工编号
字段名:name 数据类型:varchar(25) 备注:员工名称
字段名:deptid 数据类型:int(11) 备注:部门编号
字段名:salary 数据类型:float 备注:工资
*/
CREATE TABLE table1
(
id int(11), -- 创建字段id,int类型,限制11位数
name VARCHAR(25),
phone int(11),
age int,
sex varchar(25),
coid int(11),
coname varchar(25)
)
2>.增加字段
1.增加列grade,类型VARCHAR(25)
ALTER TABLE student ADD grade VARCHAR(25)
2.在student表的第一列增加stuId字段
ALTER TABLE student ADD stuId INT(4) FIRST
3.在name字段后添加stuno字段
ALTER TABLE student ADD stuno INT(11) AFTER name
3>.修改数据表
1.修改表名
ALTER TABLE student RENAME TO stu
2.修改表中字段名deptid改为deid
ALTER TABLE tb1 CHANGE deptid deid int(8)
3.修改字段数据类型
ALTER TABLE stu MODIFY sex varchar(8)
5.删除字段
ALTER TABLE stu DROP coname
6.修改表字符集
ALTER TABLE tb1 CHARACTER SET gb2312 DEFAULT COLLATE gb2312_chinese_ci
4>.删除数据表
1.删除数据表
DROP TABLE stu
2.删除关联的表
①.创建关联表
create table stu
(
id int(11) primary key,
name varchar(22),
sex varchar(8),
age int,
phone int(11),
coid int(4),
index(coid)
);
create table course
(
id int(4) primary key,
name varchar(25),
teacher varchar(22),
constraint id foreign key (id) references stu(coid)
);
②.解除tb_2的外键约束
ALTER TABLE course DROP FOREIGN KEY id
③.解除关联关系后,就可以使用drop table 语句删除stu
DROP TABLE stu
5>.查看表结构
1.以表格形式展示表的字段信息
DESC student
2.以sql语句形式展示表结构
SHOW CREATE TABLE student
六、常用增删查改
1>.增加表中数据
1.增加数据包含表中全部字段内容
insert into stu values (1,'hjk','男',23,11111,1000)
2.增加数据包含表中部分字段数据
INSERT INTO student (name,sex,age,phone) values ('jh','男',23,10000)
2>.查找表中数据
1.无条件的查找表中数据
select * from student
2.查找表中部分数据
select name,phone from student
3.查询表中第一到三条数据
select * from stu limit 1,3(第一条数据是从0开始算的,所以limit后的1实际是第二条)
4.单条件的查找表中数据
select * from stu where id=1
5.多条件查询表中数据
select * from student where name='' and sex='男'
6.模糊查询名字中含j的学生信息
select * from student where name like '%j%'
7.模糊查询学生姓名为h开头的两字名 -- 下划线_表示任意一个单字符,h后面只有一个字
select * from stu where name like 'h_'
8.给表起别名,as可省略
select a.name as '学生姓名',a.phone '学生电话' from stu as a where a.id=1
9.查找名字在这列表中的学生信息
select * from stu where name in ('hj','hjk','jk')
10.查找年龄在23-24之间的学生信息
select * from stu where age between 23 and 24
11.查找到的信息根据id升序,age降序
select * from stu order by id asc,money desc
12.去重查找(此前特意增加一条数据)
select distinct a.name from student a
13.统计符合要求的人数
select count(*) from stu where age>10
14.查找最大值
select max(age) from stu
15.查找最小值
select min(age) from stu
16.查找平均值
select avg(age) from stu
17.查询结果分组 --GROUP_CONCAT() 函数会把每个分组的字段值都显示出来。
select age,sex,group_concat(name) from stu group by age,sex
18.多条件查找
select * from stu where age=23 and sex='nan'
19.多个字段进行分组
select * from stu group by sex,age -- group by后还有条件必须要用having子句
20.合并两条select语句的结果,字段数和数据类型都要一致
select name,phone from stu union select name,phone from teacher -- 还有union all,它和union的区别在于它不会去重
21.两表关联无条件查询
select * from stu s, course c where s.coid=c.id
22.两表关联含条件查询
select * from stu s, course c where
s.coid = c.id
and s.age = 23
23.左连接查询
select * from stu s left join course c on s.coid=c.id
24.右连接查询
select * from stu s right join course c on s.coid=c.id
25.内连接查询
select * from stu s inner join course c on s.coid=c.id
26.子查询,把子查询的结果当做另一条sql的条件
select * from course c where c.id = (select coid from stu where name='hjk')
27.子查询,把子查询的结果当做一个表
select c.teacher,m.name,m.id from course c,(select name,id,coid from stu where sex='nan')as m where c.id=m.coid