厦门建网站做优化,馆陶网站建设费用,wordpress保存的字体大小,企业形象设计方案文章目录 一、Navicat 工具链接 Mysql二、数据库的使用1.常用数据类型2. 建表 create3. 删表 drop4. insert 插入数据5. select 查询数据6. update 修改数据7. delete 删除记录truncate table 删除数据 三、字段约束字段1. 主键 自增delete和truncate自增长字段的影响 2. 非空… 文章目录 一、Navicat 工具链接 Mysql二、数据库的使用1.常用数据类型2. 建表 create3. 删表 drop4. insert 插入数据5. select 查询数据6. update 修改数据7. delete 删除记录truncate table 删除数据 三、字段约束字段1. 主键 自增delete和truncate自增长字段的影响 2. 非空 not null3. 唯一 unique4. 默认值 default5. 别名字段别名表别名 6. 过滤 distinct 四、条件查询1. where 条件2. 运算符的查询语句比较运算符逻辑运算符 3. 模糊查询 like4. 范围查询5. 空判断 is null6. 其他练习 五、排序 order by六、聚合函数1. count 总记录数2. max/min 最大/小值3. sum 求和4. avg 平均值 七、分组1. 分组 group by2. 分组后筛选 havinghaving和where筛选的区别 八、数据分页1. limit 显示指定的记录数2. 数据分页显示3. 求总页数 九、多表链接查询写SQL三步法1.内连接2.左连接3.右链接4. 自关联5. 子查询6. 练习 十、MySQL 内置函数1. 字符串函数1. 拼接字符串 concat2. 字符串长度 length3. 截取字符串练习4. 去空格 2. 数学函数1. 四舍五入 round2. 随机数 rand 3. 日期、时间函数 十一、了解1. 视图2. 事务回滚事务操作提交事务 3. 索引创建索引查看索引删除索引索引优缺点 十二、基于命令行的mysqlcmd登录之后的命令在命令行下创建和删除数据库 一、Navicat 工具链接 Mysql
连接到Mysql数据库以后创建数据库。
二、数据库的使用
1.常用数据类型
int 整数有符号范围(-2147483648 ,2147483647)无符号范围(0,4294967295) 如: int unsigned, 代表设置一个无符号的整数; tinyint 小整数, 有符号范围(-128,127) 无符号范围(0,255) 如: tinyint unsigned代表设置一个无符号的小整数 decimal 小数, 如decimal(5,2)表示共存5位数小数占2位不能超过2位;整数占3位不能超过三位; varchar 字符串, 如 varchar(3)表示最多存3个字符一个中文或一个字母都占一个字符; . datetime日期时间,范围(1000-01-01 00:00:00 ~ 9999-12-31 23:59:59)如 ‘2024-04-01 20:46:59’。 tips 注释-- 一般用快捷键 ctrl / Sql 语言不区分大小写 ctrl r 快捷执行 2. 建表 create
语法create table 表名(字段名 字段类型,字段名 字段类型,
-- 例1: 创建表a字段要求:nane (姓名)数据类型: varchar(字符串)长度为10
create table a(name varchar(10)
)
-- 例2:创建表b,字段要求: name(姓名), 数据类型为varchar(字符串)长度为10;
-- height(身高)数据类型为decimal (小数)一共5位其中3位整数2位小数。
create table b(name varchar(10),height decimal(5,2)
);
-- 例3:创建表c字段要求如下:id:数据类型为int(整数);
-- name姓名:数据类型为varchar (字符串)长度为20,
-- age年龄:数据类型为tinyint unsiqned (无符号小整数 0-255)
create table c(id int,name varchar(20),age tinyint unsigned
);3. 删表 drop
语法1drop table 表名; 语法2drop table if exists 表名;
-- 删除表a再执行删除表a会报错
drop table a;-- 删除表a如果表a存在就利除表a,如果不存在,什么也不做
drop table if exists a;4. insert 插入数据
语法insert into 表名 values(值,值,值);
-- 往表c 插入数据
insert into c values(001,mario,23);指定字段插入 语法insert into 表名(字段名,字段名) values(值,值);
-- 表c 插人一条记录只设置id和姓名name
insert into c(id,name) values(2,anna);一条语法插入多条记录insert into 表名 values(值,值),(值,值),(值,值);
-- 表c插入多条记录用一条insert语句数据之间用逗号隔开
insert into c values(3,jone,19),(4,kool,21),(5,amy,27);5. select 查询数据
语法select * from 表名;
-- 查询表c的所有字段
select * from c;-- 查询表c的name字段
select name from c;-- 查询表c的字段顺序可自定义
select name,id,age from c;6. update 修改数据
语法update 表名 set 字段值,字段值 where 条件;
如果没有where条件代表修改表中所有的记录。
-- 修改表c所有人的年龄(age字段)改为20
update c set age20;如果有where条件修改表中的记录。
-- 修改表c id为3的记录姓名(name字段)改为 tigger年龄(age字段)改为25
update c set nametigger,age25 where id3;update c set name图图 where nameamy;update c set ageage1 where id3;7. delete 删除记录
语句delete from 表名 where 条件;
--删除所有记录
delete from c;-- 删除表c id3的记录
delete from c where id3;delete from c where id3;truncate table 删除数据
语法truncate table 表名;
-- 删除表c中所有的记录
truncate table c;delete 和 truncate区别 在速度上truncate delete; 如果想删除部分数据用 delete,注意带上where子句; 如果想保留表而将所有数据删除自增长字段恢复从1开始用truncate; 三、字段约束
字段
主键(primary key): 值不能重复. auto_increment代表值自增长;非空(not null): 此字段不允许填写空值:唯一(unique): 此字段的值不允许重复;默认值(default): 当不填写此值时会使用默认值如果填写时以填写为准。
1. 主键 自增
创建带约束的表和数据 语法
-- 创建表的主键 自增长
create table 表名(字段名 数据类型 primary key auto_increment,字段名 数据类型 约束,...
);-- 创建表a id自增长
create table a(id int unsigned primary key auto_increment,name varchar(10),age int
);-- 插入数据
insert into a(name,age) values(brown,28),(green,28),(a,45);-- 插入 指定id值
insert into a values(5,Jone,34);-- 再插入 不指定id (此时id自增长只看前一条数据的id值)
insert into a(name,age) values(popol,34);注意如果不指定字段,主键自增长字段的值可以用占位符, 0或者null insert into a values(0,Jone1,32);
insert into a values(NULL,Jone2,34);delete和truncate自增长字段的影响
delete 删除数据 truncate 删除数据
2. 非空 not null
语法
-- not null 字段不能为空
create table 表名(字段名 数据类型 not null,...
);create table b(id int unsigned,name varchar(10) not null,age int
);insert into b values(1,anna,28)-- 报错name定义非空如果为空插入失败
insert into b(id,age) values(1,28)3. 唯一 unique
语法
-- 创建表a id自增长
create table 表名(字段名 数据类型 unique,...
);create table d(id int unsigned,name varchar(10) unique,age int
);insert into d values(1,anna,28)
-- name 字段unique代表唯一 值不能重复插入
insert into d values(2,anna,23)4. 默认值 default
当一个字段有默认值约束插入数据时如果指定了值那么默认值无效如早没有指定值会使用默认值xx 语法
create table 表名(字段名 数据类型 default xx,...
);create table e(id int unsigned,name varchar(10),age int default 20
);-- 插入 指定age的值
insert into e values(1,anna,28)
-- 插入 不指定age的值会使用默认值 20
insert into e(id,name) values(2,anna)5. 别名
字段别名
通过字段名 as别名的语法可以给字没起一个别名别名可以是中文 as可以省略 字段名as别名和 字段名 别名结果是一样的
-- 通过as给字段起一个别名
select name as 姓名,sex as 性别 from students;-- 别名的as可以省略
select name 姓名,sex 性别 from students;表别名
-- 通过 表名as别名 起一个别名
select * from students as stu;-- 别名的as可以省略
select * from students stu;6. 过滤 distinct
通过 select distinct 字段名,字段名 from 表名来过滤select查询结果中的重复记录。
select distinct sex,class from students;四、条件查询
1. where 条件
-- 查询students 表中学号studentNo 001的记录
select * from students where studentNo 001;-- 查询students 表中年龄age等于30的姓名name,班级class
select name,class from students where age30;2. 运算符的查询语句
比较运算符 小于 小于等于 大于 大于等于 ! 和 不等于
-- 查询students 表中name (姓名)等于小乔学生的age (年龄)
select age from students where name 小乔;-- 查询students表中30岁和30岁以下的学生记录
select * from students where age 30;-- 查询class 班级为1班以外的学生记录
select * from students where class!1班;逻辑运算符
-- 条件 and 条件条件都需满足
-- 查询age年龄小于30 并且sex 性别为女的同学记录
select * from students where age30 and sex女;-- 条件 or 条件条件满足一个即可
-- 查询sex性别为‘女’或者class班级为”1班’的学生记录
select * from students where sex女 or class1班;-- not 条件 如果条件为满足,not后变为不满足。如果条件为不满足,not后变为满足;
-- 查询hometown老家非天津的学生记录
select * from students where not hometown天津;3. 模糊查询 like
% 代表任意多个字符 _ 代表任意一个字符
-- 查询name姓名中以孙开头的学生记录
select * from students where name like 孙%;
-- 查询name为任意姓名叫乔的学生记录
select * from students where name like %乔;
-- 查询name姓名有白的学生记录
select * from students where name like %白%;-- 查询name 姓名以孙开头且名后只有一个字的学生记录
select * from students where name like 孙_;
-- 查询name 姓名为两个字的学生记录
select * from students where name like __;4. 范围查询
in(值,值,值) --非连续范围查找 between 开始值 and 结束值 --连续范围找包含开始值包含结束值
-- 查询hometown 家乡是北京或上海或广东的学生记录
select * from students where hometown in(北京,上海,广东);
select * from students where hometown北京 or hometown上海 or hometown广东;-- 查询age年龄为25至30的学生记录
select * from students where age between 25 and 30;
select * from students where age 25 and age 30;5. 空判断 is null
注意: null 与 是不同的 null: 代表什么都没有; :代表长度为0的字符串; is null: 是否为 null is not null: 是否不为null
-- 空判断 is null
-- 查询card身份证为null的学生记录
select * from students where card is null;-- 非空判断 is not null
-- 查询card身份证非null 的学生记录
select * from students where card is not null;6. 其他练习
-- 修改age为25, 并且name为孙尚香的学生class 为2班
update students set class2班 where age25 and name孙尚香;-- 删除class为1班并且age大于30的学生记录
delete from students where class1班 and age 30;五、排序 order by
asc 代表从小到大升序这可以省略。 desc 代表从大到小降序不可以省略。 当一条select语句出现了where 和order by 语法select * from 表名 where 条件 order by 字段1,字段2;
-- 查询所有学生记录按age年龄从大到小排序年龄相同时再按studentNo 学号从小到大排序
select * from students order by age desc, studentNo;-- 查询所有男学生记录按class班级从小到大排序班级相同时再按studentNo 学号再按学号从大到小排序
select * from students where sex男 order by class,studentNo desc;六、聚合函数 注意: 聚合函数不能用到 where后面的条件里。 聚合函数不能与普通字段同时出现在查询结果中 1. count 总记录数
count求select返回的记录总数 count(字段名)
-- 查询学生总数(查询stuents表有多少记录)
select count(*) from students;-- 查询女同学数量
select count(*) from students where sex 女;-- 查询过滤相同性别后的总数
select count(distinct sex) from students;2. max/min 最大/小值
max(字段名) min(字段名)
-- 查询最大年龄
select max(age) from students;-- 查询女同学最大的年龄
select max(age) from students where sex 女;select min(age) from students;3. sum 求和
sum(字段名)
-- 查询女同学的年龄总和
select sum(age) from students where sex 女;4. avg 平均值
avg(字段名)
-- 查询女同学的平均年龄
select avg(age) from students where sex 女;avg的字段中如果有null值这条null数据不参与计算平均值 七、分组
1. 分组 group by
按照字段分组。表示此字段相同的数据会被放到一个组中; 分组的目的是配合聚合函数聚合函数会对每一组的数据分别进行统计; 语法: select 字段1,字段2,聚台函数... from 表名 group by 字段1,字段2... select * from 表名 where 条件 group by 字段 order by 字段; group by 就是配合聚合函数使用的不然没有意义 -- 查询 男女同学的数量
select sex,count(*) from students group by sex;-- 分别查询1班,不同性别同学的数量
select sex,count(*) from students where class1班 group by sex;小练习
统计各个班级学生总数、平均年龄、最大年龄、最小年龄。但不统计3班统计结果按班级名称从大到小排序
select class,count(*) 总数,avg(age),max(age),min(age) from students where
class!3班 group by class order by class desc;2. 分组后筛选 having having 总是出现在group by语句之后。 having 后面可以使用聚合函数。 语法 select字段1,字段2,聚合... from 表名 group by 字段1,字段2,字段3...having 字段1,...聚合...
-- 用where查询男生总数
-- where先筛选复合条件的记录,然后在聚合统计
select count(*) from students where sex男-- 用having查询男生总数
-- having先分组聚合统计,在统计的结果中筛选
select count(*) from students group by sex having sex男;having配合聚合函数的使用
-- 求班级人数大于3人的班级名字
select class from students group by class having count(*) 3;having和where筛选的区别
where是对表的原始数据进行筛选。 having是对group by之后已经分过组的数据进行筛选。 having可以使用聚合函数where不能用聚合函数
八、数据分页
1. limit 显示指定的记录数
语法select * from表名where条件group by字段order by字段limit start, count limit总是出现在select语句的最后 start代表开始行号行号从0开始编号 count代表要显示多少行 省略start,默认从0开始从第一行开始
-- 查询前三行记录
select * from students limit 0,3;
select * from students limit 3;-- 查询从第4条记录开始的三行记录
select * from students limit 3,3;当有where或者group by或者order by limit总是出现在最后
-- 查询年龄最大同学的name
select name from students order by age desc limit 1;-- 查询年龄最小女同学的name
select name from students where sex女 order by age limit 1;2. 数据分页显示
m 每页显示多少条记录 n 第n页 把计算结果写到limit后面imit(n-1)* m, m
-- 每页显示4条记录第3页的结果
select * from students limit 8,4-- 每页显示4条记录第2页的结果
select * from students limit 4,43. 求总页数
已知每页记录数,求一张表需要几页显示完 , 。求总页数 。总页数/每页的记录数 。如果结果是整数,那么就是总页数如果结果有小数,那么就在结果的整数上1
-- 每页显示5条记录,分别多条select显示每页的记录
select * from students limit 5;
select * from students limit 5,5;
select * from students limit 10,5;九、多表链接查询
写SQL三步法
搭框架 基本的select语句框架搭建起来如果有多表把相应的多表也联合进来。看条件 决定where后面的具体条件显示的字段 select后面到底要显示什么字段
1.内连接
把两张表相同的地方查询出来 内链接最重要的是找对两张表要关联的字段 语法1select * from 表1 inner join 表2 on 表1.字段表2.字段; 语法2select * from 表1,表2 where 表1.字段表2.字段;隐式内连接
-- students表与socres内连接,只显示name,课程号,成绩
select name 姓名,courseNo 课程号,score 成绩
from students stu
inner join scores sc
on stu.studentNo sc.studentNo;带有 where条件的内连接 语法select * from 表1 inner join 表2 on 表1.字段表2.字段 where 条件;
-- 查询王昭君,并且成绩小于90 的信息要求只显示姓名、课程号、成绩
select name,courseNo,score from students stu
inner join scores sc on stu.studentNo sc.studentNo
where name王昭君 and score 90;多表内链接
-- 三张表的链接
select * from students stu
inner join scores sc
on stu.studentNo sc.studentNo
inner join courses cs
on sc.courseNocs.courseNo;-- 查询所有学生的 linux课程成绩要求只显示姓名、成绩、课程名
select name,score,coursename from students stu
inner join scores sc
on stu.studentNo sc.studentNo
inner join courses cs
on sc.courseNocs.courseNo
where coursenamelinux;order by内连接
-- 查询成绩最高的男生信息要求显示姓名、课程名、成绩
select name,score,coursename from students stu
inner join scores sc
on stu.studentNo sc.studentNo
inner join courses cs
on sc.courseNocs.courseNo
where sex男
order by score desc limit 1;2.左连接
包括了内连接,同时还查询左表特有的内容 不存在的数据使用null填充 语法1select * from 表1 left join 表2 on 表1.字段表2.字段;
3.右链接
包括了内连接,同时还查询右表特有的内容 不存在的数据使用null填充 语法1select * from 表1 right join 表2 on 表1.字段表2.字段;
4. 自关联
自关联是同一张表做连接查询 自关联下,一定找到同一张表可关连的不同字段。
-- 查询省的个数
select count(*) from areas where pid is null;-- 查询 广东省有多少个市
select * from areas a1 INNER JOIN areas a2 on a1.ida2.pid
WHERE a1.name广东省;5. 子查询
子查询是嵌套到主查询里面的 子查询做为主查询的数据源或者条件 子查询是独立可以单独运行的查询语句 主查询不能独立独立运行,依赖子查询的结果
-- 查询 年龄比平均年龄大的所有学生
select * from students where age (select avg(age) from students);表级子查询
-- 查询所有女生的信息和成绩
-- 子查询
select * from (select * from students where sex女) stu
inner join scores sc on stu.studentNo sc.studentNo-- 内连接
select * from students stu inner join scores sc
on stu.studentNo sc.studentNo
where sex 女;6. 练习
表
-- 1.1列出男职工的总数和女职工总数
select count(*) from employees group by sex;-- 1.2列出非党员职工的总数
select count(*) 总数 from employees where politicalstatus!党员;-- 1.3列出所有职工工号姓名以及所在部门名称
select employees.deptid,employees.empname,departments.deptname from employees
inner join departments on employees.deptiddepartments.deptid;-- 1.4列出所有职工工号姓名和对应工资
select employees.deptid,employees.empname,salary.salary from employees
inner join salary on employees.empidsalary.empid;-- 1.5列出领导岗的姓名以及所在部门名称
select employees.empname,departments.deptname from employees
inner join departments on employees.deptiddepartments.deptid
where employees.leader is null;-- 1.6列出职工总人数大于4的部门号和总人数
select count(*) 总人数,departments.deptid from employees
inner join departments on employees.deptiddepartments.deptid
group by employees.deptid
having count(*) 4;-- 1.7列出职工总人数大于4的部门号和部门名称
select count(*) 总人数,departments.deptname from employees
inner join departments on employees.deptiddepartments.deptid
group by employees.deptid
having count(*) 4;-- 1.8列出开发部和测试部的职工号姓名
select employees.empname,departments.deptid from employees
inner join departments on employees.deptiddepartments.deptid
where departments.deptname in(开发部,测试部);-- 1.9列出市场部所有女职工的姓名和政治面貌
select e.empname,d.deptid from employees e
inner join departments d on e.deptidd.deptid
where d.deptname市场部 and e.sex女;-- 1.10显示所有职工姓名和工资包括没有工资的职工姓名
select e.empname,s.salary from employees e
left join salary s on e.empids.empid;-- 1.11求不姓孙的所有职工工资总和
select sum(salary) from employees e
inner join salary s on e.empids.empid
where not e.empname like 孙%;十、MySQL 内置函数 内置函数可以用在 where条件后面聚合函数一定不可以 1. 字符串函数
1. 拼接字符串 concat
concat(参数1,参数2,参数3,参数n) 参数可以是数字也可以是字符串 把所有的参数连接成一个完整的字符串
select concat(11,sj21,000) -- 11sj210002. 字符串长度 length
注意一个utf8格式的汉字,length返回3
select length(sj21000) -- 7
select length(我是猪猪) -- 12-- 查询表students 中name长度等于9 (三个utf8格式的汉字)的学生信息
select * from students where length(name) 9;3. 截取字符串
汉字、字母不区分
left(str,n) 从左截取 n个字符
select left(是猪猪ooo,4) -- 是猪猪oright(str,n) 从右截取 n个字符
select right(是猪猪ooo,4) -- 猪ooosubstring(str,star,n) 从star截取 n个字符
select substring(是猪猪ooo,2,3) -- 猪猪o练习
-- 截取students 表中所有学生的姓
select left(name,1) from students;
select substring(name,1,1) from students;-- 查询students 表的card 字段截取出生年月日显示李白的生日
select name,substring(card,7,8) from students where name李白;-- 查询students 表的所有学生信息按生日从大到小排序
select * from students order by substring(card,7,8); 4. 去空格
ltrim(str) 去除左边空格rtrim(str) 去除右边空格trim(str) 去除两边空格
select ltrim( 是猪猪ooo )
select rtrim( 是猪猪ooo )
select trim( 是猪猪ooo ) 2. 数学函数
1. 四舍五入 round
round(n,d) n表示原数d表示小数位置默认为0
-- 四舍五入保留整数位
select round(1.658) -- 2
-- 四舍五入保留小数点后2位
select round(1.658,2) -- 1.66-- 查询students表中学生的平均年龄并四舍五入
select round(avg(age)) from students;2. 随机数 rand
round(); 每次运行会产生一个从0-1之间的浮点数 经常用rand进行随机排序: order by rand()
select rand();-- 从学生表中随机抽出一个学生
select name from students order by rand() limit 1; 3. 日期、时间函数
-- current date返回系统日期
select current_date();-- current time返回系统时间
select current_time();-- 返回系统日期与时间
select now();-- 插入当前时间
insert into a values(1,now())十一、了解
1. 视图
视图就是对select语句的封装 视图可以理解为一张只读的表针对视图只能用select,不能用delete和update
-- 创建一个视图,查询所有男生信息
create VIEW stu_male as
select * from students where sex男;-- 使用视图
select * from stu_male INNER JOIN scores
on stu_male.studentNo scores.studentNo;-- 删除视图
drop VIEW stu_male;
drop VIEW if EXISTS stu_male;2. 事务
事务广泛的运用于订单系统、银行系统等多种场景;
事务是多条更改数据操作sql语句集合 一个集合数据有一致性,要么就都失败要么就都成功
begin --开始事务rollback --回滚事务,放弃对表的修改commit --提交事务,对表的修改生效 没有写begin代表没有事务没有事务的表操作都是实时生效。 如果只写了begin,没有rollback,也没有commit,系统退出,结果是rollback
回滚事务操作
-- 开启事务
-- 删除students 表中studentNo 为001 的记录
-- 同时删除scores 表中studentNo 为001 的记录
-- 回滚事务两个表的删除同时放弃-- 开始事务
begin;
delete from students where studentNo001;
delete from scores where studentNo001;
-- 回滚事务放弃更改
rollback;select * from students;
select * from scores;提交事务
-- 开启事务
-- 删除students 表中studentNo 为001 的记录
-- 同时删除scores 表中studentNo 为001 的记录
-- 提交事务两个表的删除同时生效-- 开始事务
begin;
delete from students where studentNo001;
delete from scores where studentNo001;
-- 提交事务一旦提交两个删除操作同时生效
commit;select * from students;
select * from scores;3. 索引
index 给表建立索引,目的是加快select查询的速度 如果一个表记录很少,几十条或者几百条不用索引 表的记录特别多,如果没有索引I,select语句效率会非常低
创建索引
语法create index 索引名称 on 表名(字段名称(长度);
如果指定字段是字符串,需要指定长度,建议长度与定义字段时的长度一致; 字段类型如果不是字符串 可以不填写长度部分。
-- 例1:为表students的age字段创建索引名为age_ index
create index age_index on students(age);
-- 例2:为表students的name字段创建索引名为name_ index
create index name_index on students(name(10);-- 查询表中age等于30的学生
-- 这里会自动调用age_index
select * from students where age30;
-- 不会调用任何索引因为sex字段没有索引
select * from students where sex女;查看索引
语法show index from 表名;
show index from students;删除索引
语法drop index 索引名 on 表名;
drop index age_index on students;索引优缺点
提高select的查询速度 降低update,delete和insert语句的执行速度 项目中80%以上是select,所以index必须的 在实际工作中如果涉及到大量的数据修改操作,修改之前可以把索弓|删除修改完成后再把索引建立起来。
十二、基于命令行的mysql
mysql -h mysql的服务器的地址 -u 用户名 -p 如果是使用本机的mysql: mysql -u root -p
cmd登录之后的命令
show databases 显示系统所有的数据库;use 数据库名:使用指定的一个数据库 使用mydb数据库:use mydbshow tables 查看指定数据库有多少表 如果命令行默认字符集与数据库默认字符集不同 在windows默认字符集是gbk: set names gbk; 告诉mysql,客户端用的字符集是gbk
选择了数据库以后就可以查看数据库有多少表
在命令行中每条sgl语句用;结尾 可以通过desc表名查看一个表的字段结构:
desc students查看students每个字段的定义
在命令行下创建和删除数据库
create database 数据库名 default charset 字符集
--创建一个数据库mytest 默认字符集为utf8
create database mytest default charset utf8;
-- 删除数据库mytest
drop database mytest
drop database if exists mytest;