数据库常用命令以及理论

数据库

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

`顾客号`=`小李`;

 

posted @ 2020-04-16 16:52  无名志士  阅读(282)  评论(0编辑  收藏  举报