MySQL的基本操作
创建数据库
create database 数据库名;
create database 数据库名
default character set 字符集 collate 排序规则;
使用数据库
use 数据库名;
删除数据库
drop database 数据库名;
-- 存在就删除
drop database if exists 数据库;案例:
-- 删除数据库
drop database if exists testdb;
-- 创建数据库
create database testdb
default character set utf8mb4 collate utf8mb4_general_ci;
-- 使用数据库
use testdb;
创建表
create table 表名
(
字段名 数据类型(长度) [约束],
字段名 数据类型(长度) [约束],
字段名 数据类型(长度) [约束]
);
create table student
(
stu_id int primary key auto_increment,
stu_name varchar(20) not null,
stu_age int not null,
stu_gender varchar(1) not null,
stu_address varchar(255)
);
删除表
drop table 表名;
drop table if exists 表名;
-- 修改表
alter table student add COLUMN stu_phone varchar(11);
alter table student drop column stu_phone;
-- 查看表结构
desc student;
数据操作语言,包含增删改
insert语句
单行插入
insert into 表名(列名,列名,列名,列名) values(值,值,值,值);
多行插入
insert into 表名(列名,列名,列名,列名) values(值,值,值,值),(值,值,值,值),(值,值,值,值),(值,值,值,值);
查询另一表数据,全部插入另一个表
insert into 表1(列名,列名,列名,列名) select 列名,列名,列名,列名 from 表2;
注意:
1. 列和值顺序、个数、类型都要一致
2. 自动增长的列不用插入
3. 列可以省略,需要插入所有列
4. 非空的列必须要插入
update语句
-- 修改
update 表名 set 列 = 值,列 = 值,列 = 值 where 条件
-- 修改数据
update student set stu_gender = '女' where stu_id % 2 = 1;
update student set stu_age = stu_age + 1 where stu_gender = '男';
delete语句
--语法
delete from 表名 [where 条件];
--清空表(效率高)
truncate table 表名;
-- 删除数据
delete from student where stu_id = 9;-- 清空表
truncate table person;
基本的查询
-- 查询所有的行和列
select * from student;
-- 查询部分列
select stu_id,stu_name from student;
-- 查询给列设置别名
select stu_id 编号,stu_name 姓名 from student;
条件查询
单个条件
select * from student where stu_age > 25;
OR
条件1 OR 条件2
select * from student where stu_address = '武汉' OR stu_address = '上海';
AND
条件1 AND 条件2
select * from student where stu_age >= 25 and stu_age <= 27;
IN
-- IN(值,值...)
select * from student where stu_address in ('武汉','上海');
BETWEEN
-- between 值1 and 值2
select * from student where stu_age between 25 and 27;
模糊查询
-- 查询非精确的条件 -- LIKE '带通配符的值'
通配符:
-
% 匹配任意长度的字符
-
_ 匹配任意一个字符
-- 查询姓张的学生
select * from student where stu_name like '张%';
-- 查询地址中有海字的
select * from student where stu_address like '%海%';
查找空值
-- 查找地址为null的
select * from student where stu_address is null;
-- 查找地址不为null的
select * from student where stu_address is not null;
排序
-- order by 列 -- | -- 升序 asc 默认-- | -- 降序 desc
-- 按年龄排序
select * from student order by stu_age asc;
select * from student order by stu_age desc;
select * from student where stu_gender = '男' order by stu_age;
-- 多列排序
select * from student order by stu_age,stu_id desc;
分页查询
--对返回结果的行数进行限制
--limit 开始位置, 长度 --limit 长度
-- 年龄最大的2个学生
select * from student order by stu_age desc limit 2;
-- 分页查询学生,每次显示5个学生
select * from student limit 0,5;
select * from student limit 5,5;
select * from student limit 10,5;
select * from student limit 15,5;