常用 MySQL 案例!!

#UBUNTU 进入mysql数据库命令:
##进入:

mysql -uroot -p

常用 MySQL 案例!!_第1张图片
##退出:

exit

这里写图片描述
##创建数据库和字符集:

create database 库名 character set=utf8;
例: create database students_database character set=utf8;

这里写图片描述

还有几种创建数据库方法:
create schema 库名 character set=utf8;

##关于数据库语句:


如果不存在就创建数据库,存在就忽略:
create database if not exists 库名;

展示数据库名以'db'开头的数据库:
show databases like 'db%';

修改数据库字符集:
alter database 库名 character set=utf8;

删除数据库:
drop database 库名;

删除数据库如果有就删除,没有就忽略:
drop database if not exists 库名;

查询创建数据库字符集:
show create database 库名;

查询数据全局参数:
show variables \G;

查询数据库默认引擎:
show variables like 'default%';

查询数据存储引擎:
show engines;


##修改字符集案例:

alter database students_database character set=gbk;

这里写图片描述
##展示创建的数据库:

show databases;

常用 MySQL 案例!!_第2张图片
##切换数据库:

use 库名;

##切换数据库案例:

use students_database;

这里写图片描述

##展示所有表:

show tables;

##案例:
常用 MySQL 案例!!_第3张图片
##展示创建表的语句:

show create table 表名;

##案例:
常用 MySQL 案例!!_第4张图片
##查看表结构:

desc 表名;

##案例:
常用 MySQL 案例!!_第5张图片
##创建一个表:

创建一个 students表 字段要求 id,name,email,address默认为北京
create table 表名(
id int auto_increment not null primary key comment'ID',
name varchar(30) not null comment'名字',
email varchar(50) not null comment'邮箱',
address varchar(100) null default'北京' comment'地址'
);

删除表:
drop table 表名;

##案例:
常用 MySQL 案例!!_第6张图片
##从表中插入值:

insert into 表名(字段名) values(对应的值);

多横插入:
insert into 表名(字段名) values(对应的值),(对应的值),(对应的值);

##多横插入案例:
这里写图片描述
##查询列表所有内容:

select * from 表名;

##查询列表案例:

常用 MySQL 案例!!_第7张图片
##在表中添加新字段:

alter table 表名 add column 新字段名 类型 是否为空;

##添加字段案例:
常用 MySQL 案例!!_第8张图片
##添加字段内的值:

update 表名 set 字段名=值名 where条件: 主键id=值id;

##添加字段值的案例:
常用 MySQL 案例!!_第9张图片
##添加多个字段值:

update 表名 set 字段名=字段值,字段名=字段值 where条件: 主键id=id;

##添加多个字段值案例:
常用 MySQL 案例!!_第10张图片
常用 MySQL 案例!!_第11张图片

##修改字段中的类型:

alter table 表名 modify 字段名 新字段类型 是否为空;

##修改字段类型案例:
常用 MySQL 案例!!_第12张图片
##删除表里的字段:

alter table 表名 drop column 字段名;

##删除表里字段案例:

常用 MySQL 案例!!_第13张图片
##检索字段名并升序排列:

select 字段名,字段名 from 表名 order by 字段名;

##检索字段名并升序排列案例:
常用 MySQL 案例!!_第14张图片
##检索字段名并绛序排列:

select 字段名,字段名 from 表名 order by 字段名 desc;

常用 MySQL 案例!!_第15张图片
##检索字段名并绛序只允许显示3条:

select 字段名,字段名 from 表名 order by 字段名 desc limit3;

##检索字段名并绛序只允许显示3条案例:
常用 MySQL 案例!!_第16张图片
##检索案例表里条件age字段为21或24的所有内容按age升序排列:

select * from students where age='21' or age='24' order by age;

常用 MySQL 案例!!_第17张图片
##检索案例表里条件address字段为北京或天津并age字段小于等于23的所有信息并按升序排列:

select * from students where (address='北京' or address='天津') and age <= '23' order by age;

常用 MySQL 案例!!_第18张图片
##检索案例表里条件age字段不是21和23的name,age,address信息并绛序排列:

select name,age,address from students where age not in('21','23') order by age desc;

常用 MySQL 案例!!_第19张图片
##检索案例条件birthday字段为’1800-1-1’和’2001-1-1’的name,birthday的内容按升序排列:

select name,birthday from students where birthday between '1800-1-1'and'2001-1-1' order by birthday;

常用 MySQL 案例!!_第20张图片
##检索案例age不等于23的所有信息并案绛序排列:

两种方法:
select * from students where age != '23' order by age desc;
select * from students where age <> '23' order by age desc;

常用 MySQL 案例!!_第21张图片
##检索案例表里搜索条件name字段为张…的所有内容:

两种方法:
select * from students where name like '张%';
select * from students where name like '张_';

常用 MySQL 案例!!_第22张图片

常用 MySQL 案例!!_第23张图片
##检索案例从表里搜索name字段为…葛…的所有信息:

select * from students where name like '%葛%';
去除左右空格搜索...葛...的所有信息:
select * from students where trim(name) like '_葛_';

常用 MySQL 案例!!_第24张图片
##检索案例表里email字段带有…qq.com的显示name,email所有内容:

select name,email from students where email regexp 'qq.com$';

常用 MySQL 案例!!_第25张图片
##检索案例表里email字段除了…qq.com的显示name,email所有内容:

两种方法:
select name,email from students where email regexp '\w*[^qq].com$';
select name,email from students where email regexp '.*[^qq].com$';

常用 MySQL 案例!!_第26张图片
##检索案例表里email字段以4到9开头的显示name,email所有内容:

select name,email from students where email regexp '^[4-9]';

常用 MySQL 案例!!_第27张图片
##检索案例表里email字段以8849开头的显示name,email所有内容:

select name,email from students where eamil regexp '^8849';

常用 MySQL 案例!!_第28张图片
##检索案例表里name字段以刘开头和以备结尾的显示name,email所有内容:

以刘开头:
select name,email from students where name regexp '[[:<:]]刘';

以备结尾:
select name,email from students where name regexp '备$';

常用 MySQL 案例!!_第29张图片
##检索案例表里总人数的数量,最小年龄,最大年龄,年龄总和,平均值并起别名:

select count(*) as 总人数,min(age) as 最小年龄,max(age) as 最大年龄,sum(age) as 总和,avg(age) as 平均值 from students;

常用 MySQL 案例!!_第30张图片

##检索表里age年龄最大的只需要显示一位的所有信息:

select * from students order by age desc limit 1;

常用 MySQL 案例!!_第31张图片
##mysql数据文本处理函数:

案例:
去掉王..的所有空格:
select * from 表名 where trim(字段名) like '王%';

让字段字母大写:
select upper(字段名) from 表名;

让字段名小写:
select lower(字段名) from 表名;

查询条件长度为2个字符查询abbr_name字段并大写起个别名的内容:
select upper(abbr_name) as 大写 from 表名 where length(abbr_name)=2;

查询条件字段为abbr_name向右数第二匹配wq的字符内容:
select abbr_name from 表名 where right(abbr_name,2)='wq';

从abbr_name的第五个字符开始找,如果找到返回索引,否则返回0:
select name,('l',abbr_name,5) from 表名;

从'fsdsdds'里面第4个字符开始后3个字符取出来包含开始字符 从左往右找:
select substring('fsdsdds',4,3) from 表名;

把表链接到一个框中:
select concat(字段名,字段名) from 表名;

##mysql数据time处理函数:

select curtime(); 获取现在时间 时,分,秒.
select curdate(); 获取现在日期 年,月,日.
select year(now()); 获取现在年份.
select month(now()); 获取现在月份.
select day(now()); 获取现在的日.
select hour(now()); 获取现在的时钟.
select minute(now()); 获取现在的分钟.
select second(now()); 获取现在的秒钟.
select now(); 获取现在的完整时间.
select dayweek(date(now())); 获取现在日期对应的星期.
select time(now()); 获取现在的时间.

#sql语句练习题:
##假设你已经给刚刚创建的students表插入全班同学的信息,现在要求统计来自山西的男同学的平均年龄:
常用 MySQL 案例!!_第32张图片
##检索年龄最大的前7位同学的姓名和年龄:
常用 MySQL 案例!!_第33张图片
##检索出生日是8月份的学生同学:

常用 MySQL 案例!!_第34张图片
##检索出生日是在上半年的同学并按照月份排序:
常用 MySQL 案例!!_第35张图片
##检索全班同学的姓:
常用 MySQL 案例!!_第36张图片
##使用正则表达式检索出名字字段是以a-c开头的同学:
常用 MySQL 案例!!_第37张图片
##使用like和通配符找到姓z并且名只有一个字符的的同学:
常用 MySQL 案例!!_第38张图片
##使用正则表达式检索出邮箱字段中包含“_”的同学:
常用 MySQL 案例!!_第39张图片
##检索出最后一位入学的同学:
常用 MySQL 案例!!_第40张图片
##检索本班同学的年龄并去重:
常用 MySQL 案例!!_第41张图片
##检索出生日是周四的同学:
常用 MySQL 案例!!_第42张图片
##检索出年龄不是20岁的并且不是天蝎座(出生日期为10月24日-11月22日)的男生:
常用 MySQL 案例!!_第43张图片

##检索表里年龄有几个并查看内容:
常用 MySQL 案例!!_第44张图片
##检索表里年龄有几个年龄等于25并查看内容:
常用 MySQL 案例!!_第45张图片
##创建scores表并将students的表stu_id的主键名,将scores表里的stu_id设为外键与students表里的stu_id相连并插入值:
这里写图片描述
常用 MySQL 案例!!_第46张图片
##两表之间子查询,在students查询name名在stu_id的外键条件是scores表中的stu_id条件是score小于60:
常用 MySQL 案例!!_第47张图片
##两个表内连接查询name和score并以绛序排列:

两种方法:
select name,score from 表名 inner join 表名 where 表名.字段主键 = 字段外键
 order by score desc;

select name,score from 表名 inner join 表名 on 表名(字段主键) = 表名(字段外键) 
order by score desc;

常用 MySQL 案例!!_第48张图片
常用 MySQL 案例!!_第49张图片
##两个表内连接查询name和score内容条件score小于60:

两种方法:
select name,score from 表名 inner join 表名 where 表名.字段主键 = 字段外键
 and score < 60;

select name,score from 表名 inner join 表名 on 表名(字段主键) = 表名(字段外键) 
where score < 60;

常用 MySQL 案例!!_第50张图片
##自连接查询案例:

查询因为scores表名变更别名为p1所以id,teacher,stu_id起p1别名,并连接
scores原表名起别名为p2,连接上p1的stu_id和p2的stu_id 条件p2的id等于31
并查询内容:
select p1.id,p1.teacher,p1.stu_id from scores as p1,scores as p2
where p1.stu_id=p2.stu_id and = 31;

把p1的内容放到了p2上这样查询更快些!

常用 MySQL 案例!!_第51张图片
##将字段添加唯一约束:

alter table nn modify score float not null unique;

常用 MySQL 案例!!_第52张图片
常用 MySQL 案例!!_第53张图片
##将字段删除唯一约束:

alter table nn drop index score;

常用 MySQL 案例!!_第54张图片
##删除主键:
常用 MySQL 案例!!_第55张图片
##添加主键:
常用 MySQL 案例!!_第56张图片
##子连接查询案例:

select id,stu_id,teacher,score from scores where stu_id = (select stu_id
 from scores where id = 31);

常用 MySQL 案例!!_第57张图片
##右连接查询:

select peps.name,scores.score from peps right outer join scores 
on peps.s_id = scores.s_id and scores score < 60;

常用 MySQL 案例!!_第58张图片
##左连接查询:

select peps.name,scores.score from peps left outer join scores on 
peps.s_id = scores.s_id and scores.score > 60;

常用 MySQL 案例!!_第59张图片
##内连接查询:

select peps.name,scores.score from peps inner join scores on 
peps.s_id = scores.s_id and scores.score = 89;

常用 MySQL 案例!!_第60张图片
##内连接查询条件小于60并按照绛序排列:

select peps.name,scores.score from peps inner join scores on peps.s_id =
 scores.s_id and scores.score < 60 order by score desc;

常用 MySQL 案例!!_第61张图片

##左连接查询条件小于60并按照绛序排列:

select peps.name,scores.score from peps left outer join scores on 
peps.s_id = scores.s_id and scores.score < 60 order by score desc;

常用 MySQL 案例!!_第62张图片
##联合查询案例:

select abbr_name as 姓名_性别,age as 年龄_学号 from students_1803
where stu_id = 1504359 union select sex,stu_id from students_
1803 where stu_id = 1504359;

常用 MySQL 案例!!_第63张图片
##联合查询案例:

在查询内容多的时候为了不让union去重可以使用 union all:
select abbr_name as 姓名_性别,age as 年龄_学号 from students_1803
where stu_id = 1504359 union all select sex,stu_id from students_
1803 where stu_id = 1504359;

##利用view视图制作内容并查询:

create view info as select concat(abbr_name,'(',age,')','(',native_place,')') as a from students_1803;

常用 MySQL 案例!!_第64张图片
##利用view视图制作内容使用 or replace可以更新原有表请看实验:

create or replace view info as select concat(abbr_name,'(',age,')','(',native_place,')') as a from students_1803;

常用 MySQL 案例!!_第65张图片
##view练习案例:
常用 MySQL 案例!!_第66张图片
##view两个表连接查询小于50的内容:
常用 MySQL 案例!!_第67张图片

查询数据库所有表注释
SELECT TABLE_NAME,TABLE_COMMENT FROM information_schema.TABLES WHERE table_schema='wzkt';
查询所有表注释
SELECT t.TABLE_NAME,t.TABLE_COMMENT,c.COLUMN_NAME,c.COLUMN_TYPE,c.COLUMN_COMMENT 
FROM information_schema.TABLES t,INFORMATION_SCHEMA.Columns c 
WHERE c.TABLE_NAME=t.TABLE_NAME AND t.`TABLE_SCHEMA`='wzkt';

#待续!!

你可能感兴趣的:(MySQL)