MYSQL使用笔记

连接数据库

命令:

mysql -uroot -ptoot(-u用户名 -p密码)

例如:
在这里插入图片描述

创建数据库

代码:

create database 数据库名称;

例如:
在这里插入图片描述

查看数据库

命令:

show databases;

例如:
在这里插入图片描述

选择数据库

命令:

use 数据库名称;

例如
在这里插入图片描述

删除数据库

命令:

drop database 数据库名;

创建表

命令:

create table 表名(属性名,类型名,是否为空,默认值,注释);

例如
在这里插入图片描述
这里创建了一个表seet1,其中有字段名

id,类型为int,不能为空,注释为ID
name,类型为char型长度为10,可以为空(因为没有设置not null)默认值为‘张三’注释为姓名

存储引擎为InnoDB,默认值,串类型为gbk;

显示表

简单显示表
命令:

desc 表名;

例如:
在这里插入图片描述
显示表的全部字段
命令:

show full columns from 表名;

例如
在这里插入图片描述
详细显示表的属性
命令:

show create table 表名;

例如
在这里插入图片描述

修改字段

在表创建后可以对表中的字段进行修改
命令:

alter table 表名 modify 字段名 (修改的信息);

例如:将表中的id修改为varchar(2)型,注释为学号

在这里插入图片描述
修改字段名称
命令

alter table 表名 change 字段名称 新名称 新的数据类型

重命名表
命令

alter table 旧表 rename  新表
或者
rename table 旧表 to 新表

增加字段

在表创建之后还想增加字段
命令:

alter table 表名 add (字段信息);

例如:增加一个sex的字段,enum(‘男’,‘女’) 默认值为 男,注释为性别
在这里插入图片描述
这里可以对表中的字段进行添加主键和绑定外键的操作

添加主键
命令:

alter table 表名 add primary key (字段名)

例如:将id设置为主键
在这里插入图片描述
添加外键
命令:

alter table 表名 add 字段名 foreign key 表名(字段名) references 表名(字段名)

在这里插入图片描述
在这里插入图片描述
当添加外键时会报该错误,原因是两者的类型不同,比如:varchar 与 int,或者 int无符号 与 int有符号,都不行,必须要一模一样才可以,修改完成后,就可以添加外键了。
在这里插入图片描述
修改的是表2中的ID属性,改为为了varchar,这样就与表一中的name的类型一样,这就可以进行添加外键的操作了。
在这里插入图片描述

删除字段

命令:

alter table 表名 drop 属性名

删除外键

首先要知道外键是什么
命令:

show create table 表名

在这里插入图片描述
删除外键:

alter table 表名 drop foreign key 外键名

在这里插入图片描述
报错是因为seet2中没有该外键名称,只有seet1中有该键,所以在seet1中将外键删除即可。

重命名外键名称

上面再创建外键时会自动为我们生成一个外键名称
要想自己创建名称,就要使用如下
命令:

constraint 约束名称 [primary key(属性名)|foreign key(属性名) references 表名(属性名)|unique key(属性名)|check 语句]

这里是要再创建表的时候才能对其进行重命名的语句

设置默认递增

在为创建表的时候在属性中加入auto_increment即可。
创表后
命令:

alter table 表名 auto_incremenr = 1000;

在这里插入图片描述

设置字段排序

命令:

alter table 表名 modify 字段1 字段1类型 [first] [after] 字段2

first 和 after为自选字段
first默认为第一个属性
after为将字段1放到字段2之后

更改表的属性

命令:

alter table 表名 engine=引擎名

删除表

命令:

drop table 表名

在这里插入图片描述
因为有外键不能进行删除,
所以我们要删除外键。
删除了外键就可以将表进行删除操作了。

在这里插入图片描述
重名名外键名称
命令:

constraint <重命名的名称> foreign key (属性名) reference 表名 (属性名)

这里的指令是在创建数据表时使用的

复制表

仅仅复制表1的结构到表2中
命令:

create table2 like1

例如:
复制book表的表结构到bb表中
在这里插入图片描述

复制表1的结构以及数据到表2中
命令:

create table2 as select * from1

插入数据

为所有字段插入数据

命令:

insert into 表名 values(值1,值2,……);

在这里插入图片描述

为表的指定字段插入数据

在表名后列出所有字段,用来更改传值顺序,或者选择插入
命令:

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

在这里插入图片描述

同时插入多条记录

命令:

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

不同的值用逗号隔开

在这里插入图片描述

从目标表中插入数据

命令:

insert into 表名 [属性列表] select 列表名 from 表名;

在这里插入图片描述

replace插入语句

命令:

replace [into] 表名[属性列表] values(1,值2,……);

在这里插入图片描述

采用该方法进行插入时,如果插入的记录的主键值或者唯一约束的字段值与已经有记录的值相同,则已有记录会被删除后添加新的记录

修改数据

命令:

update 表名 set 属性1=1,属性2=2…… where 条件表达式;

在这里插入图片描述

删除数据

命令:

delete from 表名 [where 条件表达式];

在这里插入图片描述

在这里插入图片描述

truncate清空语句

命令:

truncate table 表名;

在这里插入图片描述

单表查询

select语法

命令:

select 字段名 from <表名或视图名>
[where 条件表达式]
[group by <列名 1>]
[having <条件表达式>]
[order by <列名2> [asc|desc]]
[limit 子句]

查询所有字段

命令:

select * from 表名;

指定字段查询

命令:

select 属性1,属性2…… from 表名

在这里插入图片描述

避免重复数据查询

命令:

select distinct * from 表名

在这里插入图片描述
这里先插入了和4相同姓名和性别的5,将name和sex设置为查询字段时,采用distinct查询就会只查询到一个
在这里插入图片描述
采用all查询时就会出现两个Jerry,查询中默认使用all

在这里插入图片描述

为表和字段取别名

命令:

select <字段属性1> as 别名1,<字段属性2> as 别名2…… from 表名1 别名1,表名2 别名2……;

在这里插入图片描述

from子句

用于指定数据源
可以使用数据源.*来获取到该数据中的所有列中的数据

select 表名.* from 表名;

在这里插入图片描述
可以在选择列的时候对列中的字段进行显示的操作

select (属性1表达式) from seet1

在这里插入图片描述

where子句

对记录进行筛选,表示关系运算中的选择运算
在这里插入图片描述

between and

查询数据在数值1和数值2之间的数据
命令:

select 属性1…… from 表名 where  属性名 between 数值1 and 数值2; 

在这里插入图片描述

[not] in

筛选数据在集合中的所有信息
命令:

select 属性…… from 表名 where 属性 in (元素1,元素2……);

在这里插入图片描述

is [not] null

筛选字段是否为null的所有信息
命令:

select 属性…… from 表名 where 属性 is not null

在这里插入图片描述

注意和=null的区别
=null是表示字段为null字符串的信息
is null表示该字段为空的信息,两者是不同的

like

匹配关键字
%:匹配多个字符
_:匹配单个字符
命令

select 属性…… from 表名 where 属性 like “a%;

在这里插入图片描述
注意:
在这里插入图片描述
查询姓名以M开头中间有_且倒数第二个字符时n的用户信息
在这里插入图片描述

高级查询

SQL提供了统计函数进行数据统计
在这里插入图片描述
查询性别为男的id之和
命令

SELECT sum(id) from seet1 where sex='男'

在这里插入图片描述

分组查询

GROUP BY

可以将查询到的结果按照一个字段或多个字段进行分组,并可以对分组进行统计
语法:

select * from 表名  group by 分组标准 [having 表达式] [with rollup]
  • 分组标准可以是一个字段,也可以是多个字段
  • 查询结果是每一个分组显示一条数据
  • having 表达式 和group by 搭配使用,且只能用于分组查询,注意和where之间的区别,筛选条件可使用统计函数,或子函数查询,可以使用别名
  • with rollup 在所有的记录后面加上一条记录,对上面的记录进行求和
    在这里插入图片描述

统计每个性别的用户的个数
在这里插入图片描述
查询每个班级中的男女个数分别为多少

SELECT class,sex,count(*) as "总人数" from seet1 GROUP BY sex,class

在这里插入图片描述

having

分组筛选
用于分组后的显示数据在进行筛选
统计人数大于3的班级总人数
在这里插入图片描述

with rollup

分组汇总
查询每个班级中的男女个数分别为多少,并输出总人数
在这里插入图片描述

排序查询结果

order by

命令

order by 属性名[asc|desc]……

例如统计所有用户信息,并以id降序排序
在这里插入图片描述

限制查询结果的数目

limit

语法:

limit {[offset,]row_count|row_count OFFSET offset}

例如:
查询从第二个开始的后面5条数据
在这里插入图片描述

多表查询

内连接查询

等值连接

命令:

select * from1 inner join2 on1.属性1=2.属性1

这里的两个属性必须存在相同的元组,属性名不同可以,但是其中的值必须要相同

自然连接

select * from1 natural join2

得到的表相同字段只显示一列

不等值连接

命令:

select * from1 inner join2 on1.属性1!=2.属性1

外连接查询

左外连接

命令:

select * from1 left join2 on1.属性=2.属性

左连接就是右边属性不存在,而左边属性存在,则会将右边属性赋值为空值,然后和左边进行连接

右外连接

命令:

select * from1 right join2 on1.属性=2.属性

子查询

使用in,not in,any,all,exist等关键字来进行嵌套查询

带IN的子查询

命令:

select * from1 where 属性1 in (select 属性1 fromwhere ……)

例如:
查询看过红楼梦的读者信息
在这里插入图片描述

带exists的子查询

命令:

select * from1 where exits (select * from2 where ……)

exist 后面的查询语句有返回值,则前面的select就进行查询
例如:
借阅了机械工业出版社出版的所有书的读者信息
在这里插入图片描述

带有any的子查询

命令:

select * from1 where 属性1 >[<|=] any(select 属性1 from ……)

例如:
查询年龄比任意一个女生大的男生信息
在这里插入图片描述

带有all的子查询

命令:

select * from1 where 属性1 >[<]all(select 属性1 from ……)

例如:
查询比所有年龄都大的读者信息
在这里插入图片描述

创建索引

命令:

create index 索引名称 on 表名(属性名[(长度)][asc|desc])

例如
在表book的bname的前5个字段加上名为book_index的索引,默认为倒序排序
在这里插入图片描述
也可以在创建表的时候添加索引
就想当时在表的属性上添加主键属性和外键属性一样
例如:

create table 表名(
……
index 索引名 (属性名2(长度),属性名2……)
);

查看索引

命令:

show index from 表名

在这里插入图片描述

删除索引

命令:

drop index 索引名称 on 表名

在这里插入图片描述

或者使用alter语法
命令:

alter table 表名 drop index 索引名

创建视图

命令:

create [algorithm={undefined | merge | temptable} 
view 视图名称 
as select * from 表名

例如
在book表上创建一个只含有rno和borrowtime属性的视图
在这里插入图片描述

删除视图

命令:

drop view 视图名称

查看视图定义

命令:

desc 视图名称
show create view 视图名称

修改视图定义

命令:

create or replace view 视图名称 as select ……
或者
alter view 视图名称 as select……

更新视图数据

命令:

create view 视图名称(属性列表) as select ……
或者
update view 视图名称 set 属性1=value1 where ……(这里要满足一定的条件)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值