WEB 11.MySQL增删改查操作命令

数据的基本认识和操作

启动服务

在命令行 输入 net start mysql
停止服务: net stop mysql

链接数据库

Mysql -u root -p -h -P
-u 你的mysql的用户名
-p 你的mysql密码
-h 你mysql服务的地址 ip
-P mysql数据库的端口号 默认3306
完整写法:
Mysql -uroot -p -hlocalhost -P3306
咱们的数据库服务装在了本地所以-h可以省略
端口号使用是默认端口索引-P也可以省略
在这里插入图片描述

Mysql数据库的基本结构

Mysql关系型数据库管理软件
Mysql>database>table>filed
多条数据组成一张表
多张表组成一个库
Mysql管理多个库

Sql语句分类:

SQL结构化查询语言,用于关系型数据库数据的操作
DDL(定义) 一般适用于对库的操作和表的操作
DML(操作) 一般是 数据的添加 数据的修改 数据的删除
DQL(查询) 一般是查询
DCL(控制) 一般使用权限管理 一般是有dba来去操作
Sql的语法规则
1.sql语句必须以分号结尾
2.Sql 不去分大小写 但是一般文档中 sql关键都是大写

1. 数据库的命令

查看所有的库
在这里插入图片描述
创建数据库
在这里插入图片描述
切换数据库
在这里插入图片描述
查看当前所在的库
在这里插入图片描述
删除库
在这里插入图片描述

2.表操作命令

查看当前库中所有的表
格式: SHOW TABLES; 

创建表
Create table 表名(字段名 字段类型 约束,字段名 字段类型 约束)charset=utf8;
create table student(
id int unsigned not null auto_increment primary key,
name char(20),
age int,
gender char(1),
email varchar(32),
class varchar(32)
)charset=utf8;

 
查看建表语句
格式:SHOW CREATE TABLE 表名

 
查看表结构
格式: DESC 表名

 
删除表:
DROP TABLE 表名

3.数据的基本操作

添加数据 
       格式:INSERT INTO 表名(字段1,字段2,...) values(值1,值2,...)
格式:INSERT INTO 表名(id,name,age,gender,emial,class) VALUES(1,’小王’,18,’1’,’xiaowang@qq.com’,’python’);
指定所有字段添加数据
不指定字段添加数据
	向student表中添加一条数据 值的顺序必须按照表结构的顺序来添加
	INSERT INTO student values(5,'赵六',30,'1','z@163.com','web');	
指定部分字段添加
	INSERT INTO student(id,name) values(6,'田七');
一次添加多条数据
	INSERT INTO student values
	(7,'王八',28,'0','w@.com','ui'),
	(8,'九九',19,'1','j@qq.com','python'),
	(9,'后羿',80,'1','h@qq.com','python'),
	(10,'吴刚',79,'1','w@qq.com','python');
查询数据所有的数据
格式: SELECT * FROM 表名
*  代表所有字段
     格式:SELECT 字段 FROM 表名;
     查询所有的数据
	SELECT * FROM student;
修改数据
格式:UPDATE 表名 SET 字段=值 WHERE 条件
注意:更新数据时尽量配合where去使用,如果不添加where条件所有的数据都会更新;
格式: UPDATE 表名 SET 修改的字段 WHERE 条件

     更新name为吴刚的数据 把年龄修给成77 把性别改成0
     UPDATE student SET age=77,gender='0' WHERE name='吴刚'; 	
更新 id为1的学生年龄为20
Update student set age=20 where id=1;
删除数据
格式:DELETE FROM 表名 WHERE 条件
注意:
如果不添加where条件会讲库中所有数据删除掉
      格式:DELETE FROM 表名 WHERE 条件
      删除name是吴刚的数据
	DELETE FROM student WHERE name='吴刚'; 

4.Mysql数据类型

数值类型
Int         4字节
Tinyint     1字节
decimal     一般存浮点型
格式:DECIMAL(M,D)  M你要存的数据 D保留几位小数  
decimal(5,2) 
      字符串
	char         定长字符串
	varchar	变长字符串
	char(20)   就算你当前字段中只存储了1个字符 那么它也是占据20个字符的大小 
	varchar(20)  最多能存20个字符 如果存了小于20个字符 它的实际占据大小是以你存的内容为准
text文本类型
时间日期类型
	datetime 混合事件日期类型 年月日时分秒 格式 年-月-日 时:分:秒
        Datetime  混合事件日期类型   格式 yyyy-mm-dd hh:mm:ss 

5.常见的字段约束

Unsigned       无符号  一般给数值型的字段添加
				如果添加代表当前字段只能存正数
Int(5)         5代表显示的宽度  如果是有符号默认是11  如果是无符号默认10
Not null       不能为空 默认字段可以为空 如果添加了 那么此字段不能为空
Default         默认值
Primary key     主键约束(主键索引) 不能为空 且唯一 用于表示数据的唯一标识
Unique          唯一约束(唯一索引) 可以为空 不能重复 具有唯一性
Auto_increment  自动递增  一般配合主键去使用
创建一张表 demo
	有字段 id 唯一索引 
	uname 字符串类型 不能为空
	email 字符串类型  可以为空
	gender 字符串   不能为空 默认值为 2

	create table demo(
		id int unsigned not null  auto_increment primary key,
		uname varchar(32) not null,
		email varchar(32),
		gender varchar(5) not null default '2'
	)charset=utf8;

6.表结构的操作

格式: ALTER TABLE 表名 操作
添加字段 add
	给student表添加一个phone
	ALTER TABLE student ADD phone varchar(11) not null default '110';

修改字段 modify/change
		修改字段约束
	将phone字段的类型改成char类型
	ALTER TABLE student MODIFY phone char(11);
	将phone字段的类型改成int类型
	注意:将字符串转成数值型的时候,当前字段的值都必须是数字表示的字符串
	ALTER TABLE student MODIFY phone int;
	修改字段名
		将phone字段的名字改成 aa
		ALTER TABLE student CHANGE phone aa varchar(11);
		将字段的约束改成 char(11);
		ALTER TABLE student CHANGE aa aa char(11);
	删除字段 drop
		删除aa字段
		ALTER TABLE student DROP aa;
	修改表名 rename as
		修改student表名为 students
		ALTER TABLE student RENAME AS students;
	修改表的编码格式
		ALTER TABLE students CHARSET=GBK;
	修自增值
		修改自增值为20
		ALTER TABLE students AUTO_INCREMENT=20;

7.运算符:

算术运算符: + - * / %
比较运算符:>  <  >=  <=  =  !=  <>
特殊比较运算符:in, not in,is null,is not null,like,between and
逻辑运算符:and or not  
逻辑运算符优先级 or<and<not
 

8.where条件查询

运算符 可以用在where条件
查询所有的数据
	SELECT * FROM 表名 WHERE 条件
 
练习:
	1.查询年龄不等于18岁的所有用户信息
	SELECT * FROM students WHERE age!=18;

	2.查询班级为python的所有用户信息
	SELECT * FROM students WHERE class='python';

	3.查询年龄大于16岁的所有用户信息
	SELECT * FROM students WHERE age>16;

	4.查询年龄在18到24岁之间的所有用户信息 包含18和24岁;
	SELECT * FROM students WHERE age>=18 and age<=24;
	SELECT * FROM students WHERE age between 18 and 24;

	5.查询年龄不在18到24之间的所有用户信息 not between 不包含开始和结束
	SELECT * FROM students WHERE age<18 or age>24;
	SELECT * FROM students WHERE age not between 18 and 24;

	6.查询id值是1,3,4,6的所有用户信息
	SELECT * FROM students WHERE id=1 or id=3 or id=4 or id=6;
	SELECT * FROM students WHERE id in (1,3,4,6);

	7.查询python班和web班级的所有女生信息
	SELECT * FROM students WHERE (class='python' or class='web') and gender='0';

9.模糊查询:

	like 有两个 
	% 任意位的任意字符 
	_ 一位任意字符

	1.查询名字以‘小’开头的用户信息
	SELECT * FROM students WHERE name like '小%';
	2.查询emial中包含q的所有用户信息
	SELECT * FROM students WHERE email like '%q%';
	3.查询姓名是两个字的用户信息
	SELECT * FROM students WHERE name like '__';
	4.查询姓名以小开头并且是两个字的用户信息
	SELECT * FROM students WHERE name like '小_'; 

10.聚合函数:

	Max() min() count() avg() sum() 
	1.统计当前表中一共有多少条数据
	SELECT count(*) FROM students;

	2.查询python班级最大年龄最小年龄以及平均
	SELECT max(age),min(age),avg(age) FROM students WHERE class='python';

	3.统计男生的数量
	SELECT count(*) FROM students WHERE gender='0';

11.去除重复的数据:distinct

	1.查询所有的班级
	SELECT distinct class FROM student;
	SELECT class FROM students group by class;

	2.查询不重复的班级和性别
	SELECT distinct class,gender FROM student; 

12.分组group by

	注意:count(*) 在分组中使用时,统计的分别是分组后每个组的数据条数

	1.查询表中有哪些班级
	SELECT class FROM students GROUP BY class;

	2.统计当前表中男生和女生的人数各多少人
	SELECT gender,count(*) FROM students GROUP BY gender;

	3.统计每个班级的人数
	SELECT class,count(*) FROM student GROUP BY class;

	4.统计每个班,男生和女生个多少人
	SELECT class,gender,count(*) FROM students GROUP BY class,gender;

13.Having 子句查询

	只能在分组后面去使用 
	类似于where 但是having筛选的是分组后的数据

	1.统计每个班级的人数,并查询出班级人数大于2的班级
		SELECT class,count(*) FROM students GROUP BY class HAVING count(*)>2;

	2.查询每个班级男生人数大于2的班级
	SELECT class,gender,count(*) FROM students GROUP BY class,gender HAVING gender='1' and count(*)>2;

	先查询出所有的男生 在按照班级分组 然后在用having过滤
	SELECT class,count(*) FROM students WHERE gender='1' GROUP BY class HAVING COUNT(*)>2;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值