数据库(DB)、关系型数据库、Mysql(3种类型)、mysql常用函数(3种)

一、数据库的发展史
   (1)手工管理:藏书阁,图书馆。
            优点:分类管理,直观性强
            缺点:信息流动慢,不方便
   (2)文件管理:计算机文件系统,图书管理系统
            优点:分类管理,层次分明
            缺点: 查找不方便
   (3)数据库管理:
            优点:存取数据非常方便.
            缺点:有数据的安全隐患。
二、数据库概念
    数据库(DataBase):简称DB,
                                  按照某一特定数据结构来组织,
                                  存储数据的仓库。
    数据库管理系统(DataBase Management System):
                          简称DBMS.
                          是为了建立,操作和维护数据库,
                          而设计的一个程序。                                                                                                                                                                                         介于用户和数据库之间。
    PS: 使用SQL语言,通过DBMS来管理DB
三、关系型数据库
    (1) 关系: 指的就是表,或者表与表之间。
                   关系模型:就是表的行与列。
                   比如: 教师(教师编号,姓名,年龄,性别,科目)。
    (2)常用的关系型数据库:
       大型: Oracle--甲骨文(Oracle)公司的产品
                SqlServer--Microsoft旗下的产品
                DB2--IBM旗下的产品
       小型: Access--MicroSoft旗下的产品
                Mysql--目前是甲骨文旗下的产品
四、Mysql
   1)Mysql是一个关系型数据库,最开始是瑞典的MysqlAB公司的产品,
      后来被Sun公司收购,在2009年4月20号Sun公司被Oracle收购.
   2)Mysql特点
       --mysql是开源的,不会产生额外的费用。
       --mysql支持大型数据库,比如可以管理上千万条记录的数据库。
       --mysql支持多操作系统,支持多语言连接:C,C++,java,PHP....
       --mysql成本比较小( 相比较Oracle和DB2 )
   3)Mysql的安装(略)
       服务端的安装:DB和DBMS的安装
       客户端的安装:自带的客户端
                                第三方客户端
   4)Mysql的连接和使用
        打开mysql图形界面,输入密码即可打开mysql
    
    1)查询数据库
        show databases;
    2)先选择数据库
        use mysql;
    3)书写SQL
    4)查询数据库中的表
        show tables;    

五、表(Table)
   表是关系型数据库的基本存储结构。
         1)表是二维数据结构,有行和列
         2)行(Row)是横排数据,也叫记录(Record)
         3)列(Column)是竖排数据,也叫字段(Field)
         4)行与列的交叉点是 字段值
         5)表与表之间也存在关系
六、数据库支持的数据类型
        MySQL支持多种类型,大致可以分为三类:
                 1)数值
                 2)日期/时间
                 3)字符串(字符)类型。
    

*数值类型
    
    类型                      大小                                     范围(有符号)                                             用途
   TINYINT              1 字节                                      (-128,127)                                               小整数值
   SMALLINT           2 字节                                (-32 768,32 767)                                          大整数值
   MEDIUMINT        3 字节                            (-8 388 608,8 388 607)                                    大整数值
   INT或INTEGER   4 字节                     (-2 147 483 648,2 147 483 647)                             大整数值
   BIGINT                8 字节    (-9 233 372 036 854 775 808,9 223 372 036 854 775 807)    极大整数值
   
   FLOAT       4 字节    单精度       浮点数值
   DOUBLE    8 字节    双精度       浮点数值
   DECIMAL    对DECIMAL(M,D): 如果M>D,为M+2;       否则为D+2    
                                                     依赖于M和D的值    
                                                     小数值


*日期和时间类型
 类型     大小(字节)                            范围                                                    格式                                         用途
DATE            3                 1000-01-01/9999-12-31                               YYYY-MM-DD                               日期值
TIME             3                 '-838:59:59'/'838:59:59'                                  HH:MM:SS                         时间值或持续时间
YEAR            1                           1901/2155                                                YYYY                                       年份值
DATETIME    8      1000-01-01 -23:59:59/9999-12-31 23:59:59      YYYY-MM-DD HH:MM:SS             混合日期和时间值
TIMESTAMP 8             1970-01-01 00:00:00/2037 年某时              YYYYMMDD HHMMSS          混合日期和时间值,时间戳

*字符串类型
类型                       大小                                     用途
CHAR                    0-255字节                      定长字符串    char(10)
VARCHAR             0-65535 字节                 变长字符串
TINYBLOB             0-255字节                      不超过 255 个字符的二进制字符串
TINYTEXT             0-255字节                      短文本字符串
BLOB                     0-65535字节                  二进制形式的长文本数据
TEXT                     0-65535字节                  长文本数据
MEDIUMBLOB      0-16 777 215字节          二进制形式的中等长度文本数据
MEDIUMTEXT      0-16 777 215字节          中等长度文本数据
LOGNGBLOB       0-4 294 967 295字节     二进制形式的极大文本数据
LONGTEXT          0-4 294 967 295字节     极大文本数据


七、结构化查询语言(SQL)
            结构化查询语言(Structured Query Language),简称SQL,
    是数据库的标准查询语言。可以通过DBMS对数据库进行定义数据、
    操纵数据、查询数据、数据控制等

    SQL可以分为:
      1)数据定义语言(DDL):Data definition Language
        *创建表create
            create table tableName(
                字段1 类型,
                字段2 类型,
                字段3 类型
            )

        *删除表drop
            drop table tableName

        *修改表alter

        a)向表最后追加新字段
            --格式:alter table tableName add (colName Type);
        b)删除表字段语句
            --格式:alter table tableName drop colName;
        c)修改表字段类型
            --格式:alter table tableName modify colName newType;
        d)--修改表字段名称
            --格式:alter table tableName change oldColName newColName newType;
        e)修改表名
            --格式:alter table oldName rename newName;

        *查看表结构
            --格式:desc 表名;

        *清空表truncate,彻底清空,无法找回。
                                     只删除表中的记录,保留表的结构
            --格式:truncate tableName;
    
    2)数据操纵语言(DML):Data Manipulation Language
      *插入数据insert
        --格式1:insert into tableName(
                       字段1,字段2...,字段n) values (值1,值2...,值n)

        --格式2:insert into tableName values(值1,值2,..值n);
                       注:格式2要求插入的值必须和建表时字段的顺序相对应,
                              否则容易出现错误

       *删除数据delete
        --格式:delete from tableName [where eid=2 and(or) ename='小赵'];

      *修改数据update
        --格式:update tableName set 字段1=值1,字段2=值2 
                [where eid > 2];


      *创建数据库并指定字符集
          create database jsd1707 default character set utf8

     3)TCL:事务控制语言   savepoint,commit,rollback 
     4)DQL:数据查询语言   select
     5)DCL:数据库控制语言 grant,revoke



*数据类型的学习

 1.数值类型: tinyint,smallint,mediumint,int/integer,bigint,
                       float,double,decimal

  1) tinyint :       1字节大小,                         范围-128~127
  2) smallint:      2字节大小,                      范围-32768~32767
  3) int/integer:  常用数值类型,4字节,    范围 -21亿~21亿左右
  4) bigint:         大整数类型,                     范围与java语言的long的范围类似。                                                                                             5) float: 单精度类型,占4字节。
       --不规定长度时:默认进行四舍五入,保留0或1位小数,
       --规定长度时:--float(m,n):m表示数据的有效位数,n表示小数点后保留的位数。
                                                    整数位:最大值为m-n;
                               --float(m,0)与float(m):指的是整数位的最大位数。
  6) double: 双精度类型,占8字节
       --规定长度时: double(m,n):有效位数是m,小数点后保留n位。
                                整数位:m-n
  7) decimal: 与float和double的用法一样,decimal(m,n)

2.日期类型:date,time,datetime,timestamp,year

 1) date:  日期类型,默认格式:yyyy-mm-dd  范围 1000-1-1/9999-12-31

 2) time : 时间类型,默认格式:HH:mm:ss  
               --范围1:不写年月日时,-838:59:59/838:59:59
               --范围2:   写年月日时,   -23:59:59/23:59:59

 3) datetime: 默认格式: yyyy-mm-dd hh:mm:ss
               --范围: 1000:1:1 -23:59:59/9999:12:31 23:59:59;

 4) timestamp:  时间戳类型,
               --范围:1970-01-01 00:00:00/2038-1-18 23:59:59

 5) year:年,默认格式:  yyyy        范围 1901~2155;


3.字符串类型:char, varchar, tinyblob, tinytext, blob, text,
                        mediumblob, mediumtext, longblob, longtext
 1) char:定长字符串类型,范围0~255个字节
            char(10):插入数据时,最多插入10个字节,
                          如果插入的字节数不足10字节时,也占内存10字节大小。
                          定义数据类型长度时,最长为255

 2) varchar:可变字符串类型,范围0~255。
                  规定长度时:最大值为255个字节
                  varchar(10):表示最多存储10个字节,
                                        如果不满足10个字节,在内存中按照实际字节数占用。

 3) blob:一种字符串类型,存储数据时存储的是字符对应的字节码。字节范围:0~65535

 4) text:一种字符串类型   字节范围:0~65535

 5) longblob:极大字符串类型,存储的是字符对应的字节码。
 6) longtext: 极大字符串类型,存储的是字符。
                    上述两种类型的字节范围:0~Java语言的int的最大值的2倍+1;

    --虚表dual:数据库为程序员提供的一个没有字段的表。
             作用:一般用来当作一个查询语句的基表。
          --练习:计算1+2+2*3.
                select 1+2+2*3 from dual;
                select 2*3+2/3 from date_t01;
    --mysql数据库的特点:在运算时,可以不基于表操作。
                select 1+2;

===========================================================================================
*mysql常用函数的学习

一、常用的字符串函数
 1.ascii(str):返回指定字符串的第一个字符的ascii码
                   字符串为空字符串时,返回0
                   字符串为null时,返回null

 2.ord(str):如果字符串的第一个字符是单字符时,与函数ascii(str)一样;
                如果不是单字节,如 UTF8的'中',是三个字节,
                返回值为: 第一个字节*256+第二个字节*256+第三个字节。

 3.conv(n,from_base,to_base): 将from_base进制中的数n转成
                                                   to_base进制下的表示方式
                                                  16进制中的字符a转成2进制来表示

 4.bin(n),oct(n),hex(n):  将数值n转成对应的二进制,八进制,十六进制

 5.char(n...):  返回多个ascii码组成的字符串。

 6.concat(str1,str2,...): 将多个字符串拼接成一个字符串
                                    如果有一个参数为null,返回的就是null。

 7.length(str)/octet_length(str):
                          返回的是默认字符集下的字符串的所有字节数。
                          都是返回字符串的字符长度。

 8.locate(substr,str)/position(substr in str)/instr(str,substr):
                          返回substr在str第一次出现的位置;
                          如果没有,返回0;

 9.locate(substr,str,pos): 
                从str的下标pos开始向后查找,substr第一次出现的位置,
                找不到返回0

 10.lpad(str,len,padstr)/rpad(str,len,padstr):
                在字符串str的左边/右边添加padstr,添加后的总长度为len。
                可称之为左补全/右补全函数
                右对齐/左对齐函数

 11.left(str,len)/right(str,len):  
                返回字符串左端/右端的len个字符。

 12.substring(str,pos)/substring(str from pos)
                截取str的子串,从pos下标开始截取到最后。

 13.substring(str,pos,len)/substring(str from pos for len)/mid(str,pos,len)   
                对str进行截取操作,从pos下标开始,截取len长度个。
              --小贴士:数据库的字符串的下标从1开始。

 14.substring_index(str,delim,count):
                截取str,截取到第count个分隔符delim

 15.ltrim(str)/rtrim(str)  
                删除str的左端/右端的空格

 16.trim([[both | leading | trailing] [remstr] from] str);
                删除str里两端的remstr
                左右两端由 both|leading|trailing来控制
                默认情况:both

 17.replace(str,from_str,to_str):
                使用to_str替换掉str中的from_str;

 18.insert(str,pos,len,newstr):
                使用newstr替换str中的一部分,这部分从pos下标开始,len个。

 19.lcase(str)/lower(str)/ucase(str)/upper(str):
                将字符串中的英文字母全变成大/小写。


二、mysql函数之数学函数
--1.abs(n):
      取参数n的绝对值

--2.sign(n):
      判断参数的符号,
      如果是正数,返回1,
      如果是负数,返回-1,
      如果是0,返回0;

--3.mod(m,n):
      返回m对n的取余的结果。同(m%n);
      结果的正负只与被除数m的正负有关

--4. floor(n)/ceiling(n):
      floor(n)    返回小于等于n的最大整数,
      ceiling(n) 返回大于等于n的最小整数。

--5.round(n,d):
       对n进行四舍五入,保留d位小数。

--6.pow(x,y)/power(x,y) :
       计算x的y次方

--7.sqrt(n): 对n进行开平方。

--8、rand():
       返回0~1.0的一个随机小数。

--9.truncate(n,d) :
          对数值n进行截断。
          d为正数时,保留小数点后d位。
          d为0时,保留整数位。
          d为负数时,保留小数点前d位。

--10.least(n.....)/greatest(n....):
             统计多个参数中的最小值/最大值。
             参数类型可以不一致,但是必须能互相自动转换


三、mysql函数之日期时间函数
--1.dayofweek(date):
           查看指定日期date是所在周的第几天,返回的是数字
           1--周日.......
           7--周六

--2.weekday(date):
            返回指定date是所在周的周几,返回的也是数字
            0--周一........
            6--周日

--3.dayname(date):
       返回指定日期是周几,
       注意:返回的是英文描述

--4.dayofmonth(date)/dayofyear(date):
       返回指定日期是当月/当年的第几天

--5.monthname(date):
       返回指定日期所在月的英文描述。

--6.week(date,first):
       返回指定日期是当年的第几周。
        first可以取值0或1.
        0表示周日是一周的第一天,
        1表示周一是一周的第一天。

--7.year(date),month(date),day(date),hour(time),minute(time),second(time):
       返回指定日期或时间的时间分量。

--8.extract(part from date):
       截取指定日期的一部分,
       part: year,month,day,hour,minute,second;

--9.date_format(date,format) :
       将指定日期date,按照自定义格式,转成字符串显示。
       --格式:  年:    %y
                   月:    %M或%m
                   日:    %d
                   时:   %i
                   分:   %s
                   秒:   %H

--10.curdate()/curtime():
                 获取当前系统的日期/时间

--11.now()/sysdate()/current_timestamp():
                 获取当前系统时间:都包含年月日时分秒。

--12.sec_to_time(n):
                 将指定数值n转成时间格式

--13.time_to_sec(time):
                 将指定时间转成秒的总数。
                 select time_to_sec('13:56:56');
                 select time_to_sec(now());--只转时间部分。
 

    
       

   


 

猜你喜欢

转载自blog.csdn.net/yk_3215123/article/details/83313443