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

mysql -uroot -p

Mysql实例个数 mysql数据库实例名_MySQL案例


##退出:

exit

Mysql实例个数 mysql数据库实例名_MySQL案例_02


##创建数据库和字符集:

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

Mysql实例个数 mysql数据库实例名_Mysql实例个数_03

还有几种创建数据库方法:
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;

Mysql实例个数 mysql数据库实例名_Mysql实例个数_04


##展示创建的数据库:

show databases;

Mysql实例个数 mysql数据库实例名_MySQL_05


##切换数据库:

use 库名;

##切换数据库案例:

use students_database;

Mysql实例个数 mysql数据库实例名_表名_06

##展示所有表:

show tables;

##案例:

Mysql实例个数 mysql数据库实例名_表名_07


##展示创建表的语句:

show create table 表名;

##案例:

Mysql实例个数 mysql数据库实例名_表名_08


##查看表结构:

desc 表名;

##案例:

Mysql实例个数 mysql数据库实例名_字段_09


##创建一个表:

创建一个 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实例个数 mysql数据库实例名_MySQL案例_10


##从表中插入值:

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

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

##多横插入案例:

Mysql实例个数 mysql数据库实例名_Mysql实例个数_11


##查询列表所有内容:

select * from 表名;

##查询列表案例:

Mysql实例个数 mysql数据库实例名_MySQL案例_12


##在表中添加新字段:

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

##添加字段案例:

Mysql实例个数 mysql数据库实例名_MySQL_13


##添加字段内的值:

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

##添加字段值的案例:

Mysql实例个数 mysql数据库实例名_表名_14


##添加多个字段值:

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

##添加多个字段值案例:

Mysql实例个数 mysql数据库实例名_MySQL_15


Mysql实例个数 mysql数据库实例名_Mysql实例个数_16

##修改字段中的类型:

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

##修改字段类型案例:

Mysql实例个数 mysql数据库实例名_Mysql实例个数_17


##删除表里的字段:

alter table 表名 drop column 字段名;

##删除表里字段案例:

Mysql实例个数 mysql数据库实例名_字段_18


##检索字段名并升序排列:

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

##检索字段名并升序排列案例:

Mysql实例个数 mysql数据库实例名_字段_19


##检索字段名并绛序排列:

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

Mysql实例个数 mysql数据库实例名_Mysql实例个数_20


##检索字段名并绛序只允许显示3条:

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

##检索字段名并绛序只允许显示3条案例:

Mysql实例个数 mysql数据库实例名_Mysql实例个数_21


##检索案例表里条件age字段为21或24的所有内容按age升序排列:

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

Mysql实例个数 mysql数据库实例名_表名_22


##检索案例表里条件address字段为北京或天津并age字段小于等于23的所有信息并按升序排列:

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

Mysql实例个数 mysql数据库实例名_字段_23


##检索案例表里条件age字段不是21和23的name,age,address信息并绛序排列:

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

Mysql实例个数 mysql数据库实例名_Mysql实例个数_24


##检索案例条件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实例个数 mysql数据库实例名_字段_25


##检索案例age不等于23的所有信息并案绛序排列:

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

Mysql实例个数 mysql数据库实例名_MySQL案例_26


##检索案例表里搜索条件name字段为张…的所有内容:

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

Mysql实例个数 mysql数据库实例名_MySQL_27

Mysql实例个数 mysql数据库实例名_字段_28


##检索案例从表里搜索name字段为…葛…的所有信息:

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

Mysql实例个数 mysql数据库实例名_表名_29


##检索案例表里email字段带有…qq.com的显示name,email所有内容:

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

Mysql实例个数 mysql数据库实例名_MySQL_30


##检索案例表里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实例个数 mysql数据库实例名_MySQL案例_31


##检索案例表里email字段以4到9开头的显示name,email所有内容:

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

Mysql实例个数 mysql数据库实例名_MySQL_32


##检索案例表里email字段以8849开头的显示name,email所有内容:

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

Mysql实例个数 mysql数据库实例名_Mysql实例个数_33


##检索案例表里name字段以刘开头和以备结尾的显示name,email所有内容:

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

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

Mysql实例个数 mysql数据库实例名_Mysql实例个数_34


##检索案例表里总人数的数量,最小年龄,最大年龄,年龄总和,平均值并起别名:

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

Mysql实例个数 mysql数据库实例名_MySQL_35

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

select * from students order by age desc limit 1;

Mysql实例个数 mysql数据库实例名_字段_36


##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实例个数 mysql数据库实例名_Mysql实例个数_37


##检索年龄最大的前7位同学的姓名和年龄:

Mysql实例个数 mysql数据库实例名_MySQL_38


##检索出生日是8月份的学生同学:

Mysql实例个数 mysql数据库实例名_表名_39


##检索出生日是在上半年的同学并按照月份排序:

Mysql实例个数 mysql数据库实例名_MySQL_40


##检索全班同学的姓:

Mysql实例个数 mysql数据库实例名_MySQL案例_41


##使用正则表达式检索出名字字段是以a-c开头的同学:

Mysql实例个数 mysql数据库实例名_Mysql实例个数_42


##使用like和通配符找到姓z并且名只有一个字符的的同学:

Mysql实例个数 mysql数据库实例名_MySQL_43


##使用正则表达式检索出邮箱字段中包含“_”的同学:

Mysql实例个数 mysql数据库实例名_表名_44


##检索出最后一位入学的同学:

Mysql实例个数 mysql数据库实例名_MySQL_45


##检索本班同学的年龄并去重:

Mysql实例个数 mysql数据库实例名_MySQL案例_46


##检索出生日是周四的同学:

Mysql实例个数 mysql数据库实例名_字段_47


##检索出年龄不是20岁的并且不是天蝎座(出生日期为10月24日-11月22日)的男生:

Mysql实例个数 mysql数据库实例名_MySQL_48

##检索表里年龄有几个并查看内容:

Mysql实例个数 mysql数据库实例名_MySQL案例_49


##检索表里年龄有几个年龄等于25并查看内容:

Mysql实例个数 mysql数据库实例名_MySQL_50


##创建scores表并将students的表stu_id的主键名,将scores表里的stu_id设为外键与students表里的stu_id相连并插入值:

Mysql实例个数 mysql数据库实例名_表名_51


Mysql实例个数 mysql数据库实例名_MySQL案例_52


##两表之间子查询,在students查询name名在stu_id的外键条件是scores表中的stu_id条件是score小于60:

Mysql实例个数 mysql数据库实例名_表名_53


##两个表内连接查询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实例个数 mysql数据库实例名_MySQL_54


Mysql实例个数 mysql数据库实例名_字段_55


##两个表内连接查询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实例个数 mysql数据库实例名_表名_56


##自连接查询案例:

查询因为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实例个数 mysql数据库实例名_Mysql实例个数_57


##将字段添加唯一约束:

alter table nn modify score float not null unique;

Mysql实例个数 mysql数据库实例名_MySQL案例_58


Mysql实例个数 mysql数据库实例名_MySQL案例_59


##将字段删除唯一约束:

alter table nn drop index score;

Mysql实例个数 mysql数据库实例名_Mysql实例个数_60


##删除主键:

Mysql实例个数 mysql数据库实例名_MySQL案例_61


##添加主键:

Mysql实例个数 mysql数据库实例名_表名_62


##子连接查询案例:

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

Mysql实例个数 mysql数据库实例名_Mysql实例个数_63


##右连接查询:

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

Mysql实例个数 mysql数据库实例名_Mysql实例个数_64


##左连接查询:

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

Mysql实例个数 mysql数据库实例名_字段_65


##内连接查询:

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

Mysql实例个数 mysql数据库实例名_Mysql实例个数_66


##内连接查询条件小于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实例个数 mysql数据库实例名_MySQL_67

##左连接查询条件小于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实例个数 mysql数据库实例名_MySQL_68


##联合查询案例:

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实例个数 mysql数据库实例名_表名_69


##联合查询案例:

在查询内容多的时候为了不让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实例个数 mysql数据库实例名_字段_70


##利用view视图制作内容使用 or replace可以更新原有表请看实验:

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

Mysql实例个数 mysql数据库实例名_MySQL案例_71


##view练习案例:

Mysql实例个数 mysql数据库实例名_MySQL_72


##view两个表连接查询小于50的内容:

Mysql实例个数 mysql数据库实例名_Mysql实例个数_73

查询数据库所有表注释
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';

#待续!!