复习一下数据库的命令 (想到啥写啥?)
今天天气不错,晴,下午有个面试,好像是考数据库?,先看着
- 从终端进入数据库:mysql - u root -p
- 退出 exit
- 查看数据库的状态:service iptables status;
即时生效,即使失效: service iptables start/stop; - 权限刷新 :flush privileges
对权限进行了操作,都要进行刷新。对配置文件进行了操作,都要去重启
-
连接数据库:ssh -p22 账户名@ip地址
-
查看本机ip地址 :ifconfig
-
查看当前数据库版本 :
已登录:select vision();
未登录:mysql -vision; -
显示所有数据库:show databases
-
选择进去哪个库: use 数据库名
-
显示所有表:show tables (要先选择库)
-
不离开当前数据库查看另一个数据库的表名 :show tables from 数据库名
-
查看表结构 :desc 表名
接下来是 接下来就是数据库里的操作了 ,基础的增删改查
不同类型的数据放在一个表的缺点:字段过多 难以维护 表数据庞大 数据冗余 重复数据多
解决方法 :设计表的时候,两个表维持一个关系即可
- 创建数据库 :create database 数据库名称
- 创建表:create table 表名
create table 表名(
id int(10) not null primary key auto_increment,
name varchar(5),
sex varchar(5),
age int(10),
city varchar(10)
)default charset=utf8;
gdk: 1个汉字=2个字节 utf-8 1个汉字= 3个字节
添加数据:
insert into 表名(字段名1,字段名2,字段名3...) values (值1,值2,值3...)
- 为指定字段添加数据: insert into 表名(字段名1,字段名2) values (值1,值2)
其他未指定的字段为默认值
- 同时添加多个数据 :insert into 表名 (字段名1,字段名2)values (值1,值2),(值1,值2),(值1,值2)
删除数据:
delete from 表名 where id=111
delect 只删除数据,不会删除表和数据库
delect from 表名
drop 删除表急所有数据
drop table 表名(restrict/cascade)
restrict : 欲删除的基本表不能被其他约束所引用(如check,foreign key 等约束),不能有视图,不能有触发器,不能有存储过程或函数等。如果存在,则此表不能被删除
cascade:没有删除条件,在删除基本表时,相关的依赖对象,例如试图,都被一并删除
修改数据:
update student set id=100, Sname=‘ke’ where id=200
修改数据我就知道这一个…?
查找数据:
写关联条件时,通常都是从联系更多的引用表来开始
查询语句结合: select…from…where…and…group by… having…order by…limit .
- 集合函数:sum() , aux() , count() , max() , min() , avg(),
如果有过滤条件后面要不用where 而是用having
- 去重:select distinct 字段名 from 表名
- 分页:select 字段名 from 表名 limit m,n
m:索引值 从m开始 ;n:每页取多少 ,M=n*(页数-1) - 查询 IN的用法
使用场景 :查询到时候,条件字段的只存在于某个数据集
示例 :
查询用户id为1001,1002,1003的用户信息
select * from number where id in (1001,1002,1003);
不存在:not in - 模糊查询 select 字段名 from 表名 like “ke%”
占位符
%代表的任意长度的字符串
_代表的是单个字符长度的字符串 - order by 默认的是升序 ase(升序);desc(降序)
索引
创建索引
create unique index 索引名 on 表名(数据)
修改索引名
alter index < 旧索引名> rename to <新索引名>;
删除索引
drop index 索引名
未完待续?