MySQL数据库一小时精通

基础篇

cmd中使用MYSQL的相关指令:

net start mysql // 启动mysql服务

net stop mysql // 停止mysql服务

 

mysql -uroot -p1234//登录MYSQL(-u为用户名-p为密码)

 

//登录参数

mysql -u用户名 -p密码 -h要连接的mysql服务器的ip地址(默认127.0.0.1) -P端口号(默认3306)

 

exit //退出mysql

quit //退出mysql

 

 

 

SQL通用语法:

 

  1. SQL 语句可以单行或多行书写,以分号结尾。

·    2.MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写。

     3.单行注释: -- 注释内容 或 #注释内容(MySQL 特有)

使用-- 添加单行注释时,--后面一定要加空格,而#没有要求。

多行注释: /* 注释 */

SQL分类:

aa1100e49bcc4a6ebae1870b52cf5841.png

 

DDL:

操作数据库,表等。

 

操作数据库

 

1.查询

show databases;

 

2.创建数据库

create database 数据库名称;

创建数据库(如果不存在则创建)

create database if not exists 数据库名称;

 

3.删除数据库

drop database 数据库名称;

删除数据库(如果存在则删除)

drop database if  exists 数据库名称;

 

4.使用数据库

查看当前数据库

select database();

使用数据库

use 数据库名称;

 

操作表

 

查询表

查询当前数据库下的所有表

show tables;

查询表结构:

desc 表名;

 

创建表

create table 表名(

字段名1   数据类型1,

字段名2   数据类型2,

字段名3   数据类型3,

字段名4   数据类型4

);

删除表

1.删除表

drop table 表名;

 

2.判断表是否存在,再删除表

drop table if not exists 表名;

修改表

1.修改表名

alter table 表名 rename to 新表名;

2.增加一列

alter table 表名 add 列名 数据类型;

3.修改数据类型

alter table 表名 modify 列名 新的数据类型;

4.修改列名和数据类型

alter table 表名 change 列名 新列名 数据类型;

5.删除列

alter table 表名 drop 列名;

 

DML:

添加数据:

 

1.给指定列添加数据

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

 

2.给全部列添加数据

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

 

3.批量添加数据

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

 

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

 

修改数据:

 

1.修改表数据

update 表名 set 列名1=值1,列名2=值2,...[where 条件]

 

2.删除数据

delete from 表名 [where条件];

 

 

DQL:

e47ca51476364982bc92753fb9e79aff.png

执行顺序:

25fb31a0caf84f0f88c223aeb79f366a.png 

查询语法:

select   [distinct//去除重复记录]

字段列表(age,math) (可以起别名如:stu AS学生)

from

表名列表

where

条件列表(age>=20 && age<=30;

 age>=20 and age<=30;

age between 20 and 30;

age=20 || age=22 ||age=30;

age=20 or age=22 or age=30;

age in (18,22,30);)

//NULL 的比较不能用=或!=  需要使用is null/is not null

// _为站位符代表单个字符  %为任意多个字符

//模糊查询

SELECT * FROM tb_brand WHERE brand_name LIKE '%三%';

//分组之后,查询的字段一般为聚合函数和分组字段

 

group by

分组字段

//查询男同学和女同学各自的数学平均分

// select sex,avg(math) form stu group by sex;

 

//查询男同学和女同学各自的数学平均分以及人数

// select count(*),sex,avg(math) form stu group by sex;

 

//查询男同学和女同学各自的数学平均分,且要求数学低于70不参与分组

// select sex,avg(math)

form stu  where math>70  group by sex;

 

//查询男同学和女同学各自的数学平均分,且要求数学低于70不参与分组,且分组之后人数大于2

// select sex,avg(math)

form stu  where math>70  group by sex

having count(*)> 2 ;

 

having

分组后条件

//查询男同学和女同学各自的数学平均分,且要求数学低于70不参与分组,且分组之后人数大于2

// select sex,avg(math)

form stu  where math>70  group by sex

having count(*)> 2 ;

 

order by

排序字段(math desc;//按数学降序排序

 english asc;//按英语升序排序

math desc ,english asc;

//按数学降序排序,如果数学成绩一样再按英语升序排序 )

 

limit

分页限定

//语法:select 字段列表 from 表名 limit起始索引,查询条目数;

起始索引:从0开始

计算公式:起始索引=(当前页码-1)*每页条目数

 

 

聚合函数:

count(列名)统计数量

max(列名)最大值

min(列名)最小值

sum(列名)求和

avg(列名)平均值0

语法:

select 聚合函数(列名) from 表;

//null不参与聚合函数运算。

 

 

DCL:

471f0c15dd7e4988a031d27895006969.png

权限控制:

442471d47dd84b99a2ea9173f28f8576.png

308a801b2da74263a45e22d525aed58f.png 

函数:

 字符串函数

9f1f6dede1a246118b61423b878f1a26.png

数值函数

10be3f300fd94512a499117b192bee16.png 

日期函数

87afd6e05d544103b93e6e0a5fda2b7f.png 

流程函数

13ffd61551c24fceb703fa99082463da.png 

 

 

约束

约束是作用于表中列的规则,用于限制加入表的数据。

 

非空约束:保证列中数据不为空 not null

唯一约束:保证列中数据各不相同 unique

主键约束:主键是一行数据的唯一标识,要求非空且唯一primary key

检查约束:检查列中数据是否满足要求。Check(MYSQL不支持)

默认约束:保存数据未指定值,则采用默认值。default

外键约束:外键用来让两个表的数据建立连接,保证数据的唯一性和完整性。foreign key

不指定值时自动增长: auto_increment

 

语法:

1.添加约束:

create table 表名(

列名 数据类型 not null,

...

);

2.建完表后添加非空约束

alter table 表名 modify 列名 数据类型 not null;

3.删除约束

alter table modify 字段名 数据类型;

4.添加外键约束

create table 表名(

列名 数据类型 not null,

...

[constraint] [外键名称] foreign key (外键列名) references 主表名称(主表列名)

);

5.建完表后添加外键约束

alter table 表名 add constraint 外键名称 foreign key (外键列名) references 主表名称(主表列名);

6.删除外键约束

alter table 表名 drop foreign key 外键名称;

 

 

 

 

多表查询:

1.内连接(查询两个表的交集)

隐式内连接:

select 字段列表 from 表1,表2... where 条件;

显示内连接:

select 字段列表 from 表1 join 表2 on 条件

 

2.外连接

左外连接(表1所有数据+两表交集):

select 字段列表 from 表1 left join 表2 on 条件

右外连接(表2所有数据+两表交集):

select 字段列表 from 表1 right join 表2 on 条件

 

补充:

联合查询

5bbddbecbed04888a019792f0b794d6f.png

union 合并后去重,union all 直接合并

使用条件,查询返回的列必须保持一致。 

 

3.子查询(嵌套查询)

 单行单例(标量子查询)

作为条件值,使用=,!=,<,>进行条件判断

select 字段列表 from 表名 where 字段名= (子查询);

例:select name form stu where math >

(select math from stu where name=’小马’ );

 

多行单列(列子查询)

3e6839d448154c5ca3db95d0f7007065.png

作为条件值,使用in进行条件判断

select 字段列表 from 表名 where 字段名in(子查询);

例:select name form stu where stu_id in

(select did from dept where dname=’数学’ );

 

一行多列(行子查询)

 
  1. select salary,managerid from emp where name ='张无忌'

  2.  
  3.  
  4. select * from emp where (salary,managerid) = (select salary,managerid from emp where name ='张无忌')

工资和领导与张无忌相同

 

多行多列(表子查询)

作为虚拟表进行查询

select 字段列表 from (子查询) where 条件;

例:

select * from

(select * from emp where join_date >’2021-1-1’ ) t1,dept where t1.dep_id = dept.did;

 

作为查询条件:

例:

select * from emp where (job,salary) in (select job, salary from emp where name='张三'or name=‘李四’)

工资和职位要么与张三相同要么与李四相同

 

事务:

数据库的事务是一个不可分割的数据单元,包含一组数据库操作,要么同时失败,要么同时成功。

 语法:

开始事务:start transaction; 或begin;

提交事务:commit;

回滚事务:rollback;

 

事务的四大特性ACID

原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败。

一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态。

隔离性(lsolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。

持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。

 

并发事务问题: 

32a58360eb9944f3aebb23af382a6046.png

 

事务的隔离级别:

6dad48cc6e384bfcabc1a03bf9d16cd0.png

  

 

b7776e549d4c44b1b3c88c0da652b219.png 

mysql数据库

subject.pngAI必读

发布于2024-05-19著作权归作者所有

  • 22
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值