- 画图 分类
- ddl 数据定义语言:操作数据库和表结构 data define language
- dml 数据操作语言:操作数据记录–增删改
- dql 数据查询语言:查询数据记录
- dcl 数据控制语言:用户权限的控制–授权和撤销权限
ddl学习:
一.操作数据库
1.C(create):创建
1.1创建数据库
create database 数据库名;
1.2创建数据库前先判断是否存在
create database if not exists 数据库名;
1.3创建数据库db1 ,判断是否存在,并指定字符集为utf8
create database if not exists 数据库名 character set utf8;
2.R (Retrieve):查询
2.1查询所有数据库名
show databases;
2.2查询某个数据库的字符集--其实是查询数据库的创建sql语句
show create database数据库名;
3. U(Update):修改
3.1修改数据库的字符集
alter database 数据库名 character set 字符集;
4. D(delete):删除
4.1删除数据库
drop database 数据库名;
4.2删除数据库前先判断是否存在
drop database if exists 数据库名;
5.使用数据库
5.1查询当前正在使用的数据库名称
select database();
注意 和 show databases;的细微区别
-- 语义不同,分别是:查看所有数据库名称,查看当前正在使
用的数据库名称
-- 写法不同,database() 和 databases
5.2使用数据库
use db1(数据库名);
二. ddl操作表
1.查询
1.1查询某个数据库中所有的表名称
show tables;
1.2查询表结构
desc 表名;
1.3查询表的创建语句
show create table 表名;
2. 创建
创建表
create table 表名(
列名1 数据类型1,
列名2 数据类型2,
......
列名n 数据类型n
);
注意:最后一列,不需要加逗号
数据类型
1. int 整数类型
age int
2. double 小数类型
score double(5,2) 总长度5,小数点后的位数2,最大值999.99
3. date 日期,只包含年月日,yyyy-MM-dd
4. datetime 日期,包含年月日和时分秒 yyyy-MM-dd HH:mm:ss
5. timestamp 时间戳,包含年月日和时分秒 yyyy-MM-dd HH:mm:ss
如果该类型字段没有赋值,或赋值为null,则默认使用当前系统时间填充
6. varchar 字符串(长度可变)
7. char字符串(长度固定)
name varchar(20) 表示姓名最长20个字符的限制
注意:
-- 字符串varchar和小数double都要指定长度
-- varchar和日期类型的数据要加上引号(推荐使用单引号)
复制表
create table 表名 like 被复制的表名;
3.删除表
1. drop table 表名
2. drop table if exists 表名
4. 修改
4.1修改表
修改表名
alter table 表名 rename to 新表名
修改表的字符集
– 查看表的字符集,其实是查看表的创建语句
show create table 表名;
– 修改表的字符集
alter table 表名 character set 字符集;
4.2修改列
添加一列
alter table 表名 add 列名 数据类型;
修改列类型
alter table 表名 modify 列名 数据类型;
修改列类型
alter table 表名 change 旧列名 新列名 数据类型;
删除列
alter table 表名 drop 列名;
二、dml学习
1.添加字段
1.1添加全部字段
insert into 表名 (列名1,列名2,...列名n) values (值1,值2,...值n);
1.2添加部分字段
insert into 表名 (列名1,列名2,列名3,...) values (值1,值2,值3,...);
1.3批量添加数据
随堂测试:
1.向员工表中新增3名员工信息:
2.张三 25岁,男
3.李四 26岁,男
4.王五 27岁,女
-- 分析:属于添加部分字段
insert into emp (id,name,age,sex) values
(2,'张三',3,'男'),(3,'李四',26,'男'),(4,'王五',27,'女')
-- 批量新增语法
insert into 表名 (字段1,字段2,...) values (值1,值2,...),(值1,值2,...),
(值1,值2,...);
注意:
添加数据值时,除了数字类型, 其它类型需要使用引号
(单双引号都可以),建议使用单引号。
2.删除数据
2.1删除满足条件的数据
delete from 表名 [where 条件];
注意:
如果不加条件,则删除表中所有的数据
eg:
delete from emp1;
delete from emp1 where true;
delete from emp1 where 1=1;
2.2删除表中的所有数据
truncate table 表名;
两种删除所有数据的方法:
1.truncate方式,先删除整个表,再创建一张同样结构的表,
执行效率高,推荐使用。
2.delete from 表名 ,不带条件,有多少条记录就会执行多少
次删除操作,效率不高,不推荐。
3.修改数据
update 表名 set 列名1=值1, 列名2=值2, ... [where 条件];
注意:
如果不带条件,则会修改所有的数据
三、dql学习
完整的查询语法
select
字段列表
from
表名列表
where
条件列表
group by
分组字段
having
分组之后的条件
order by
排序
limit
分页限定
1. 基础查询
1.1多个字段查询
select 字段名1,字段名2... from 表名;
注意: 如果查询所有字段,则可以使用*来替代字段列表。
1.2去除重复
关键字 distinct直接放在select后面
1.3四则运算
一般可以使用四则运算计算一些列的值。(一般只会进行数值型的计算)
ifnull(表达式1,表达式2):null参与的运算,计算结果都为null
表达式1:哪个字段需要判断是否为null
如果该字段为null后的替换值。
案例:计算学员英语和数学成绩和:(假如他们之中没人考试,
成绩为null)
select math,english,ifnull(math,0)+ifnull(english,0) from stu;
1.4起别名
字段名 后写关键字 as 或省略as 直接用空格
2. 条件查询
2.1where和 运算符 构成查询条件
> 、< 、<= 、>= 、= 、<>
BETWEEN...AND
IN( 集合)
LIKE:模糊查询
占位符:
_:单个任意字符
%:多个任意字符
IS NULL
and 或 &&
or 或 ||
not 或 !
3. 模糊查询
3.1使用关键字 like
通配符:
_ 匹配一个字符
% 匹配0-n个字符
案例:
-- 查询姓马的有哪些? like
SELECT * FROM student WHERE NAME LIKE '马%';
-- 查询姓名第二个字是化的人
SELECT * FROM student WHERE NAME LIKE "_化%";
-- 查询姓名是3个字的人
SELECT * FROM student WHERE NAME LIKE '___';
-- 查询姓名中包含德的人
SELECT * FROM student WHERE NAME LIKE '%德%';