Mysql语句总结


一、数据库的增删改查

登录数据库引擎:mysql -u[用户名] -p[密码] (-P[端口号] -h[ip地址,本地localhost可以不填])
增:创建数据库:create database 数据库名;
删:删除数据库:drop databases 数据库名;
改:alter database 数据库名 + 具体修改内容;
例: alter database db1 charset utf8;(将db1的字符类型设为utf-8)
查:查看该引擎内所有数据库:show databases;
在这里插入图片描述查看当前所在数据库:select database();
在这里插入图片描述
查看指定数据库信息:show create database 数据库名;
在这里插入图片描述

二、数据库基本操作

1.数据库注释符:

(1)/*… */

在这里插入图片描述

(2)#…

(3)"…"

(注:注释等于将所要注释掉的内容变成空格)

2.基本操作

(1)重命名数据库:

rename database 旧数据库名 to 新数据库名;

(2)查看系统特定资源信息

show status;
在这里插入图片描述

(3)选择数据库使用

use 数据库名
在这里插入图片描述

三、表的操作(table)

1.表单的增删改查

查看表结构: desc(describe) 表名;
在这里插入图片描述
查看表内容:select * from table_name;
在这里插入图片描述
查看数据库中有哪些表: show tables;
在这里插入图片描述
创建表:CREATE TABLE 表名 (
属性名 数据类型 [完整约束条件],
属性名 数据类型 [完整约束条件],


属性名 数据类型 [完整约束条件]
);
(字段名就是属性名)
完整的建立表的语句:
create table users(id int(7) AUTO_INCREMENT PRIMARY KEY,
username varchar(100) not null,
password varchar(100) not null
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
在这里插入图片描述
if not exists表示当相同的表名存在时,则不执行此创建语句,避免语句执行错误

即:create database if not exists [table_name];

ENGINE=InnoDB DEFAULT CHARSET=utf8;
ENGINE 设置表的引擎 和默认的字符类型

常见的数据库引擎

InnoDB myisam

数据类型可参考:https://www.cnblogs.com/-xlp/p/8617760.html

2.约束条件

PRIMARY KEY 标识该属性为该表的主键,可以唯一的标识对应的元组

FOREIGN KEY 标识该属性为该表的外键,是与之联系某表的主键

NOT NULL	标识该属性不能为空

UNIQUE 标识该属性的值是唯一的

AUTO_INCREMENT	标识该属性的值是自动增加,这是MySQL的SQL语句的特色

DEFAULT	 为该属性设置默认值

(创建表时引擎和字符类型可以不定义,将会使用默认引擎和字符类型)

修改表名

ALTER TABLE 旧表名 RENAME 新表名;

修改字段的数据类型

ALTER TABLE 表名 MODIFY 属性名 数据类型;

修改字段名:

ALTER TABLE 表名 CHANGE 旧属性名 新属性名 新数据类型;

增加字段名

ALTER TABLE 表名 ADD 属性名1 数据类型 [完整性约束条件] [FIRST | AFTER 属性名2];

在这里插入图片描述

删除字段

ALTER TABLE 表名 DROP 属性名;

在这里插入图片描述

三、数据的增删改查

1.增

语法:INSERT INTO 表名 VALUES(值11,值2,…);

mysql> insert into users values(null,'test','123456');

INSERT INTO 表名(字段1,字段2,…)VALUES(值1,值2,…)
INSERT INTO 表名 SET 字段名1=值1[,字段名2=值2,…]
在这里插入图片描述

举例:INSERT INTO student SET id=4,name='zhaoliu',grade=72;

同时添加多条数据:

INSERT INTO 表名[(字段名1,字段名2,…)] VALUES (值1,值2,…),(值1,值2,…),

mysql> insert into users (id,username,password)values(null,'moon','123456'),(null,'alex','123456');
mysql> insert into users values(null,'moon1','123456'),(null,'alex1','123456');

(注:在添加数据的时候,如果表名后不跟随字段名,且不使用set时,值需与表中的字段相对应,全部赋值,缺一不可)

2.删

delete from 表名 [where 条件表达式]

delete from users where id=1;(删除users表中id=1的那一行数据)

delete from table_name 后不使用where,表示删除表内所有内容,效果等同truncate

3.更新

语法:UPDATE 表名 SET 字段名1=值1,[ ,字段名2=值2,…][ WHERE 条件表达式 ]

update users set  password='aaaa' where id=1;
(将users表中id=1的password改为 aaaa )
update users set  password='123456',username='sec' where id=1
(将users表中id=1的password改为 123456 ,username改为 sec  )
update users set  password=456789;
(将users表中的所有密码都改为456789)
(注:不加where限定便是改变表中某一属性所有的值)

HRWFk8.png

4.查

select * from table_name;

星号代表所有的字段,即查询表中所有字段数据;

查询指定的字段:
select 字段名1[,字段名2] from table_name;

按关系来查询
语法:SELECT 字段名1,字段名2,…FROM 表名 WHERE 条件表达式
in 查询
SELECT * FROM student2 WHERE id IN (1,2,3);

带 BETWEEN AND 关键字的查询
select * from users where id not between 1 and 10;

带 DISTINCT 关键字的查询
select distinct username from users

like查询 一般都会给跟着%
select * from users where username like "%x%" ;
(%在前面,即匹配结尾为x的数据,%在后面匹配开头为x的数据,两边都有%匹配含有x的数据)

下划线 _ 匹配一个字符
select* from users where username like "se_"

and查询
满足多个条件
select * from users where id=1 and username='sec';

or查询
满足任意一个条件
select * from users where id=1 or username='sec';

OR 和 AND 一起使用的情况:
OR 和 AND 一起使用的时候,AND 的优先级高于 OR,因此二者一起使用时,会先运算 AND 两边的表达式,再运算 OR 两边的表达式。

聚合查询

count 返回行数
select count(*) from users;

select count(id) from users;

COUNT() 返回某列的行数
SUM() 返回某列值的和
AVG() 返回某列的平均值
MAX() 返回某列的最大值
MIN() 返回某列的最小值

分组查询
如果报错请在 my.ini添加

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

https://s4.ax1x.com/2022/02/15/HRfkHx.png

GROUP BY查询

mysql> SELECT * FROM users GROUP BY password;

在这里插入图片描述
使用 LIMIT 限制查询结果的数量

select * from users limit 2,10;

select * from users as u where u.id=1;

为表和字段取别名

select username as myname from users;

子查询
where型子查询
(把内层查询结果当作外层查询的比较条件)
select * from users where id in (select id from users where id>10);

from型子查询
(把内层的查询结果供外层再次查询)

select * from (select username,age from users) as agev_a where age>20	
select * from (select * from users where id>=10) as age_10;	
(select * from users where id>=10)查询出来的是一个集合 别名为age_10
select * from age_10(从age_10中查询)

exists型子查询
(把外层查询结果拿到内层,看内层的查询是否成立)

select * from users where EXISTS (select * from users where id>1)

联合查询(两个表的查询)

注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。
UNION ALL 查询全部 而且不会消除重复的行

union的用法及注意事项:
两次查询的列数必须一致

select * from users union select *,1 from news;

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值