database

Posted acekr

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了database相关的知识,希望对你有一定的参考价值。

      数据库基础

一、数据库概念

  1.数据库

    存储数据的仓库(逻辑概念,并未真实存在)

  2.数据库软件

    真实软件,用来实现数据库这个逻辑概念

  3.数据仓库

    数据量更加庞大,更加侧重数据分析和数据挖掘,供企业决策分析之用,主要是数据查询,修改和删除很少

二、mysql的特点

 

 

 

- 服务端启动 

```mysql
sudo /etc/init.d/mysql start|stop|restart|status
sudo service mysql start|stop|restart|status
```

- 客户端连接

```mysql
mysql -hIP地址 -u用户名 -p密码
本地连接可省略 -h 选项

 

四、基本sql命令

 

**1.库管理**

```mysqle
    1、查看已有库; 
    show databases;
    2、创建库并指定字符集;
    create database 库名 charset utf8;
    3、查看当前所在库;
    select database();
    4、切换库;
    use 库名;
    5、查看库中已有表;
    show tables;
    6、删除库;
    drop database 库名;
```
**2.表管理**

```mysql
    1、创建表并指定字符集;
    create table 表名(字段名 数据类型,xxx)charset=utf8;
    2、查看创建表的语句 (字符集、存储引擎);
    show create table 表名;
    3、查看表结构;
    desc 表名;
    4、删除表;
```    drop table 表名;
1 **3.表记录管理**
2 
3 ```mysql
4     1、增 :insert into 表名(字段名)values(),();
5     2、删 :delete from 表名 where 条件;
6     3、改 :update 表名 set 字段名=值 字段名=值 where 条件;
7     4、查 :select * from 表名 where 条件;
8 ```
1 **4.表字段管理**
2 
3 ```mysql
4     1、增 : alter table 表名 add 字段名 类型 first;(添加首字段)
5             alter table 表名 add 字段名 类型 after 字段名;(添加在什么字段后)
6             alter table 表名 add 字段名 类型(添加最后的字段)
7     2、删 :alter table 表名 drop 字段名;
8     3、改 :alter table 表名 modify 字段名 新类型;
9     4、表重命名 :alter table 表名 rename 新表名;

五、数据类型

 1 **四大数据类型**
 2 
 3 数值类型
 4 
 5 ```mysql
 6     int(整形) smallint(小整形) bigint(大整形) tinyint
 7     float(m,n)(浮点型) double decimal
 8  
 9 ```
10 
11 字符类型
12 
13 ```mysql
14 15 
16 ```
17 
18 - 枚举类型 
19 
20 ```mysql
21     enum()(多个中选一个)   set()(多个中选多个)
22 ```
23 
24 - 
25   日期时间类型
26 
27 ```mysql
28     data time year datatime timestamp
29 ```
**日期时间函数** 
```mysql
    NOW() CURDATR() YEAR(字段名) DATE(字段名) TIME(字段名)
```
**日期时间运算**
```mysql
    select * from 表名 where 字段名 运算符(NOW()-interval 间隔)
    间隔单位:1day| 3month|2year
    eg1:查询一年以前的用户充值信息
    select * from tab where time <(now()-interval 1 year);
```

六、MySQL运算符

- **数值比较**

```mysql
> >= < <= = !=
eg1 : 查询成绩不及格的学生
      select * from student where score >60;
eg2 : 删除成绩不及格的学生
      delete from sutdents where score <60;
eg3 : 把id为3的学生的姓名改为 周芷若
      update students set name="周芷若" where id = 3;
```
- **逻辑比较** 

```mysql
and  or
eg1 : 查询成绩不及格的男生
     select * from students where score <60 and gender="m";
eg2 : 查询成绩在60-70之间的学生
```   select * from students where score>=60 and score<=70;
- **范围内比较** 

```mysql
between 值1 and 值2 、in() 、not in()
eg1 : 查询不及格的学生姓名及成绩
    select name,score from students where score between 0 and 59;
eg2 : 查询AID1903和AID1902班的学生姓名及成绩
    select name,score from students where class in("AID1903","AID1902");
- **模糊比较(like)**

```mysql
where 字段名 like 表达式(%_)
eg1 : 查询北京的姓赵的学生信息
    select *from students where address="北京" and name like "赵%"; 
- **NULL判断**

```mysql
is NULL 、is not NULL
eg1 : 查询姓名字段值为NULL的学生信息
    select * from students where name is NULL;
```

 七、查询

- **order by**
给查询的结果进行排序(永远放在SQL命令的倒数第二的位置写)
```mysql
order by 字段名 ASC/DESC
eg1 : 查询成绩从高到低排列
    select * from students where score order by DESC
```
- **limit**

限制显示查询记录的条数(永远放在SQL命令的最后写)

```mysql
limit n :显示前n条
limit m,n :从第(m+1)条记录开始,显示n条
分页:每页显示10条,显示第6页的内容
    limit (6-1)*10 ,10

八、MySQL基础巩固

- **创建库 :country(指定字符编码为utf8)**
  create database country; - **创建表 :sanguo 字段:id 、name、attack、defense、gender、country**
  create table sanguo(id int primary key auto_increment,
              name varchar(16) not null,
              attack int not null,
              defense int not null,
              gender enum("w","m") not null,
              country varchar(16) not null)charset=utf8;
**插入5条表记录(id 1-5,name-诸葛亮、司马懿、貂蝉、张飞、赵云),攻击>100,防御<100)**
   insert into sanguo values(1,"诸葛亮",150,80,"m","蜀国";
                   2,"司马懿",160,70,"m","魏国";
                   3,"貂蝉",110,50,"w","吴国";
                   4,"张飞",200,90,"w","蜀国";
                   5,"赵云",21,80,"w","蜀国";)
- **查找所有蜀国人的信息**
  select * from sanguo where country="蜀国";
- **将赵云的攻击力设置为360,防御力设置为68*
  update sanguo set attack=360 ,defense=68 where name="赵云";
- **将吴国英雄中攻击值为110的英雄的攻击值改为100,防御力改为60**
  update sanguo set attack = 100 ,defense=60 where country="吴国"
- **找出攻击值高于200的蜀国英雄的名字、攻击力**
  select name,attack from sanguo where attack>200 and country="蜀国";
- **将蜀国英雄按攻击值从高到低排序**
  select * from sanguo where country = "蜀国" order by attark DESC;
- **魏蜀两国英雄中名字为三个字的按防御值升序排列**
  select * from sanguo where country in("魏国","蜀国") and name like"___" order by defense ASC;
- **在蜀国英雄中,查找攻击值前3名且名字不为 NULL 的英雄的姓名、攻击值和国家**
  select name,attack,country from sanguo where country = "蜀国" and name is not NULL order by attack DESC limit 3;
                  

 

 

 

 

 

  

 

  

以上是关于database的主要内容,如果未能解决你的问题,请参考以下文章

索引1处片段中的非法字符:Heroku上的#{systemEnvironment ['DATABASE_URL']}配置数据源

Asynctask结果显示重新创建片段后

从流中读取失败 - MySqlException

Android 逆向使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )(代码片段

Android 逆向使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )(代码片段

如何以编程方式从片段内部设置ViewPager选项卡?