mysql常见操作合集
2020-08-04 本文已影响0人
小盐_814e
mysql数据库常见操作合集
显示所有数据库
show databases
创建新数据库
create database db1;
判断是否有已存在,如不存在创建新数据库
create database if not exists db1;
创建数据库指派字符编码
create database db3 character set gbk;
查询某个数据库的字符集;查询某个数据库的创建语句
show create database db3;
修改数据库的字符集
alter database db1 character set gbk;
删除数据库
drop database db1;
验证是否存在如存在就删除
drop database if exists db1;
查询当前正在使用的数据库名称
select database();
选择正在使用的数据库
use db3;
数据库表的常见CRUD操作
查询数据库中所有表的名称
show tables;
查询表结构
desc tableName;
创建数据表
create table 表名(
列名1 数据类型1,
列名2 数据类型2,
....
列名n 数据类型n
);
示例
create table student(
id int,
name varchar(32),
age int,
score double(4,1),
birthday date,
insert_time timestamp
);
mysql数据库类型
https://www.cnblogs.com/-xlp/p/8617760.html
复制表
create table 表名 like 被复制表名;
删除表
drop table 表名;
drop table if exists 表名;
修改表名
alter table 表名 rename to 新的表名;
修改表的字符集
alter table 表名 character set utf8;
添加一列
alter table 表名 add 列名 数据类型;
修改列名称类型
alter table 表名 change 列名 新列名 数据类型
修改列类型
alter table 表名 modify sex varchar(10);
删除列
alter table 表名 drop 列名;
增删改表中数据#
增加数据
insert into 表名(列名1,列名2,...列名n) values( 值1,值2,...值n);
不写列名默认给所有列加值
insert into 表名(列名1,列名2,...列名n) values( 值1,值2,...值n);
注意除了数字其他类型需要引号
删除数据,如果不加条件则删除表中所有数据
delete from 表名 [where 条件]
例 delete from stu where id=1;
删除表,然后再创建一个一摸一样的空表
TRUNCATE TABLE 表名 --推荐使用,效率更高
delete from 表名 --不推荐使用有多少条记录就会删除多少次
修改数据
update 表名 set 列名1=值1,列名2=值2,...[where 条件]
例 update stu set age=117 where id=3;
如果不添加条件则会把表中所有数据全部修改
查询表中的记录
select * from 表名;
1,语法
select
字段列表
from
表名列表
where
条件列表
group by
分组字段
having
分组之后的条件
order by
排序
limit
分页限定
2,基础查询
1.多个字段的查询
去除重复的结果
SELECT DISTINCT 列名 FROM 表名
计算math和english分数之和
SELECT math,english,math+english FROM 表名
--如果有null参与计算结果都为null
SELECT name,waybill_prefix,waybill_prefix1 ,waybill_prefix + IFNULL(waybill_prefix1,0) FROM dkd_airline
--起别名 as 可以省略
SELECT name,waybill_prefix,waybill_prefix1 ,waybill_prefix + IFNULL(waybill_prefix1,0) as 总分 FROM dkd_airline
SELECT name,waybill_prefix 数学,waybill_prefix1 英语,waybill_prefix + IFNULL(waybill_prefix1,0) AS 总分 FROM dkd_airline
2.条件查询
1,where子句后跟条件
2,运算符
* > | < | <= | >= |= | <>
* between...and
* in
* like:模糊查询
* 占位符:
* _:单个任意字符
* %:任意多个字符
* is null
* and 或 &&
* or 或 ||
* not 或 !
例子
SELECT * FROM dkd_airline WHERE CODE>5
---大于20小于30
SELECT * FROM dkd_airline WHERE CODE>=20 && CODE>=30;
SELECT * FROM dkd_airline WHERE CODE>=20 AND CODE>=30;
SELECT * FROM dkd_airline WHERE CODE BETWEEN 20 AND 30;
--查询22,18或25的消息
SELECT * FROM dkd_airline WHERE CODE=22 OR CODE=18 OR CODE=25;
SELECT * FROM dkd_airline WHERE CODE IN(22,18,25);
--null不能用=或(!=)判断
SELECT * FROM dkd_airline WHERE waybill_prefix IS (NOT) NULL
like例子
-- 查询第一个字是华的人
SELECT * FROM dkd_airline WHERE name LIKE '华%'
-- 查询第二个字是海的人
SELECT * FROM dkd_airline WHERE name LIKE '_海%';
-- 查询姓名是三个字
SELECT * FROM dkd_airline WHERE name LIKE '___';
-- 查询名称中包含海的
SELECT * FROM dkd_airline WHERE name LIKE '%海%';
查询语句:
1,排序查询
语法:order by 子句
order by 排序字段1 排序方式1,排序字段2 排序方式2
排序方式
ASC:升序,默认的
DESC:降序
例子
--按照数学升级降序
SELECT * FROM dkd_airline ORDER BY `math` DESC;
--按照数学降序如果数学一样则英语降序
SELECT * FROM dkd_airline ORDER BY `math` DESC;
如果多个排序条件,只有前面条件值一样时,才会判断第二个条件
2,聚合函数:将一列数据作为一个整体,进行纵向的计算
1. count:计算个数
-一般选择非空的列:主键
-count(*)
2. max:计算最大值
3. min:计算最小值
4. sum:计算和
5. avg:计算平均值
*注意聚合的计算排除null值
SELECT COUNT(IFNULL(math,0)) FROM dkd_airline;
解决方案
1. 选择不包含非空的列进行计算
2. IFNULL函数
3,分页查询
- group by 分组字段;
- 注意:
- 分组之后查询的字段:分组字段、聚合函数
- where和having的区别?
- where在分组之前进行限定,如果不满足条件,则不参与分组。having在分组之后进行限定如果不满足则不显示
- where后不可以跟聚合函数
4, 分页查询
- 语法:limit开始的索引,每页查询的条数;
例子
--公式 ,开始的索引=(当前的页码-1)*每页显示的条数
SELECT* FROM dkd_flight LIMIT 0,3;
limit是一个mysql方言