mysql 基础

win + r   services.msc  可以查看mysql是否启动, 也可以停止

配置环境变量后,就可以在任意位置执行mysql 了  ,这里在文件访问了mysql

 

一 SQL 分类

一、DDL 数据库操作

 1、表的查询  前提是先use + 数据库名 进入数据库

  show tables; 

2、创建表

 create table +表名( )

例:  comment 为注释

 3、 desc + 表名   可以查看表的结构  

 4、show create table + 表名  可以查看更详细表的结构 

 5. 数据类型 

数字

 字符串  

 日期类型

 

6. 修改表

 {1} 添加字段  alter table 表名  add 字段名...   [ ]内容是可选 

 例: alter table tb_user add  nickname varchar(10) ;

 {2} 修改  modify   change

 {3} 删除字段   drop

 {4}修改表名  rename to

 {5} 删除表

 

二 DML  对数据库表数据增删改

 1、 insert 新增  

insert into emp(id, userId, userName, sex, age, number, entrytime)
VALUES (1,'12','哈哈','男',12,'123456789012345678','2020-11-06');

 

2.update 修改

   update emp  set  username=“hahah” ...  where  id =1 ;

 

3. delete 删除

   delete from emp where id =1 ;

 

三 DQL 查询数据库表

 select

 1.基本查询

  select * from emp2 ; 查询全部

select distinct  workaddress '地址' from emp2; 查询地址 且不显示重复  还给别名

 2.条件查询where

  is not  null   不为空

select *from emp where age  in(20,10,30); 表示age=20,10 ,30 和age=20 or age=10..一样

select *from emp name like '_ _'  ;  表示查name两个字的    _ 表示单个字符 % 表示任意个字符

 3.聚合函数  select 聚合函数(对象) from 表名;

例: select count(*) from emp; 查询emp数量的总和 count(*)

        select count(name) from emp; 查询name的数量总和

 4.分组查询 group by   (分组函数一般和聚合函数一起用)

 select  gender , sum(age) from emp  where age>10 group by gender having sum(age)>300;

 解释: 输出男 女 分别为age>10的 年龄总和  最后年龄总和>300的(having)

 where 和 having 区别

where 不参与分组 having是在分组之后进行过滤

where不能对聚合函数进行判断,而having可以

5.排序查询 必须结合order by

 select * from emp2 order by age asc ,entrydate desc ;

6.分页查询   注意limit放在最后

 select *from emp2 limit 8,2;  第7页,每页展示2条数据 

 

四 DCL数据控制语言  用来管理数据库用户、控制数据库的访问权限

1.用户管理

 2. 权限控制

 

二 函数

一 字符串函数

concat lower upper lpad rpad trim substring

 select  trim('   hello  world   ');

 例:

 lpad rpad  例下: name如果超过了3位,就值输出前3位,如果小于3位就,l左边 r右边补充0直到3位

 二 数值函数

ceil, floor ,mod , rand,round 

 例:  rand()可能会生成0.0几几的数,再四舍五入会成5位数,所以这里需要lpad,不为6位就多加0 直到6位数

 

三 日期函数

curdate,curtime ,now,year(date) ,month(date),day(date),date_add(now(),70 day/year/month) 

 datediff('2021-11-12','2023-11-04')  

 例:

 四 流程函数

例:  当值为集体值时

 当值为范围值时

 

三 约束

外键约束

1.

   主表相当于部门, 而外键字段名 员工对应的id 

例: alter table emp1 add constraint fk_emp_dept_id foreign key(dept_id) references dept1(id);

   alter table emp1 drop foreign key fk_emp_dept_id ;

 

2.  cascade, set null   

 创建外键 + on update cascade on delete cascade    若外键删除/更新 ,则对应的外键子表的数据也会 删除/更新

 在图形化中更简单: 

四 多表查询

1、连接查询 - 内连接 (两张表的交集)

下面两个连接功能都是一样的

 2、外连接

{1} 左外连接 

    

{2} 右外连接

 3、自连接

 例:

 自连接, 把emp表看作两个表格,分别取别名 , 这里利用managerid = id来作为条件

 4、联合查询  union , union all   (多次查询的结构可以合并在一起)

 union 表联合后去除重复, union all表联合后不去重复

 5、子查询

 {1} 标量子查询  子查询查出的只有一个数  

例:

 例:

 {2} 列子查询  子查询为一列内容  in ,any,all 

in 例:

all 例:

 {3}行子查询  子查询为一行的内容  用 ”=“

  {4}表子查询, 子查询为多行多列  用 "in"

例:

 例:

 

注意事项:

1、

 2、 or 

 3、3张表联系起来

 4、在 on 条件 后面还可以加where 条件

 

 五 事务

1、事务操作

如果设置成手动提交,在每次修改程序成功时 都要commit , 程序中途失败就执行rollback

 可以通过 set @@autocommit=0 开启事务

 也可以 start transaction 来开启事务

 2.事务四大特性

 3. 并发事务问题

 4. 事务的隔离级别 (用于解决并发事务问题)

   seriaizable 可以规避所有的并发问题,但性能也很差

 

posted @ 2023-10-07 20:18  阿朱朱  阅读(3)  评论(0编辑  收藏  举报