目录
新建一个数据库
1.先点击新建数据库
2. 写创建的数据库的名称,选择中文编码,然后点击Apply
3.直接Apply
4.创建成功后Finish
5.创建成功后刷新,新建的数据库就会出现
新建表
导航区建表
1.右键需要建表位置的数据库
2.添加表名,字段等信息
3.点击Apply
生成的SQL语言
CREATE TABLE `java_0326`.`classes` (
`cid` INT NOT NULL COMMENT '班级编号',
`name` VARCHAR(45) NOT NULL COMMENT '班级名称',
PRIMARY KEY (`cid`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8mb4
COMMENT = '班级表';
4.建表成功
SQL语言建表
新建一个查询,然后输入代码,之后执行
CREATE TABLE 表名(
列名 类型 约束信息,
id int not null,
name varchar(255) not null
);
类型总结
int: 数字
varchar: 字符串
date: 年月日
time: 时分秒
datetime: 年月日 时分秒
timestamp: 时间戳(从 1970-01-01 经过的秒数)
MySQL的增删查改
先创建表
CREATE TABLE student (
id INT,
sn INT comment '学号',
name VARCHAR(20) comment '姓名',
-- DECIMAL(3,1)说明这个数是三位数,有两位整数,一位小数,最大为99.9
grade DECIMAL(3,1),
qq_mail VARCHAR(20) comment 'QQ邮箱'
);
增
单行插入
insert into 表名称 values (id值,sn值,name值,qq_mail值);
insert into student values (100,10000,'张三',90,null);
多行插入
insert into 表名称 values (id值,sn值,name值,grade值,qq_mail值),(id值,sn值,name值,grade值,qq_mail值);
insert into student values (101,10001,'李四',98,null),(102,10002,'王五',100,null);
指定列插入
insert into student (id,sn,name) values (id值,sn值,name值)
insert into student (id,sn,name) values (103,10003,'孙悟空'),(105,10005,'猪八戒');
查
全列查询
- 一般不要轻易使用,可能表中数量过多,传输的数据量会更大
select * from 表名称;
select * from student;
指定列查询
select 列名称 from student表名称;
select id,name from student;
查询字段为表达式
- 有 null 参与的运算结果还是 null
- 即使是 null,做bool值的时候,也看作 false
select 列名称, 10 from 表名称;
select id, name, 10 from student;
select 100 from student;
select id*10 from student;
别名
select id, name, grade as 总分 from student;
排序
-- 查询同学姓名和 成绩,按 成绩 排序显示
select name, grade from student order by grade asc;
- ASC 为升序, DESC 为降序,默认为 ASC
- NULL 数据排序,视为比任何值都小,升序出现在最上面,降序出现在最下面
去重
查询得到的结果会把重复的数据只显示一个
select distinct 列名称 from 表名称;
select distinct grade from student;
条件查询
比较运算符
运算符 | 说明 |
>, >=, <, <= | 大于,大于等于,小于,小于等于 |
= | 等于,NULL 不安全,例如 NULL = NULL 的结果是 NULL |
<=> | 等于,NULL 安全,例如 NULL NULL 的结果是 TRUE(1) |
!=, <> | 不等于 |
BETWEEN a0 AND a1 | 范围匹配,[a0, a1],如果 a0 <= value <= a1,返回 TRUE(1) |
N (option, ...) | 如果是 option 中的任意一个,返回 TRUE(1) |
IS NULL | 是 NULL |
S NOT NULL | 不是NULL |
LIKE | 模糊匹配。% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字 符 |
- LIKE
-- % 匹配任意多个(包括 0 个)字符
select name from student where name like '孙%';-- 匹配到姓孙的两个字/三个字等
-- _ 匹配严格的一个任意字符
select name from student where name like '孙_';-- 匹配到姓孙的两个字
select name from student where name like '%孙';-- 匹配到最后一个字是孙的人
逻辑运算符
运算符 | 说明 |
AND | 多个条件必须都为 TRUE(1),结果才是 TRUE(1) |
OR | 任意一个条件为 TRUE(1), 结果为 TRUE(1) |
NOT | 条件为 TRUE(1),结果为 FALSE(0) |
分页查询
-- 分页
-- limit
-- offset
select id, name, grade FROM student order by id limit 3 offset 0;
改
update 表名称 set 列名称 = 'XX' where 条件
-- 修改 id 为1的学生成绩为98
update student set garde = 98 where id = 1;
- update支持表达式
-- 把 id 为1的学生成绩在之前的基础上-10
update student set grade = grade - 10 where id = 1;
- update 支持 limit,但不支持 limit, offset
-- 按增序然后修改前三行的grade为88
update student set grade = 88 order by id limit 3;
删
截断
把表还原成最开始的状态
truncate student;
删除
删除表中的数据
delete from student;