MYSQL基础语句学习

3 篇文章 0 订阅

MySQL的基本使用

常用命令

1、启动客户端:

mysql -u root -p  用户口令

2、查看所有数据库

show database;

3、切换当前数据库

use 数据库名称

4、查看当前数据库下的所有数据

show tables;

5、查看某个数据表的结构定义

desc 数据表名称;

DDL数据定义语言

数据库模式定义语言DDL,是用于描述数据库中要存储的现实世界实体的语言。主要由create、alter、drop和truncate四个关键字完成。
1、创建操作
语法规则:create database 数据库名称 default character set utf8,一般默认编码字符集为latin1

 -- 如果数据库已经存在,则该条语句会系统报错
create database test default character set utf8; 
 -- 如果test数据库已经存在,则不会进行创建操作
 create database if not exists test default character set utf8;

2、修改表结构
语法规则:alter table 表名称 add/drop/modify 列名称[类型 约束]

 -- 新增列定义
alter table tb_student add class_name varchar(20) default '软件19';
 -- 删除指定列
alter table tb_student drop colum salary;
 -- 修改列定义
alter table tb_student modify class_name int;
 -- 修改列定义时,要求已经存在的数据必须符合规定,否则修改失败。modify一般用于修改列的数据类型和长度,但是如果有数据则必须和目标匹配,否则修改失败

3、修改列名称
语法规则:alter table 表名称 change 旧有列名称 新列名称 类型 约束;

alter table tb_student change Sname student_name varchar(20) not nill;  

4、删除表
语法规则:drop table 表名称

 -- 删除表,若表不存在,系统则会报错
drop table tb_student;
 -- 删除表
drop table if exists tb_student;

5、删除数据库
语法规则:drop database 数据库名称;

 --删除指定数据库,如果数据库不存在系统则报错
drop database tb_student; 
-- 如果存在则删除
drop database if exitis test;

6、查看所有数据库
语法规则:show databases;

show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+

7、切换当前数据库
语法规则:use 数据库名称;

use test;
 -- 如果数据库不存在系统则会报错

8、查看当前操作的数据库
语法规则:select database();

select database();

9、查看数据库详细的创建语句
语法规则:show create database 数据库名称;

show create database test;

10、查看表结构
语法规则:desc 表名称

desc tb_student;

11、查看表的详细创建信息

show create table tb_student;
练习

创建数据表基本语法:create table 数据表名称(数据列的名称 数据类型 约束规则...)engine=存储引擎名称 default charset utf-8;

create table tb_student( -- 这里可以加入if not exists
	id bigint primary key auto_increment,
	username varchar(32) not null,
	password int not null
)engine=innodb dafault charset utf8;

DML数据操纵语言

DML数据操纵语言,用于对数据库表中的记录进行更新操作,插入insert、修改update、删除delete。

1、增加数据

语法规则1:insert into 表名称 values(值1,值2,...)用于针对表中的每个列指定对应的值,例如

insert into tb_student values(null,'zhangsan','123456','1990-01-01');

注意values后面括号中的值和列一一对应,注意数据类型。


语法规则2:insert into 表名称(列名1,列名2,...) values(值1,值2,...);人为指定列插入数据,注意两个括号需要一一对应,一般用于对指定列进行插入数据时使用。例如

insert into tb_student(username,passward,birth) values('zhangsan','123456','1990-01-01');

如果没有出现的列而且列上没有default约束,则自动插入值null;如果有default约束则插入默认值。

2、修改数据

语法规则1:update 表名称 set 列名1=值1,列名2=值2,...;
修改表中所有行的指定列对应的值,等号后面可以是一个表达式进行计算。例如score新增10%写法update tb_student set score=score*1.1;

允许同时修改多个列:update tb_users set score=500,sex=0;

语法规则2:update 表名称 set 列名1=值1,列名2=值2,... where 条件
用于修改表中满足条件的指定行指定列的值;例如1989年之前的用户新增10%,update tb_user set score=score*1.1 where year(birth)<1989;,year是系统函数,用于获取指定列的年分值。

3、删除数据

语法规则1:delete from 表名称;
删除表中所有数据。例如delete from tb_users;

语法规则2:delete from 表名称 where 条件;
删除表中满足条件的所有行。例如删除1990年的所有女生,delete from tb_users where sex=0 and year(birth)=1900;

整表删除操作

方法一:delete from tb_student;可以删除表中的所有数据,属于DML语句,所以支持事务,支持撤销回滚操作,但是大量的删除数据时需要记录日志,所以执行效率很低。优势在于可以反悔,缺点在于记录日志需要时空代价

方法二:truncate table tb_student;表的截断操作,可以删除表中的所有数据,属于DDL语句,没有事务,不会记录操作日志,所以大量删除数据时执行效率高。优势是执行效率,缺点是没有返回的机会。底层原理就是创建一个相同的空表

逻辑删除和物理删除

物理删除: 就是从表中直接删除数据;
逻辑删除: 类似于回收站,只是给某行数据上添加一个删除标志,表示该行数据已经删除了。

逻辑删除
  1. 修改表tb_user新增一个额外列,用于表示该行数据是否已经删除
alter table tb_users add delected boolean default 0; -- 0表示没有删除
  1. 逻辑删除,并没有真实删除数据,只是修改一个标识列的值
uupdate tb_users set delected where id=2; -- 删除2号用户信息
delete from tb_users where id=2; -- 物理删除
  1. 真正查询时为了避免查到已经删除的数据,所以需要额外的查询条件
-- 只查询deleted值为0的行,不删除已经表示delete=1的行
select * from tb_users where delected =0;

DQL数据查询语言

1、查看表中所有数据
select * from 表名称; 这里*号表示为通配符,表示获取所有列的值

select * from tb_student; -- 不建议采用*号查找
select id,username,password from tb_users;

2、带条件查询
例如查看表中年龄大于18岁的所有用户信息select * from tb_users where year(now())-year(birth)>18

例如查看表中id值大于等于5 的所有用户信息select * from tb_users where id>=5;

注意等值判断使用=,不是==。
例如获取编号为16 的用户信息select * from tb_users where id=5;是单等号,不是双等号。等于判断=、不等于判断!=、大于>、小于<、大于等于>=、小于等于<=

select now(); -- 获取当前系统时间
+---------------------+
| now()               |
+---------------------+
| 2022-04-30 13:49:28 |
+---------------------+

select year(now()); -- 获取当前时间的年份
+-------------+
| year(now()) |
+-------------+
|        2022 |
+-------------+

3、非空或者空值判断
注意不能使用=null或者!=null的写法,应该使用is null或者is not null;
例如查询性别未知的用户信息

select * from tb_users where sex is null; -- null表示不确定的数据

4、字符串比较
用户登录select * from tb_users where username='张三' and passward='123456';
模糊查询 like 通配符_和%

  • _下划线表示一个任意字符
  • %表示任意个任意字符

例如查询所有姓张的用户信息

select * from tb_users where username like '张%';

select * from tb_users where username like '张_';

通配符和%可以在字符串的任意位置

  • y表示包含两个字符长的字符串,必须y开头。例如y1匹配,y12不匹配,y也不匹配
  • y%表示以y开头,后面跟任意个任意字符的字符串。例如ay不匹配,y匹配,y123也匹配
  • _y表示包含两个字符长的字符串,必须y结尾,例如1y匹配,12y不匹配,y也不匹配
  • %y表示以y结尾,前面有任意个任意字符的字符串。例如ay匹配,y匹配,12y1不匹配
  • _ y_表示三个字符长的字符串,中间字符必须为y
  • %y%表示包含字符y的字符串,可以在开头,可以在尾巴,也可以中间

5、选择表中的若干元组
元组就是事务特征的组合,可以用于描述一个具体的事务。

-- 写法一
select * from tb_users where (id,name) > (1,'aaa');
-- 写法二
select * from tb_users where id>1 and name>'aaa';

在使用条件计算时可以使用and与、or或、not非运算。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值