Mysql数据库操作语法总结
发布日期:2022-02-26 14:49:38 浏览次数:38 分类:技术文章

本文共 7798 字,大约阅读时间需要 25 分钟。

一入编程深似海

从此妹子是路人!


show databases ; –展示数据库中所有的数据库

create database dbName character set utf8; 创建数据库并指定编码
show create database dbName ; – 查看数据库创建语句
use dbName ; – 选择数据库
drop database dbName ; – 删除指定数据库
查看当前所使用的数据库名
select database() ; —方法 函数


表的操作

建表
真正存储数据的地方是表 表在指定的数据库中
表 :类似于excel二维表格 有行有列
列 属性
行 对象
表 List


表结构

create table tb_user —–>javaBean
(
变量名 数据类型 约束,【唯一约束 not null default 主键约束】
变量名 数据类型 约束1 约束2…,
变量名 数据类型 约束,
变量名 数据类型 约束
)


键的约束:

==约束: 保证数据的正确性和完整性 存储数据更健全
主键约束:提高查询效率 特点: 唯一 非空 primary key 自动增长 auto_increment
唯一约束 unique 保证一列数据的唯一性
非空约束 not null 保证一列数据不能有空
默认值约束 default 指定某个字段的值


数据类型

int
varchar(长度) 100 1
char (长度) 字符串 100 1
创建一个张表user,该表具有以下字段:
id int 主键 自动增长
username 字符串 长度20 非空
password 字符串 长度20 非空
gender 字符串 长度10
email 字符串 长度50 唯一 非空
telephone 字符串 长度 20
introduce 字符串 长度100
activecode 字符串 长度50
state 整型
role 字符串 长度10 默认值 “普通用户”
registTime 时间戳


代码:

create table user(
id int primary key auto_increment ,
username varchar(20) not null ,
password varchar(20) not null ,
gender varchar(10) ,
email varchar(50) unique not null ,
telephone varchar(20) ,
introduce varchar(100) ,
activecode varchar(50) ,
status int ,
role varchar(10) default ‘普通用户’ ,
registTime timestamp
)


修改表结构

1.add—-添加列操作 alter table 表名 add 列名 类型;
alter table tb_item add item_num int ;
2.modify–修改列的类型 alter table 表名 modify 列名 类型;
alter table tb_item modify item_num varchar(20) ;
3.drop –删除列 alter table 表名 drop 列名.
alter table tb_item drop item_num ;
4.change–修改列名称 alter table 表名 change 旧列名 新列名 类型;
alter table tb_item change item_price price varchar(20)

alter table tb_item add item_num int ;-- 添加一列  属性alter table tb_item drop item_num  ;-- 删除一列alter table tb_item modify item_num varchar(20) ; -- 修改列数据类型alter table tb_item change item_price  price varchar(20); -- 修改列名  数据类型desc tb_item    查看表结构

插入数据:

语法:
insert into tb_Name (id,name…) values (1,’lisi’….)
insert into tb_Name values (1,’lisi’….)
INSERT into tb_item (item_id,item_name , item_price) values (4,’西瓜’,1)
INSERT into tb_item (item_name , item_price) values (‘榴莲’,60)
INSERT into tb_item values (null,’木瓜’,60)

注意

属性名和值一一对应 【数据类型 长度 约束】
主键自增的值 null
所有的属性赋值 可以省略属性名 值 个数 顺序 数据类型 长度 约束


删除

删除表
drop table 表名
truncate table 表名

 ## delete是一行一行删除 truncate是将表结构销毁,在重新创建表结构.

 ## 如果数据比较多,truncate的性能高。
 ## delete是受事务控制. 可以回滚数据.
 ## truncate是不受事务控制. 不能回滚.


删除表中的数据:

delete from 表名 删除所有数据
delete from 表名 where 条件表达式 = > >= < <= != in or and (not) is not null

delete from tb_item WHERE item_id>=12

delete from tb_item WHERE item_id != 14
delete from tb_item WHERE item_id in (16,18,17,19)


更新数据

update 表名 set 字段1=值 , 字段2 = 值…..where 条件
UPDATE tb_item set item_name = ‘黄瓜’ where item_id = 2
update tb_item set item_name = ‘冬瓜’ , price = 2 where item_id = 3


查询数据 最重要:

select * from 表名 where 条件 查询所有的数据的所有字段
select 字段名1 ,字段名2 …… from 表名 条件表达式

1.查询出所有商品信息

SELECT * from products
2.查询出所有商品的名称,价格,类别及数量信息
SELECT name , price , category , pnum from products
3.查询出所有的商品类别
SELECT DISTINCT category from products
4.查询出所有商品的名称及价格,将所有商品价格 加10
SELECT name , price+10 from products
5.查询出每一个商品的总价及名称
SELECT name as ‘商品名称’ , price*pnum ‘总价’ from products
1.查询所有计算机类商品信息
SELECT * from products where category = ‘计算机’
2.查询出商品价格大于90的商品信息
SELECT * from products where price > 90
3.查询出商品总价大于10000的商品信息
SELECT * from products where price*pnum > 10000
4.查询出价格在100-200之间的商品信息
SELECT * from products where price >=100 and price <= 200
5.查询出商品价格是65,100或190的商品信息
SELECT * from products where price in (65 , 100,190)
SELECT * from products where price = 65 or price = 100 or price = 190
6.查询出商品的名称中包含java的商品信息。 模糊查询
SELECT * from products where name like ‘%java%’
SELECT * from products where name like ‘java%’
SELECT * from products where name like ‘__java%’
7.查询出书名是两个字的商品信息
SELECT * from products where name like ‘__’
8.查询出商品价格不为null商品信息
SELECT * from products where price is NOT null


排序:

order by
1.查询出所有商品,并根据价格进行升序排序
2.查询出所有商品,根据数量进行升序排列,如果数量相同,根据价格进行降序排列


Mysql函数:

字符函数:
CONCAT():
字符连接 eg:SELECT CONCAT(‘A’,’B’); AB
CONCAT_WS():
使用指定的分隔符进行字符连接

SELECT CONCAT_WS(‘-‘,’A’,’B’); A-B

FORMAT():
数字格式化 eg:SELECT FORMAT(12138.250,2); 12,138.25
数字格式化将12138以千分位分割,0表示小的数点后后多少位。
且该方法自动四舍五入:
eg:SELECT FORMAT(12138.250,1); 输出结果:12,138.3

LOWER():

转换为小写字母 eg:SELECT LOWER(‘MySql’); mysql
UPPER():
转换为大写字母 eg:SELECT UPPER(‘mysql’); MYSQL
LEFT():
获得左侧的多少个字符;
eg:LEFT(‘Mysql’,2); My
RIGHT():
获得右侧多少个字符;
eg:RIGHT(‘MYSQL’,2); QL
常与大小写转换一起使用:
eg:lower(RIGHT(‘MYSQL’,2)); ql

LENGTH():

获得字符串的长度。(这个方法获得的字符串长度包括空格)
LTRIM():删除前导空格
RTRIM():删除后导空格
TRIM():删除前导和后导空格
eg: SELECT LTRIM(’ JAVA ‘);
eg: SELECT RTRIM(’ JAVA ‘);
LEADING ‘字符’ from ‘字符串’
eg:select TRIM(LEADING ‘???HH??’) HH??; 去除前导空格
TRALLING ‘???HH??’ 去除后端字符
eg:select TRIM(TRALLING ‘???HH??’); ???HH
BOTH ‘???HH??’ 去除前端和后端的空格。但是无法去除中间的字符。
eg:select TRIM(BOTH ‘???HH??’); HH

SUBSTRING():字符串的截取    eg:SELECT SUBSTRING('mysql',3); sql 表示的是从第三位开始到最后一位,只能指定开始位置,无法指定长度。

[NOT] LIKE:

以?开头 like ‘?%’ “%?”以?结尾 “%?%” 包含
如果要去除%需要告诉系统需要去除的百分号%不是通配符。eg:LIKE ‘%1%%’ ESCAPE’1’;
REPLACE():如何去除中间的空格或字符:使用字符的替换
eg:SELECT REPLACE(‘??MYSQL???’,’??’,’!’); !MYSQL!?

MySQL函数之数值运算符与函数:

CEIL() : 向上取整
eg: select CEIL(4.02); ——结果为5
FLOOR() : 向下取整
eg: select FLOOR(3.98); ——-结果为3

MOD() : 取余数

div:证书除法
eg: 3/4=0.75; 3 div 4 =0;

POWER():幂运算             POWER(3,3)  27ROUND: 四舍五入       eg: ROUND(24.128,2);  24.13TRUNCATE():数字的截取,不做四十五入计算    eg:TRUNCATE(125.32,0)  125        TRUNCATE(125.32,-1) 120

比较运算符与函数:

【NOT】 BETEWWN … AND.. :【不】在范围之内 【not】 闭区间
【NOT】 IN() [不] 在列出范围之内
IS[MOT] NULL [不]为空


日期时间函数:

NOW():当前日期和时间

CURDATE():当前日期
CURTIME():当前时间
DATE_ADD():日期变化
select date add(‘2014-3-12’,INTERVAL-365DAY365)
eg:SELECT DATE_ADD(‘2018-8-19’,INTERVAL 365 DAY);2019-8-19
DATEDIFF():日期差值
DATEDIFF(日期,日期)
DATE_FORMAT():日期格式化
CONNECTION_ID() 链接id:


信息函数:

1.CONNECTION_ID() 连接ID

SELECT CONNECTION_ID(); //结果:3
2.DATABASE() 当前数据库
SELECT DATABASE(); //结果:NULL
3.LAST_INSERT_ID() 最后插入记录的ID号
set NASMES gbk;改编码


加密函数:

md5:主要用于外界页面的使用
password:主要用于用户密码的改变
insert into test (password) values (md5(‘123456’));
上述操作可以对密码进行加密
同样的还有sha() sha1()
select decode(encode(‘hello’,’world’),’hello’)
上述操作的结果输出是world


自定义函数:

1.自定义函数

用户自定义函数(user-defined function, UDF)是一种对MySQL扩展的途径, 其用法与内置函数相同。

2.自定义函数的两个必要条件

a.参数:最多1024个任意类型的参数

b.返回值:任意类型
函数的参数和返回值没比必要的关联。

3、创建无参自定义函数:

格式为: create function 方法名() 返回值类型 返回方法

create function f1() returns varchar(30) return date_format(now(),’%Y-%m-%d’);
select f1();
上述结果将是2018-08-17

4、创建有参自定义函数

+++++++++++

smalltnt 为一个需要俩字节存储的整数类型。取值范围0-2^16-1(无符号 unsigned),0-2^15-1(有符号)++++++++++++++++++
create function f2(num1 smallint unsigned,num2 smallint unsigned)
-> returns float(10,2) unsigned
-> return (num1+num2)/2;
带有参数的方法,参数名不能与表中的建明相同。eg:id=id;
returns是返回值类型 return是返回值
select f2();就是在计算两者的平均值

5、创建具有复合结构函数体的自定义函数:

修改默认的MySQL分隔符:delimiter //

以后所有命令都是用//来结束
自定义函数
create function adduser(username VARCHAR(20))
RETURNS INT UNSIGNED
BEGIN
RETURN
INSERT test (username) VALUES(username);


int类型存储过程:

存储过程,带IN类型的参数,本例子中由于字段名和参数名称重名,故id=id时,数据表中所有数据被删除了,所以要修改存储过程,需要先删除存储体,再重新写。

(另外存储过程和函数的区别?)
创建带参数的存储过程
delimitter //(修改结束标识)
create procedure removeById(in pidn smallint unsigned)
begin
delete from user where p_id=pid;
end


7、聚合函数

求一列的最大 最小 平均值 求总和 聚合函数

1 count(列名)
2 avg
3 max
4 min
5 sum


总结:

mysql数据库
数据库
mysql 和 sql

create database dbName character set 编码
use dbName
select database()
drop database dbName
show databases
show create database dbName

int varchar(长度) char timestamp
约束: not null default unique primary key auto_increment
创建表

create table tbName(

字段1(属性) 类型 约束1 约束2 ,
字段2(属性) 类型 约束1 约束2
……

修改表结构 知道 alter table tbName add change modify drop

插入数据

insert into tbName () values () ;
insert into tbName values (); 所有字段数据 个数

删除数据

delete from tbName where 逐条删除
truncate table tbName 创建新表

更新数据

update tbName set 字段1 = 值 , 字段2= 值….. where

查询

select 属性(变量) , 常量 , 1+2 , 函数

from tbName where order by 字段 asc/desc

聚合函数 sum avg count min max ifnull


代码案例看下一章


转载地址:https://blog.csdn.net/qq_31770811/article/details/82228969 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:同步异步,阻塞与非阻塞
下一篇:mysql经典案例练习

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月02日 01时50分51秒