MySQL基础语句汇总

这篇博客详细汇总了MySQL的基础操作,包括对库、表的操作,如创建、查询、删除,以及数据操作,如插入、删除、更新。还介绍了约束、LIMIT关键字的使用,多表查询、字符串和时间日期函数的应用,是MySQL初学者的实用参考资料。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

对库的操作:

对表的操作:

约束

对数据的操作:

Limit关键字:设置查询的条数

select语句所有基本关键字的位置:

多表查询(从多个表中查询数据)

字符串函数:

时间日期函数:


对库的操作:

cmd链接到数据库:...............mysql -u root -proot;

创建一个数据库:....................create database 数据库名称 ;

查询库(显示所有数据库):show databases;

选中(使用/切换)库:..........use database 数据库名称;

删除数据库:..............................drop database 数据库名称;

修改数据库:..............................alter database 数据库名称 character set utf8

对表的操作:

创建表:create table 表名(id int,name varchar(10),age int,class int,score double,bornddate time);

查询表:select * from 表名;

展示表:show tables

查看表信息:desc 表名;

表增加列:alter table 表名 add 新列名 数据类型;

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

表删除列:alter table 表名 drop 列名;

删除表:drop table 表名;

约束

非空约束(保证字段的值不能为空):

       create table 表名(name varchar(20) not null);

默认约束(添加值为空时,设置默认值):

       create table 表名(name varchar(20) default ‘佚名’);

主键约束(保证数据不为空且唯一):

       create table 表名(id int primary key auto_increment);

              auto_increment(自增,这样在添加数据时可不写id值,自动加1)

外键约束(限制两个表,某一个字段和另一个表的主键绑定,字段值需根据外表主键,可以为null):

       create table 表名(id int primary key auto_increment,foreign key(该表字段名) references 另一个表名(另一个表主键));

       create table students(id int primary key auto_increment,team_id int,foreign key(team_id) references teams(id));

              students为所有学生表,表里学生分为某几个组,teams为组表,比如组表只有两个组,那students只能是分为两个组和空组

对数据的操作:

命名列:select 'name' as '名字' from 表名;(不会改变数据)

新增数据:insert into 表名  value(1,'zhao',18,6,99.9,'2002-02-28 00:00:00');

删除数据:Delete from 表名称 where 条件;

更新数据:UPDATE 表名 SET name='fu' where 条件(id=1);

查询空行:SELECT * FROM 表名 WHERE name IS NULL;

2.AND:并且

3. <>:不等于,   >:大于,   <:小于

4.大于等于,并且,小于等于

5.两者之间

6.查询某列为空的数据

7.或

8.查询值为括号里的

9.%x%字段包含x的;x%字段以x开头的;%x字段以x结尾的;

 

1.order by默认升序

2.按条件查完之后排序

3.asc升序

4.desc降序

5.根据age排序后,achievement在相同age中排序,后面可以加asc或desc

使用函数查询数据(不会改变数据)

1.查询某字段且变成小写lower

2.查询某字段且变成大写upper

3.查询表中被截取后的字段substr对字符串值截取。(5,2):从第五个开始截取两个。

4.Substr也可是查询条件,例:select name from stuwhere substr(name,5,1)=”l”;

5.查询name数据和长度;length

6.将字段空的数据变为0;achievement字段名

1. 查询该字段的和sum

2. 查询该字段的平均值avg

3. 查询该字段的最大值max

4. 查询该字段的最小值(不计空值)min

6. 查询表有多少行count

7. 查询该字段非空数量count

8. 根据条件查询该字段非空数量count

9. 查询该字段不重复的

10. 查询该字段不重复的数量

11. 查询不同性别的数量

12. 根据team_id分组,查询这几个小组和总成绩大于100的小组的总成绩,

       Where条件用在表后面,having用在对分组的筛选

Limit关键字:设置查询的条数

  1. select * from student limit 5; (查询该表前五条数据)
  2. select * from student limit 2,5; (查询该表第二个数据后面的五条数据)

select语句所有基本关键字的位置:

       select XXX from XXX where XXX group by XXX having XXX order by XXX limit

多表查询(从多个表中查询数据)

select s.`stu_name`,t.`steam_name` from student s,teams t where s.`team_id`=t.`id`;

       student s(将表名student 简称为s)

       此查询方式不推荐

链接查询:

       1.内连接(获取两个表交集的所有内容)

              select s.`stu_name`,t.`steam_name` from student s inner join teams t on s.`team_id`=t.`id`;(inner join内连接后加要链接的表名,on后加条件)

       2.左外连接(左表全部+右表对应内容)

              select s.`stu_name`,t.`steam_name` from student s left join teams t on s.`team_id`=t.`id`;(left join内连接后加要链接的表为右表,on后加条件)

       3.右外连接(右表全部+左表对应内容)

              select s.`stu_name`,t.`steam_name` from student s right join teams t on s.`team_id`=t.`id`;(right join内连接后加要链接的表名为右表,on后加条件)

三个表关联,例如:

       select s.`stu_name`,t.`tea_name` from tea_to_stu ts

              inner join tea t on ts.`tea_id`=t.`id`

              inner join tea t on ts.`tea_id`=t.`id`;

子查询:将select查询结果当作条件

字符串函数:

       返回某字段的平均值:select AVG(score) from 表名;

       返回某字段的行数:select count(score) from 表名;

       返回某字段的最大值:select max(score) from 表名;

       返回某字段的最小值:select MIN(score) from 表名;

       返回某字段的和:select SUM(score) from 表名;

字符串函数:

       字符串连接:select concat(str1,str1...strn);

       字符串替换:select insert('这是SQL Server数据库',3,10,'MySQL');

       将字符串转为小写:SELECT LOWER('MySQL');      返回:mysql

       将字符串转为大写:SELECT LOWER('mysql');      返回:MySQL

       字符串截取:SELECT SUBSTRING('JavaMySQLOracle',5,5);      返回:MySQL

时间日期函数:

       获取当前日期:SELECT CURDATE();    返回:2020-03-20

       获取当前时间:SELECT CURTIME();     返回:19:19:26

       获取当前日期和时间:SELECT NOW(); 返回:2020-03-20 19:50:00

       返回日期date为一年中的第几周:SELECT WEEK(NOW());     返回:12

       返回日期date的年份:SELECT YEAR(NOW());   返回:2020

       返回时间time的小时值:SELECT HOUR(NOW());     返回:19

       返回时间time的分钟值:SELECT MINUTE(NOW());  返回:50

       返回日期参数date1和date2之间相隔的天数:SELECT DATEDIFF(NOW(),'2008-8-8');       返回:4242

       计算日期参数date加上n天后的日期:SELECT ADDDATE(NOW(),5);   返回:2020-03-25  19:50:00

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值