MySQL

本文详细介绍了MySQL的关系型数据库特性,包括如何进入数据库、修改字符集、操作数据库及表,如创建、删除、查询数据,以及命令行常用操作。还涵盖了数据类型如数值、枚举,以及数据操作如更新、删除。此外,讲解了内连接、左连接等多表查询方法,是MySQL入门学习的实用教程。
摘要由CSDN通过智能技术生成

本文完整链接:https://note.youdao.com/web/#/file/5DB568631687422E8ED27E1D94EBFD8F/note/9614E2C00ED6480CB308DB101B40D395/

1介绍

1.MySQL是开源免费的关系型数据库
	关系型数据库:适合存放有规律的数据
	
2.非关系数据库:存放无规律的数据

2命令

MySQL命令

1.进入数据库命令	
mysql -h localhost -u root -p回车
简要写法:	mysql -u root

2.查看MySQL内的信息
	\s

3.更改MySQL默认字符集为utf8
	方式一:一次性修改
	set names utf8;设置为utf8,但是下次又恢复了
	
	方式二:永久性修改
	1.修改客户端的字符集
    [client]
    #password  = your_password
    port           = 3306
    socket        = /tmp/mysql.sock
    default-character-set = utf8

	2.修改服务器端mysqld的字符集
    [mysqld]
    port=3306
    character_set_server = utf8
    3.重启服务器,重新进入数据库

3.数据库操作命令

drop删除数据库和表,delete只删除数据

4.查看所有的数据库
show databases;

5.创建数据库
create database 数据库名;

6.数据库存在则不创建,不存在则创建(不会报错)
create database if not exists 数据库名;

7.删除数据库
drop database 数据库名;
8.删除指定的数据库,若存在则删除,不存在则忽略(且不报错)
drop database if exists 数据库名;

9.查看创建数据库语句
show create database 数据库名;
或者show create database 数据库名\G;

\G为格式化输出

10.进入数据库
use 数据库名;

11.查看当前所在数据库
select database();

4.类型

4.1数值类型

				   	范围				用途
1.TinyInt			-128-127极小范围		一般创年龄
2.TinyInt UNSIGNED 		表示0~255			创年龄
  UNSIGNED			0-255					表示无符号
3.INt				一般大小
4.Float(M,D)		M表示数的位数,D代表小数的位数,最大9999.99

4.2枚举类型

1.Enum表是所有可选的		拿来创性别

4.3关键字

primary key主键
auto_increment自增

4.4字符串类型

varchar(n)		可变长度
char(n)			固定长度
text			可变长度,用于新闻,公告
LongText		小说

5.表的操作命令

包括8.9.10

1.创表
create table if not exists 表名(字段名);
2.显示创表语句
show create table 表名\G;
3.查看表结构
desc 表名;
4.删除数据表
drop table if exists 表名;
5.查看所有表
show tables;
6.创建user表
create table user(
id int primary key auto_increment,
age tinyint unsigned,//tinyint unsigned连着用,表示范围为0-255
name varchar(20)
);

5.1添加数据

单条数据的添加

insert into 表名(字段1,字段2,字段3...) value(值1,值2,值3)

方式一:不设置id,则自动添加Id (推荐使用)

1.insert into user(name,age,sex) value('zs',20,'m');

方式二:若不确定id的值,则可以使用null代替,则会自动递增

insert into user value(null,'zs',19,'男');

方式三:添加部分字段

insert into user(name,age) value('lisi',20);

添加多条数据

语法:insert into 表名 values(值1,值2),(值1,值2);

insert into user values(null,'zs',19,'m'),(null,'lisi',20,'w');

7、MySQL关键词

NOT NULL:	不允许为空
UNSIGNED	无符号
primary key 	主键
auto_increment	自增

8.查询数据

select 字段|* from 表名 【where限制条件】【group by分组】【order by 排序】【limit限制条件】

limit限制条件

语法:limit num限制输出多少条数据;

常用于分页:

limit start,num: start代表起始索引值,num代表每页显示的个数

注意:star+1=id;

不在20-30之间

not between 20 and 30

一、单条数据的添加

insert into 表名(字段1,字段2) value(值1,值2);

插入单条数据(不设置id,则自动添加id)
insert into user(name,age,sex) value (‘张三’,20,‘m’);

插入单条数据(指定id的值)
insert into user(id,name,age,sex) value(1,‘张三’,20,‘m’);

简写的方法添加值
insert into user value(1,‘张三’,20,‘m’)

若不确定id的值,使用null代替,则会自动自增 (推荐使用)
insert into user(id,name,age,sex) value(null,‘张三’,20,‘m’);

二、多条数据的添加

insert into user values(null,‘zs’,20,‘m’),
(null,‘lisi’,20,‘m’);

三、数据的查询操作

select 字段|* from 表名 [where限制条件] [group by 分组] [order by 排序] [limit限制条件]

查询从user表内查询出所有的数据
select * from user;

查询指定字段的数据
select name,age from user;

查询id=2的信息
select * from user where id=2;

查询张三的信息
select * from user where name=‘张三’;

查询大于30岁的 信息
select * from user where age>30;

查询小于20岁的信息
select * from user where age<20;

查询20-30岁的信息
法一:多个条件用and链接
select * from user where age<=30 and age>=20;

法二:between...and...
select * from user where age between 20 and 30;

查询<20或则>30的信息
法一:or
select * from user where age<20 or age>30;
法二:not between …and…
select * from user where age not between 20 and 30;

查询id为1,3,5的信息
select * from user where id in(1,3,5);

四、聚合函数

count()、max()、min()、avg()、sum();

统计总人数
select count(*) from user;

统计user中最高成绩
select max(score) from user;

最低成绩
select min(score) from user;

所有人总分
select sum(score) from user;

查询班级名
select classid from user group by classid;

查询所有班总分
select classid,sum(score) from user group by classid;

所有班级平均分
select classid,avg(score) from user group by classid;

五、oreder by排序

,ASC升序(默认),desc降序

按照id升序排列
select * from user order score by asc;

查询所有人成绩,降序排
select name,score from user order score by desc;

查询男生成绩,降序;
select * from user where sex=‘m’ order score by desc;

查询所有班级平均分,降序排列
select classid,avg(score) from user group by classid order by score desc;

六、limit限制条数

limit num; num为数字,代表限制输出的条数
limit m,n m表示从多少条开始输出,n代表输出的条数

查询成绩前三名的成绩
select score from user order by score desc limit 3;

查询出stu表中成绩最高的三个男生的名字和班级以及成绩
select score,name,classid from user where sex=‘m’ order by score desc limit 3;

6.1limit分页查询 limit m,n 代表m为起始数据,n为每页显示的条数

select * from user limit 0,3;
id 1
id 2
id 3

select * from user limit 3,3;
id 4
id 5
id 6

查询出stu表中所有男生的成绩并降序排列,每三条数据放在同一页
//第一页
select score from user where sex=‘m’ order by score desc limit 0,3;
//第二页
select score from user where sex=‘m’ order by score desc limit 3,3;

分页公式 (pagenum-1)*每页显示的条数

七、concat

将多个字段联合输出

1.将名字年龄按照name:age输出
select concat(name,':',age) from student;

image-20210906104248751

八、as

起别名

可以省略,中间用空格隔开

1.起别名为mes
select concat(name,':',age) as mes from student;

2.起别名为mes,省略as,用空格代替
select concat(name,':',age) mes from student;

九、查询时做简单运算

1.查询五年后和现在的年龄
select age,age+5 from user;

十、distinct

去掉重复的值

1.查询有哪些学校
select distinct classid from student;

十一、like

模糊查询,用于淘宝之类搜索

_任意一个字符

%任意个字符

1.查询出姓杨的
select * from user where name like '杨%'
2.查询有旭的
select * from user where name like '%旭%'

9.修改数据

Update 表名 set字段 [where条件]

9.1修改单个数据

1.改性别为w
update user set sex='w' where name='张三';

9.2修改多个数据

多个字段用,号隔开

update user set age=18,sex='w' where id=4;

10.删除数据

delete from 表名 [where条件]

注意:id不会变,还是再占用

delete from user where id=4;

11.表结构的操作

alter table 表名

11.1、添加字段

alter table 表名 add 字段名 字段类型 【after 字段名|first】

1.age后面增加phone字段
alter table t1 add phone int(11) after age;

2.name后面增加sex
alter table t1 add sex enmu('男','女') after name;

3.再最前面加aa
alter table t1 add aa varchar(20) first;

11.2修改字段

alter table 表名 modify 字段名 类型;

1.修改sex并且默认保密
alter table t1 modify sex enum('男','女','保密') default '保密';

11.3删除字段

alter table 表名 drop字段名

drop,除了不能删除数据,删除表结构、删除数据库

1.删除aa字段
alter table t1 drop aa;

12特殊的类型限制

12.1float

  • 若给出在范围内的整数,则自动在后面补充零
  • 若给出的小数超过位数则四舍五入
  • 若给出的值超过范围,则按照最大的值显示

12.2tinyint

范围:-128~127

超过整型的-128~127则只能按照最大的显示

12.3无符号设置

unsigned

12.4枚举类型

给枚举类型添加值时,必须要符合枚举类型的规范

12.5not null设置

不能为空

12.6设置默认值 default

12.7唯一unique

13清空所有数据

truncate 表名;

清空的包括id,数据

truncate t1;

14.插入大数据

1.创建表不要那么严格
2.insert into stu(name,age) select name,age from stu;

15.内连接

也叫等值连接,inner join产生同时符合A和B的一组数据(取交集)

1.用等值连接查询A,B相等的id的信息
select A.id,A.name,B.id,B.name from A,B where A.id=B.id;

2.用内连接查询A,Bid相等的信息
select * from A inner join B on A.id=B.id

16.左连接

  • left join,左连接从左表(A)产生一套完整的记录,与匹配的记录(右表(B)) .如果没有匹配,右侧将包含null。
  • 右连接同理

image-20210906173445982

17.多表查询

多表查询订单

select g.name,g.price,o.name,o.phone,o.address from orders o,goods g,rel r where rel.oid=o.id and rel.gid=g.id;

ge) select name,age from stu;


# 15.内连接

也叫等值连接,inner join产生同时符合A和B的一组数据(取交集)

```mysql
1.用等值连接查询A,B相等的id的信息
select A.id,A.name,B.id,B.name from A,B where A.id=B.id;

2.用内连接查询A,Bid相等的信息
select * from A inner join B on A.id=B.id

16.左连接

  • left join,左连接从左表(A)产生一套完整的记录,与匹配的记录(右表(B)) .如果没有匹配,右侧将包含null。
  • 右连接同理

[外链图片转存中…(img-niWRQUUv-1630994338536)]

17.多表查询

多表查询订单

select g.name,g.price,o.name,o.phone,o.address from orders o,goods g,rel r where rel.oid=o.id and rel.gid=g.id;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值