MySQL(四)

十三、MySQL内置函数

13.1、concat 连接字符串

concat(参数1,参数2,参数3…)

​ 参数可以是数字,也可以是字符串

​ 把所有参数连接成一个完整的字符串

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BMM7VNAU-1649511487974)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1649384741199.png)]

select  concat(12,34,'ab');

13.2、length 返回字符串字符个数(长度)

一个utf8格式的汉字,length返回3

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hjITvsWJ-1649511487975)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1649384943441.png)]

select length('abc');            返回3

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nCtIpylS-1649511487976)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1649385020349.png)]

select length('我和你');            返回9

13.3、内置函数和where[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nJ82FWso-1649511487977)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1649385297249.png)]

select * from students where  length(name)=9;

13.4、截取字符串

  • left(str,len) 从左侧开始截取len个字符

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u09yg5bx-1649511487979)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1649385516578.png)]

select left('我和你abc');                  返回 我和你
  • right(字符串,n) 从字符串右侧截取n个字符

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mPt7y5mf-1649511487983)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1649385734924.png)]

select right('我和你abc');     返回abc
  • substring(字符串,起始位置,n),从字符串指定位置截取指定数量字符

    起始位置从1开始

    n代表截取的数量

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OCf2skXJ-1649511487984)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1649386801682.png)]

select substring('我和你abc',2,3);     返回 和你a

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uw1UXRJz-1649511487985)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1649387815670.png)]

select left(name) from students;
select substring(name,1,1) from students;

内置函数可以用在select中

13.5、练习

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xE9jULtG-1649511487986)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1649388007040.png)]

select substring(card,7,8) from students where name='李白'

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f6EDOGgN-1649511487987)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1649388162204.png)]

select * from students order by subtring(card,7,8);

13.6、去除空格

  • ltrim 去除字符串左侧空格

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3qJGRLNx-1649511487988)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1649388336586.png)]

select ltrim('      abcd');
  • rtrim 去除字符串右侧空格

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7Ue8frYa-1649511487989)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1649388463900.png)]

select rtrim('abcd          ');
select concat(rtrim('abcd     '),'ceshi');   
  • trim 去除两侧空格

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Rcmn8dJI-1649511487990)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1649388676884.png)]

select trim('    abcd      ');

13.7、round四舍五入

round(数字,d)

​ d代表要保留的小数位,省略d默认为0

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qHuzAaLj-1649511487991)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1649401626316.png)]

select round (1.653);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a7gnL55L-1649511487992)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1649401667576.png)]

select round(1.653,2);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o4OPVZQr-1649511487993)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1649402314455.png)]

select round(avg(age)) from students;

13.8、rand随机数

rand() 每次会产生从0到1的浮点数,经常用rand对一张表进行随机排序

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a6Xci3wG-1649511487995)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1649403366325.png)]

select * from students order by rand() limit 1;

13.9、current_日期和时间函数

select current_date();     返回系统日期
select current_time();     返回系统时间
select now();                    返回系统日期与时间

日期和时间函数的案例:

插入记录时,插入系统当前时间
create table a (id int,indate datetime);

insert into a values (1,now());

select * from a; 

十四、procedure存储过程

语法:

create procedure 存储过程名称

begin

sql语句

end

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8O1iNZ3c-1649511487996)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1649405715237.png)]

create procedure stu()

begin

   select * from students;

end

call stu();      调用存储过程
drop procedure stu;                   删除存储过程
drop procedure if exists stu;

十五、视图

视图就是对select语句的封装,视图可以看成一张只读的表,

只能用select,不能用delete或update

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MXLAYgc8-1649511487997)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1649406109789.png)]

create view stu_nan  as

select * from students  where sex ='男'
使用视图
select * from stu_nan inner join scores on stu_nan.studentNo=scores.studentNo;
删除视图

drop view stu_nan;

drop view if exists stu_nan ;

十六、事务*

事务是多条更改操作时的sql语句集合

一个集合数据有一致性,要么都失败,要么都成功

begin 开启事务

rollback 回滚事务,放弃修改

commit 提交事务,生效

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dVZGYw8z-1649511487998)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1649408199366.png)]

begin;

delete from students where studentNo ='001';

delete  from scores where studentNo = '001';

rollback;      回滚事务,放弃更改

如果开始一个事务,没有rollback也没有commit,默认rollback

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-syaDBPxl-1649511487999)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1649408648259.png)]

begindelete from students where studentNo ='001';

delete from scores where studentNo = '001';

commit;      提交事务,一旦提交事务,两个删除操作 同时生效

没写begin代表没有事务,没有事务的表操作都是实时生效

如果只写了begin,没有rollback,也没有commit ,结果是rollback

十七、索引*

index

给表建立索引,目的加快select查询速度

如果一个表记录很少,不用索引

表的记录特别多,如果没有索引,select语句效率会非常低

17.1、创建索引

语法:create index 索引名称 on 表名(字段名称(长度));

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x84yQ7E5-1649511488000)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1649411774286.png)]

create index age_index on students (age);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JgelH1CR-1649511488001)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1649411864976.png)]

create index name_index on students (name(10));

where 条件后面的字段,数据库系统会自动查找是否有索引

select * from students where age =30;      自动调用age_index
select * from students where name ='李白'; 自动调用name_index

不需要特意写调用索引的语句,where后的条件用到的字段建立了索引,系统自动调用

17.2、查看索引

show index from 表名

​ 对于主键系统自动建立索引

show index from students;                    查看students表的索引

17.3、删除索引

drop  index 索引名 on 表名
drop index age_index on students             删除索引

17.4、索引优缺点

提高select的查询速度

降低update,delete和insert语句的执行速度

涉及大量的数据修改,修改之前可删除索引,修改完后再把索引建立起来

十八、MySQL命令行

  1. 进入MySQL
  2. MySQL -h MySQL服务器地址 -u用户名 -p密码

​ 如果是本机的MySQL -h可以省略

MySQL -u root -p

exit 退出

mysql 登录后常用命令:

show databases;   显示系统所有数据库
use 数据库名;       使用指定的一个数据库
     use mydb;     使用mydb数据库
show tables;      查看指定数据库有多少表
select * from students;
如果命令默认字符集与数据库默认字符集不同时,windows默认字符集gbk
set names gbk;  告诉默认字符集是gbk
desc 表名;   查看一表的字段结构
  desc students;

18.1、在命令行下创建和删除数据库

create database 数据库名 default charset 字符集

create database mytest default charset utf8;  创建数据库mytest,默认字符集utf8
show databases;
use mytest;       使用mytest
create table a (id int);  建一个表a
insert int a values(1);
drop table a;     删除表a
drop database mytest;  删除数据库

18.2、数据库管理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rYIHew80-1649511488002)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1649421598329.png)]

grant all on *.* to test@'localhost' Identified by '123456' with grant option;

localhost 本地登录

s where studentNo = ‘001’;

rollback; 回滚事务,放弃更改


如果开始一个事务,没有rollback也没有commit,默认rollback

[外链图片转存中...(img-syaDBPxl-1649511487999)]

```sql
begin;

delete from students where studentNo ='001';

delete from scores where studentNo = '001';

commit;      提交事务,一旦提交事务,两个删除操作 同时生效

没写begin代表没有事务,没有事务的表操作都是实时生效

如果只写了begin,没有rollback,也没有commit ,结果是rollback

十七、索引*

index

给表建立索引,目的加快select查询速度

如果一个表记录很少,不用索引

表的记录特别多,如果没有索引,select语句效率会非常低

17.1、创建索引

语法:create index 索引名称 on 表名(字段名称(长度));

[外链图片转存中…(img-x84yQ7E5-1649511488000)]

create index age_index on students (age);

[外链图片转存中…(img-JgelH1CR-1649511488001)]

create index name_index on students (name(10));

where 条件后面的字段,数据库系统会自动查找是否有索引

select * from students where age =30;      自动调用age_index
select * from students where name ='李白'; 自动调用name_index

不需要特意写调用索引的语句,where后的条件用到的字段建立了索引,系统自动调用

17.2、查看索引

show index from 表名

​ 对于主键系统自动建立索引

show index from students;                    查看students表的索引

17.3、删除索引

drop  index 索引名 on 表名
drop index age_index on students             删除索引

17.4、索引优缺点

提高select的查询速度

降低update,delete和insert语句的执行速度

涉及大量的数据修改,修改之前可删除索引,修改完后再把索引建立起来

十八、MySQL命令行

  1. 进入MySQL
  2. MySQL -h MySQL服务器地址 -u用户名 -p密码

​ 如果是本机的MySQL -h可以省略

MySQL -u root -p

exit 退出

mysql 登录后常用命令:

show databases;   显示系统所有数据库
use 数据库名;       使用指定的一个数据库
     use mydb;     使用mydb数据库
show tables;      查看指定数据库有多少表
select * from students;
如果命令默认字符集与数据库默认字符集不同时,windows默认字符集gbk
set names gbk;  告诉默认字符集是gbk
desc 表名;   查看一表的字段结构
  desc students;

18.1、在命令行下创建和删除数据库

create database 数据库名 default charset 字符集

create database mytest default charset utf8;  创建数据库mytest,默认字符集utf8
show databases;
use mytest;       使用mytest
create table a (id int);  建一个表a
insert int a values(1);
drop table a;     删除表a
drop database mytest;  删除数据库

18.2、数据库管理

[外链图片转存中…(img-rYIHew80-1649511488002)]

grant all on *.* to test@'localhost' Identified by '123456' with grant option;

localhost 本地登录

% 既可以本地登录也可以异地登录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值