MySQL数据库使用命令总结



'''

eg:事例

ex:说明

'''



一:基本命令
1.登陆数据库:mysql -uroot -p
2.查看版本:select version();
3.查看当前时间:select now();
4.远程连接:
mysql -h ip地址 -u 用户名 -p


二:数据库操作
db_name:数据库名字
show databases; 查看所有的数据库
1.创建数据库: 
create database db_name default character set utf8 collate utf8_general_ci;


character set utf8 :设置字符串为utf8
utf8_bin:区分大小写;
utf8_general_cs:大小写敏感;
utf8_general_ci:大小写不敏感


2.删除数据库:
drop database db_name


3.切换数据库:
use db_name;

4.查看当前选择的数据库:
select database();


三:表的操作
table_name:表名
td_name:列名


1.查看数据库中所有的表:
show tables; 查看数据库中所有的表


2.创建表:
create table if not exists table_name(id int not null auto_increment primary key,name varchar(255),age varchar(255));
创建了一个id name age 的表  id 整形 非空 自增长 主键。name和age 可变字符型


eg:
create table if not exists table_name( id int not null auto_increment primary key,name varchar(20) not null,age int not null,gender bit default 1,address varchar(20),isDelete bit default 0);
default  :默认值
isDelete :默认为0 未被删除,是否删除的标记


3.查看表字段结构:
desc table_name;


4.删除表:
drop table table_name; 


5.产看建表语句
show create table table_name; 
查看创建表时候的主要语句。


6.重命名表名
rename table old_table_name to new_table_name;
   或者 alter table 旧表名 rename 新表名;


7.修改表结构:
alter table table_name modify|add |change|drop 列名 类型属性;
一般不修改表结构,创建的时候就应该确定表结构,如果不确定日后是否修改 可以预留一些空字段。


四:数据操作
数据操作 通常是有条件的


1.增:
a.全列插入:
insert into table_name(...);
eg:insert into table_name values(0,"char",int,1);
ex: 
0:主键列是自动增长,但是在全列插入时需要占位,通常使用0占位,插入成功以后以自动增加的实际数据为准,未必为0
char:字符串 加引号
int:直接写
b.缺省插入:
insert into table_name(列1,列2,...) values(值1,值2,...);
ex:插入的时候 表中的字段名和值 一一对应插入

c.同时插入多条数据
insert into table_name values(...),(...)(...)...;
ex:以逗号把值隔开,全列和缺省 也可以用逗号隔开 实现同时插入多条数


2.删:
delete from table_name;
ex:会删除整个表的数据,慎用。
delete from table_name where id=1 or|and ...;
ex:可以用where条件语句进行筛选删除,where 列1=值1,列2=值2,...。

3.改: 
update table_name set 列1=值1,列2=值2,...
ex:整个列1 和 列2 都会被修改掉,慎用
update table_name set 列1=值1  where id=7;
ex:可以用where条件语句进行筛选修改,where 列1=值1,列2=值2,...。


4.查:
select * from table_name;
ex: 查询table_name 中的全部数据
selec * from table_name where id=1 or|and ...;
ex :查询同上




五:查
这是主要操作。


1.基本语法:
select * from table_name;
ex: a、from 关键字后面是表名,表示数据来源于 table_name 这张表
   b、select 后面写表中的列名,如果是 * 表示在结果中集中显示表中的所有列
   c、在select后面的列名部分,可以使用 as 为列名起别名。这个别名显示在结果集中    d、如果要查询多个列 中间用逗号 ,分隔
eg:select name,age from table_name;
   select name as a,age from table_name;
name在结果集中 以 a 显示
name和age为表中字段或数据。




2.消除重复行:
在select 后面,列的前面 使用distinct可以消除重复的行
eg: select distinct name from table_name;
显示的时候 把重复的行内容去掉。 (去重)


3.条件查询:
a.语法:
select * from table_name where 条件 [and,or..]


b.比较运算符:
>,<,=,>=,<=,  不等于:!= <>,(<>:和python2中的<>意思一样)
eg:select * from table_name where id>7;


c.逻辑运算符:
and  or  not 
eg: select * from table_name where id>7 and td_name=0;


d.模糊查询:
like
%: 表示任意多个字符
_:表示一个字符
select * from table_name where td_name like "%思%"; 匹配:(王思聪,大王思,有思就可以)
select * from table_name where td_name like '_思';匹配:(心思,相思)不匹配:(思想,单相思) _: 一个任何字符。

e.范围查询:
in :可表示在一个非连续的范围内
   eg: select * from table_name where id in (1,3,5);
   ex:  查询 id 的值在 1 3 5 中的的数据
not in:和 in 相反,除了 1 3 5 中的
between...and...:表示在一个连续的区间内
   eg: select * from table_name where id between 6 and 8;
   ex:  查询 id 的值在[6,8]之间的值,包括6,8

f.空判断:
null与"" 是不同的,null表示无数据
is null:判断空
is not null: 判断非空
   eg: select * from table_name where td_name is null|is not null;


g.优先级:
小括号,not,比较运算符,逻辑运算符
and 比 or的优先级高,如果同时使用并希望先选or,需要结合括号使用


4.聚合:
为了快速得到统计的数,提供了5个聚合函数。
a. count(*): 表示计算总行数, 括号中可以写 列名
select count(*) from table_name;
b. max(列):表示求此列的最大值
select max(td_name) from table_name;
c. min(列):表示求此列的最小值
select min(td_name) from table_name;
d. sum(列):表示求此列的和
select sum(td_name) from table_name;
e. avg(列):表示求此列的平均值
select avg(td_name) from table_name;

5.分组:
按照字段分组,表示此字段相同的数据会被放在一个结果集中,分组后只能查询出相同数据列。对于有差异的数据列无法显示在结果集中,可以对分组后的数据进行统计,做聚合运算
eg: select 列1,列2,聚合... from table_name group by 列1,列2,...;
ex: 查询男女生总数, select gender,count(*) from table_name group by gender;  把男女生 分组后 统计男女的人数


eg: select 列1,列2,聚合... from table_name group by 列1,列2,...having 条件;
having:是对group by 进行筛选,在结果集中进行筛选
where 是对 from 后制定的表进行筛选,属于对元素数据的筛选


6.排序:
默认升序
order by asc:升序
dorder by esc:降序
select * from table_name order by td_name1 asc|desc,td_name2 asc|desc
如果td_name1 的值相同,该值按照td_name2再排


7.分页:
select * from table_name limit start count ;
ex: 从start 开始,看 count 条数据
eg: select * from table_name limit 0,3;
ex: 从0 开始 看3 条数据


六:关联
1.创建一个表
create table table_name_outer(id int not null auto_increment primary key,name varchar(255) not null ,stuNum int not null);

create table table_name_inner(id int not null auto_increment primary key,name varchar(255) not null ,gender bit default 1,classid int not null,foreign key(classid) references table_name_outer(id));


把inner的classid 设为 outer的外键。
foreign key(classid) references table_name_outer(id));

插入数据:
insert into table_name_outer values(0,"python01",55),(0,"python02",45),(0,"python03",50),(0,"python04",80);


insert into table_name_inner values(0,"tom",1,1);


select table_name_inner.name,table_name_outer.name from table_name_outer inner join table_name_inner on table_name_outer.id=table_name_outer.classid;

你可能感兴趣的:(MySQL数据库使用命令总结)