数据库常用命令以及理论
数据库
1、数据库:按照一定的数据库结构组织、存储和管理的仓库。按照一定的组织形式和数据之间的联系进行管理和存储
2、DBMS:数据库管理系统,用来管理数据库的一个软件
3、DBMS分类:层次型DBMS、关系型DBMS、网状型DBMS。
关系型分类:
大型的:MS-SQL server、Oracle、DB2
中型的:MySQL
小型的:access
4、SQL:结构化查询语言,用于客户端与数管理系统之间
DML:数据操作语言
DCL:数据控制语言
DDL:数据定义语言
MySQL操作
MySQL由MySQL客户端、MySQL服务器组成
没有用户和密码时:进入:mysql;退出:quit
MySQL服务器配置文件:/etc/my.cnf文件中,添加一行port=33000(端口号,默认3306)
用户管理
创建用户和密码:mysqladmin -u 用户名 password 密码
修改用户密码:mysqladmin -u 用户名 -p旧密码(没有空格) password 新密码
连接MySQL数据库:
本地连接
有用户密码进入:mysql -u 用户名 -p密码(没有空格)
远程连接(需要授权才能进行远程连接)
mysql -h IP地址 -u 用户名 -p密码
查看数据库
show databases ; 复数后边加“s”;命令最后必须加分号
创建数据库
create database 库名;(不建议中文)
删除数据库
drop database 库名;
进入数据库
use 库名;
查看表
show tables;
数据库存放位置 /var/lib/mysql
创建表: create table 表名(字段名1 数据类型,字段名2数据类型,字段名。。。。)
中文加 ` ` 号
Ctrl l 清屏
查看 desc 表名; 查看表
分类
1数值类
2 字符串类
3 日期时间型
数值型分类
整数:int :4B 、 smallint 2B 、 bigint 8B
小数:fioat 单精度浮点型(4字节)m总个数 ,d是小数点
int整数范围:-2147483648------2147483647
Float 如果小说点超过两位,采用的是四舍五入
如果是整数超过规定定位数,则按照规定的最大写入
Double(双精度) 同上
字符串型
Char :0--255B 定长字符串(不够用时用空可补,多了截去)
Varchar:0---65535B 可变长字符串(根据字符长度自动调整)
Text:0---65535B文本字符串
日期时间型
Date 日期1000-01-01~9999-12-31 范围是0000--9999 月范围0--12 日期范围和生活中对应
Time 时间HH:mm:ss 时间0--838 分秒 0--59
Datetime 日期时间 YY-MM-DD HH-MM-SS
9 查看表结构
desc 表名
10查看表中内容
Select * from 表名
Insert into 表名
11 删除表
drop table 表名
删除表中数据
delete from 表名; 表中所有的数据都会被删除,保留字段(表结构)
delete from 表名 where 条件(如ID=2); 按条件删除数据,把ID=2的那条数据删除掉(ID是字段,2是数据)
13查看创建表的sql语句(注释)
Show create table 表名
数据库备份/还原
备份:在命令行下(不是MySQL中)进行,命令:mysqldump -u 用户名 -p密码 库名 > 备份后的库名(以.sql结尾),当前在Linux的哪个目录下就会备份到哪
还原:在有备份的数据库的目录下mysql -u 用户名 -p密码 库名 < 备份后的库名(被还原的库如果不是空的,将会被覆盖,可以新建一个新的空库再还原进去)
表中插入数据
1 insert into 表名 values(值1,值2,值3.。。。。。。)
2 insert into 表名 `(学号)` values (值) 在特定中添加内容 只能添加整行
注意 插入中文,日期时间时加“” 字母加“”
查询
1 select * from 表名; 查看表中所有的数据
2 select 字段名,字段名2,…… from 表名; 查看指定字段下的所有数据
例如 select `商品号` from artcle;
3 select * from 表名 where 条件; 按条件查询(和按条件删除相同)
多个条件时:
select * from 表名 where 查找条件的的行
注意=后面的内容除了数字都要加“”
(1) and(&&)满足所有条件;
例如 select * from artcle where `商品号`=1005 and `单价`=1500;
(2) or(||)满足其中一个条件; 相当于或(两个或多个选择)
例如select * from artcle where `商品号`=1001 or `单价`=500;
注意
条件1
or 条件2 隔开
(3) in(条件1,条件2,……)满足其中一个条件;
(4) not in(条件1,条件2,……)满足其中一个条件以外的;
(5) </>、!= 条件 不等于符号,不等于该条件即满足要求;
(6) between 要求 and 要求 匹配一个区间,例 select * from student where number between 20190304 and 20190306;
4 Select * from 表名 limit 3 (数值前加空格) (查看前三行内容,limit是一个函数、 如果是limit3,5 表示从第三行的5 select * from 表名 where 字段名 like “值% ”; 模糊查询(%代表任意字符 %数值匹配数值结尾的,匹配任意次数,-代表单个字符,匹配任意次数)(一个汉字在不同编码格式下,代表的字节数也不同 一个汉字代表四个字节)一行开始,显示后面五行 ) !!!! 注 limit后面跟想要查看的行
Select * from 表名 where 字段 like “值%” (模糊查询内容)
例如 select * from test where nam like "a%" %代表全部 -代表一个
分组查询
select * from 表名 group by 字段
例如 select * from test group by nam; 查看全部(分组为nam)
例二 select nam from test group by nam; 查看nam(分组为nam)
having 对分组的结果在过滤查询
例如select * from 表名 group by 字段 having 字段
select * from test group by nam having ip=7;查找分组后ip=7的
注 Group by 和 having 连用
修改
1 update 表名 set 字段值=新值 where 条件; 更改表中信息
注释 字段值=新值 条件里面的为
update artcle set `商品号`=1005 where `商品号`=1004;
update 表名 set 字段值=值 where
例如update AAA set s1=s1+3;
增加几倍或者减小几倍是新值后面更改
2 alter table 表名 change 旧字段名 新字段名 类型; 更改表中字段名
注释将旧的改为新的 类型为新的类型例如int(4)
alter table artcle change `库存量` `库质量` int(4B);
3 alter table 表名 add 字段名 类型; 插入新的字段 默认最后一行
例如 alter table artcle add `重量` char(10)
4 alter table 表名 add 字段名 类型 affer 字段n; (插入到新的字段到字段n号)
5 alter table 表名 add 字段名 类型 first;(插入新的字段到第一段)
删除
1 delete from 表名; 表中所有的数据都会被删除,保留字段(表结构)
2 delete from 表名 where 条件(如ID=2); 按条件删除数据,把ID=2的那条数据删
3 alter table 表名 drop 字段名
4 alter table 表名 drop 字段名1,drop 字段名2,(同时删除多个字段)
排序 字段和表名加反引号 数据引号 ·
Select 字段名 from 表名 order by 字段名 注是字段
例如 select ip from test order by ip ; 升序
select ip from test order by ip desc ;注(结尾加desc降序)
(asc/desc); 一字段进行排序,如果结尾不加asc默认升序 结尾加上desc降序排列
主键
主键的作用:主键是能确定一条记录的唯一标识,主键内容字段必须唯一,必须非空,一个表中只能有一个主键,主键可以包含一个或多个字段 主键( primary key ) 叫做主表
添加主键
alter table 表名 add primary key (`字段名`) :设置主键
2 alter table 表名 drop primary key;删除主键
3 create table 表名 (字段1 数据类型 primary key ,字段2 数据类型,。。。。。 ) 注创建表是添加主键
外键:从表中的字段是主表中的主键时,此字段可以设置为外键,用于保持数据的一致性叫做从表
添加外键
alter table 表名(设置外键的表名) add foreign key (外键名)注和主键名一样 references 表1(字段1) 注:表1时主键的表名 字段主键名
例如 alter table chengji add foreign key (`学号`) references xuesheng (`学号`);
删除外键 alter table 表名 drop foreign key 外键名
更改表名
alter table 表名 rename to 新表名
条件中常用运算符:
=、<、>、>、>=、<、<=、
=号
例如select * from test where number=7 查找number(字段)=7的行
注意除数字外别的加“”
<
例如 select * from test where number<7 查找number小于7的行
>
例如 select * from test where number>7 查找number大于7的行
>=
例如 select * from test where number>=7 查找number大于和等于7的行
<=
例如 select * from test where number<=7 查找number小于和等于7的行
聚合函数
1 sum 求和(字段名)
Select sum(age) from 表名 (age)字段名
例如select sum(ip) from test ip下的和(一列)
2 max (字段名):求最大值函数 最大数
3 min(字段名):求最小值函数
4 avg(字段名):求平均值函数
5count(字段名):统计记录个数函数
例如select count(*) from 表名;
select count(hith) from 表名;
注意字段在()里面
多表查询
1内连接
先设置好主键和外键 多个表合在一起
2select * from customer,ord,qw where qw.`商品号`=ord.`商品号` and customer.`顾客号`=ord.`顾客号` and `顾客名`='小李';
个表之间先表示关系
3查询单个是用条件区分*
select * from customer,ord,qw where qw.`商品号`=ord.`商品号` and customer.`顾客号`=ord.`顾客号` and `顾客名`='小李';
select * from customer,ord,qw where qw. `商品号`=ord.`商品号` and customer.`顾客号`=ord. `顾客号`and
`顾客号`=`小李`;