MySql基本语法

我的网站:欢迎大家访问

MySql基本语法

??????????

DDL

对表结构进行操作

创建

create table 表名 (列名1 类型(长度),…);

添加字段

alter table 表名 add 字段名 字段信息

修改表名

alter table 表名 rename 新表名

修改字段类型

alter table 表名 字段名 id 新的类型

删除字段

alter table 表名 drop 字段名

删除整张表

drop table 表名

?‍??‍??‍??‍??‍??‍??‍??‍??‍??‍??‍??‍?

DML

对表中的数据进行管理 对数据进行增删改查

添加数据 insert

insert into 表名 (字段名1,字段名2…) value (字段1的值,字段2的值…)

修改 update

update 表名 set 字段名 = 值 where 条件

删除 delete

delete from 表名 where 条件

查询 select

select from 表名 where 条件

多表查询

内连接

select 要查询的字段 from 表1,表2

笛卡儿积

多张表没有连接条件,返回的结果是表中数据的组合,称为笛卡儿积

消除笛卡儿积

(隐式内连接)select表1.字段1,表2.字段1… from 表1,表2 where 条件

(显示内连接) inner join 通过外键来消除,外键是另一张表的主键

select 表1.字段1,表2.字段1… from 表1 inner join 表2 on 连接的条件

外连接

取并集 以查询方 为主分为

左外连接(以左表为准 右边的数据没有 以null代替) left join

select 表1.字段1,表2.字段1… from 表1 left join 表二 on 连接条件

右外连接(和左外连接相反)right join

select 表1.字段1,表2.字段1… from 表1 right join 表二 on 连接条件

自连接

我连我自己,语法不变,把自己一张表看作多张表使用

面试题:inner join right join left join区别?


相同点:都是作为表的连接使用

不同点:

inner join 取的是表与表的交集

right join 取的是并集,以左表为准,右表没有数据以null显示

left join 取的是并集,以右表为准,左表没有数据以null显示

?子查询

一个查询嵌套另一个查询语句中,子查询作为一个条件或者视图

select id,name (select name from test where name = ‘测试’)

函数

聚集函数

1、count

2、sum

3、avg

4、max

5、min

cast函数

转换类型,将指定的值转化为指定的类型

cast (值 as 类型)

(‘123’ as SIGNED) 将字符型的123转换为整型

select cast (id as SIGNED) from student

decimal类型

MySQL DECIMAL数据类型用于在数据库中存储精确的数值。我们经常将DECIMAL数据类型用于保留准确精确度的列,例如会计系统中的货币数据。

要定义数据类型为DECIMAL的列,请使用以下语法:

column decimal(P,D)

在上面的语法中:

​ P是表示有效数字数的精度。 P范围为1〜65。

​ D是表示小数点后的位数。 D的范围是0~30。MySQL要求D小于或等于(<=)P。

DECIMAL(P,D)表示列可以存储D位小数的P位数。十进制列的实际范围取决于精度和刻度。

convert()函数

比cast更加简洁

convert (值,类型)

select convert(id , SIGNED) from student

IFNULL()

select ifnull(id,0) from test 将id为null的字段默认赋值为0

CONCAT

concat(str1,str2,…) 表示字符串连接,可以传递多个参数

大小写 替换 截取 去空格 反转

select upper(‘a’) 将a转换为A

select lower(‘A’) 将A转换为a

select replace (需要被转换的值,要转换哪一个,转换后的值) 替换功能

select substr(截取之前的值,起始位置,截取长度) 截取功能

select trim (’ 你 好 ') 去空功能,去掉两端的空格

select rtrim (’ 你 好 ‘) 去掉右边 select ltrim (’ 你 好 ') 去掉左边

select reverse(‘我去玩’) 反转功能

Demo

#创建表
CREATE TABLE student (
	id INT ( 20 ),
NAME VARCHAR ( 255 ));#添加字段
ALTER TABLE student ADD (
	age INT ( 20 ),
state VARCHAR ( 255 ));#DML
#添加数据
INSERT INTO student ( id, NAME, age, state )
VALUES
	( 1, '山泥若', 28, '顶不住了' );
INSERT INTO student ( id, NAME, age, state )
VALUES
	( 2, '电棍', 26, '拉了跨' );
INSERT INTO student ( id, NAME, age, state )
VALUES
	( 3, '落日飞车', 26, '不知道' );
	#修改数据
UPDATE student 
SET age = 25 
WHERE
	NAME = '电棍';
	#删除数据
DELETE 
FROM
	student 
WHERE
	id = 3;
	#多表查询
SELECT
	p.productName,
	p.salePrice,
	p.brand,
	pr.id 
FROM
	product p
	INNER JOIN productdir pr ON p.dir_id = pr.id;
SELECT
	p.productName,
	p.salePrice,
	p.brand,
	pr.id, 
	(p.salePrice - p.costPrice) profits
FROM
	product p
	INNER JOIN productdir pr
	INNER JOIN product_stock ps ON p.dir_id = pr.id 
	AND pr.id = ps.id
	ORDER BY 
	profits DESC;
#外连接 
#左连接
SELECT
	p.* 
FROM
	product p
	LEFT JOIN product_stock ps ON p.dir_id = ps.id;
#自连接
SELECT
	a.name,b.name 
FROM
	area a
	INNER JOIN area b ON a.id = b.pr_id 
WHERE
	a.NAME = '四川';
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值