mysql默认带的四个库
库名 | 作用 |
---|---|
information_schema | 相关配置信息库 |
mysql | 存储相关表:user 用户表(管理员) |
performance_schema | mysql性能相关的 |
test | 测试的库 |
DDL(数据定义语言)
对象: 数据库和表
对数据库操作
创建数据库
--创建数据库
create database 数据库名;
--示例
create database mydatabase;
--一半要在前面加上判断,如果数据库已经存在,删除数据库
drop database if exists 数据库名;
--优化,如果该数据库不存在,创建
create database if not exists 数据库名;
--示例
create database if not exists mydatabase;
修改数据库的编码格式
alter database 数据库名 default character set 编码格式;
--修改数据库的这个编码格式gbk
alter database mydatabase default character set gbk;
--查看数据库编码
show create database 数据库名;
删除数据库
drop database 数据库名;
--如果存在,删除该库
drop database if exists 数据库名;
-- 修改库的字符集:创建数据库的时候直接修改了库的编码格式
create database if not exists 数据库名 default character set 编码格式 ;
--示例
create database if not exists mydb_04 default character set gbk ;
进入数据库
--创建表前要先进入到指定的数据库
use 数据库名;
对表操作
查询该数据库中的表
show tables;
创建表
--除了最后一个字段类型后面,每一个字段类型后面加","隔开
create table 表名(
字段名称1 字段类型1,
字段名称2 字段类型2,
...
字段名称n 字段类型n
);
--例如 ,如果student表存在,删除
drop table if exists student;
create table(
id int,
name varchar(10),
score double(3,1)--表示三位数,保留一位小数
);
查询表结构
desc 表名;
修改表
--添加一列
alter table 表名 add 字段名 字段类型;
--示例
alter table student add sex varchar(2);
--修改某列的数据类型
alter table 表名 modify 字段名 新字段类型;
--示例
alter table student modify sex varchar(3);
--修改某列的名称
alter table 表名 change 旧字段名 新字段名 字段类型(与表中数据类型一致);
--示例
alter table student change sex gender varchar(3);
删除表
drop table 表名;
--如果该表存在,删除该表
drop table if exists 表名;
DML(数据操纵语言)
对象:纪录(行)
插入记录
--插入全部字段,给表中的每一个字段都赋值
insert into 表名 values(值1,值2...值n);
--插入部分字段,没有赋值的字段都是null值
--字段和值要一一对应
insert into 表名(字段名1,字段名2...) values (值1,值2...);
--一次插入多条记录,中间用逗号隔开
insert into 表名 values (值1,值2...值n),
(值1,值2...值n),
...
(值1,值2...值n);
删除记录
--删除全表数据
delete from 表名;
--删除表以及表中的全部数据,然后创建一张一模一样的表
truncate table 表名;
--删除某一行记录
delete from 表名 条件(where);
--例如 删除学生表中,成绩为80的记录
delete from student where score = 80;
删除全表数据是否对自增长的主键影响?
- DELETe FROM 表名 不会影响自增长的主键(删除全表的数据)(不会清除自增长主键!)
- TRUNCATE TABLE 表名 :直接删除了表(并且同时创建一张一模一样的表):自增长主键会清除掉!
修改数据
-- 注意,修改必须带上条件,如果不带上条件,就成了批量修改
--带条件修改单个字段
update 表名 set 字段名 = 值 where 条件;
--修改多条字段 中间用逗号隔开
update 表名 set 字段名1 = 值1,字段名2 = 值2 where 条件;
DQL(数据查询语言)
基本的查询语句
查询全表数据
select * from 表名;
select 字段名1...字段名n(所有的字段名) from 表名;
--示例
--假设student表中 有字段 id,name,sex,age
select * from student;
select id,name,sex,age from student;
查询指定字段
select 字段名 from 表名;
--假设student表中 有字段 id,name,sex,age
select name,sex from student;
给字段起别名
select 字段名 as(可省略) "别名" from student;
select name as "姓名" from student;
select id "学号".
name "姓名",
age "年龄",
sex "性别"
from student;
条件查询
条件查询就是在表名后面加上where条件语句
符号 | 意思 |
---|---|
> | 大于 |
< | 小于 |
>= | 大于等于 |
<=> | 小于等于 |
<> | 不等于 |
一个条件
select 字段名... from 表名 where 条件;
--例如 查找年龄大于18岁的学生信息
select * from student
where age>18;
多个多件
表达式 | 意思 |
---|---|
and | 并且 |
&& | 并且 |
or | 或者 |
|| | 或者 |
in | 后面跟(值1,值2…值n),表示在这几个值中 |
is | 后面跟null或者not null(mysql不支持" =null") |
between 值1 and 值2 | 表示在值1和值2之间,等价于 >= 值1 and <= 值2 |
--查找学生表 年龄大于18 的女同学
select * from student
where age>18 and sex="女";
--查找学生表 年龄大于23 或者 年龄小于18的学生
select * from student
where age<18 or age>23
--查找年龄为18或者23,或者20的同学
select * from student
where age=(18,20,23);
--查找年龄在18-23之间的同学
select * from student
where age between 18 and 23;
--查找名字为null的同学
select * from student
where name is null;
聚合函数
常用的聚合函数
函数名 | 含义 |
---|---|
sum() | 求和 |
avg() | 平均值 |
max() | 最大值 |
min() | 最小值 |
count() | 查找记录的数量 |
--查找总成绩
select sum(score) from scores;
--求成绩平均数
select avg(score) from scores;
--求最大成绩
select max(score) from scores;
--求最小成绩
select min(score) from scores;
--求班级人数
select count(*) from scores;
模糊查询
关键字 | 含义 |
---|---|
like | 模糊查询不能用等号,只能用like |
% | 多个任意符号 |
_ | 一个字符 |
--查找姓马的人的信息
select * from student
name like "马%";
--查询名字有化的人的信息
select * from student
name like "%化%"
--查找名字里第三个字是腾的人的信息
select * from student
name like "__腾";
--查找名字是两个字的人的信息
select * from student
name like "__";