zoukankan      html  css  js  c++  java
  • [Day28]数据库(数据库、表及表数据、SQL语句)

    1.数据库

      1.1 数据库概念

      (1)什么是数据库

        数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作。

      (2)什么是数据库管理系统

        数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统访问数据库中表内的数据。

      (3)常见的数据库管理系统

        MYSQL     :开源免费的数据库,小型的数据库.已经被Oracle收购了.MySQL6.x版本也开始收费。

        Oracle      :收费的大型数据库,Oracle公司的产品。Oracle收购SUN公司,收购MYSQL。

        DB2         :IBM公司的数据库产品,收费的。常应用在银行系统中.

        SQLServer:MicroSoft 公司收费的中型的数据库。C#、.net等语言常使用。

        SyBase     :已经淡出历史舞台。提供了一个非常专业数据建模的工具PowerDesigner。

        SQLite      : 嵌入式的小型数据库,应用在手机端。

        Java相关的数据库:MYSQL,Oracle.

      (4)数据库与数据库管理系统的关系

        

      1.2 数据库表-数据库以表为组织单位存储数据

        类----------表

        类中属性----------表中字段即成员变量

        对象----------记录即对象

      1.3 表数据

        根据表字段所规定的数据类型,我们可以向其中填入一条条的数据,而表中的每条数据类似类的实例对象。表中的一行一行的信息我们称之为记录

    2. SQL语句

      2.1 SQL语句-结构化查询语言(Structured Query Language)简称SQL,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统

      (1)SQL分类

        数据定义语言:简称DDL(Data Definition Language),用来定义数据库对象:数据库,表,列等。关键字:create,alter,drop等

        数据操作语言:简称DML(Data Manipulation Language),用来对数据库中表的记录进行更新。关键字:insert,delete,update等

        数据控制语言:简称DCL(Data Control Language),用来定义数据库的访问权限和安全级别,及创建用户。

        数据查询语言:简称DQL(Data Query Language),用来查询数据库中表的记录。关键字:select,from,where等

      (2) SQL通用语法

        SQL语句可以单行或多行书写,以分号结尾

        可使用空格和缩进来增强语句的可读性

        MySQL数据库的SQL语句不区分大小写,建议使用大写,例如:SELECT * FROM user。

        同样可以使用/**/的方式完成注释

        MySQL中的我们常使用的数据类型如下

          

      2.2 数据库操作:database

      (1)创建数据库

        格式:     

    create database 数据库名;
    create database 数据库名 character set 字符集; 

         

      (2) 查看数据库

        查看数据库MySQL服务器中的所有的数据库:

    show databases;

        查看某个数据库的定义的信息:

    show create database 数据库名; 

      (3)删除数据库

    drop database 数据库名称;

      (4)其他的数据库操作命令

        切换数据库:

    use 数据库名;

      (5)查看正在使用的数据库:

    select database();

      2.3 表结构相关语句

      (1) 创建表

        格式:

    create table 表名(
       字段名 类型(长度) 约束,
       字段名 类型(长度) 约束
    );

      (2)主键约束-主键是用于标识当前记录的字段。它的特点是非空,唯一。在开发中一般情况下主键是不具备任何含义,只是用于标识当前记录。

        格式:

        1.在创建表时创建主键,在字段后面加上  primary key.
        create table tablename(    
          id int primary key,
          .......
          )
        
        2. 在创建表时创建主键,在表创建的最后来指定主键    
        create table tablename(                        
          id int,
          .......,
          primary key(id)
        )
    
        3.删除主键:alter table 表名 drop primary key;
        alter table sort drop primary key;
        4.主键自动增长:一般主键是自增长的字段,不需要指定。
    实现添加自增长语句,主键字段后加auto_increment(只适用MySQL)

      (3)查看表

    --查看数据库中的所有表:
    show tables;
    --查看表结构:
    desc 表名;

      (4)删除表

    drop table 表名;

      (5)修改表结构格式

    alter table 表名 add 列名 类型(长度) 约束;    
    作用:修改表添加列. 
    
    
    alter table 表名 modify 列名 类型(长度) 约束; 
    作用:修改表修改列的类型长度及约束.
    
    
    alter table 表名 change 旧列名 新列名 类型(长度) 约束; 
    作用:修改表修改列名.
    
    alter table 表名 drop 列名;    
    作用:修改表删除列.
    
    rename table 表名 to 新表名; 
    作用:修改表名
    
    alter table 表名 character set 字符集;
    作用:修改表的字符集

      (6)插入表记录

    insert into 表 (列名1,列名2,列名3..) values  (值1,值2,值3..); -- 向表中插入某些列
    insert into 表 values (值1,值2,值3..); --向表中插入所有列

         注意:

            插入的数据应与字段的数据类型相同

            数据的大小应该在列的长度范围内

            在values中列出的数据位置必须与被加入列的排列位置相对应。

            除了数值类型外,其它的字段类型的值必须使用引号引起。

            如果要插入空值,可以不写字段,或者插入 null。               

            对于自动增长的列在操作时,直接插入null值即可。

      (7)更新表记录-用于修改指定条件的数据,将满足条件的记录指定列修改为指定值

    update 表名 set 字段名=值,字段名=值;
    update 表名 set 字段名=值,字段名=值 where 条件;

        注意:

            列名的类型与修改的值要一致.

            修改值得时候不能超过最大长度

            值如果是字符串或者日期需要加

      (8)删除记录

    delete from 表名 [where 条件];
    truncate table 表名;

        区别:

          delete 一条一条删除,不清空auto_increment记录数。

          truncate 直接将表删除,重新建表,auto_increment将置为零,从新开始。

      2.4 DOS操作数据乱码解决

       现象:我们在dos命令行操作中文时,会报错

    insert into user(username,password) values(‘张三’,’123’);        
    ERROR 1366 (HY000): Incorrect string value: 'xD5xC5xC8xFD' for column 'username' at row 1

       原因:因为mysql的客户端编码的问题我们的是utf8,而系统的cmd窗口编码是gbk

       推荐解决方案:命令行下

    set names gbk;

       以上操作,只针对当前窗口有效果,如果关闭了服务器便失效

      2.5 SQL查询语句

      (1)查询的语法

    查询指定字段信息
    select 字段1,字段2,...from 表名;
    
    查询表中所有字段(不推荐使用)
    select * from 表名; 
        
    distinct用于去除重复记录
    select distinct 字段 from 表名;            
    别名查询,使用的as关键字,as可以省略的.
    别名可以给表中的字段,表设置别名。 当查询语句复杂时,使用别名可以极大的简便操作。
    表别名格式: 
    select * from 表名 as 别名;select * from 表名 别名;
    列别名格式:
    select 字段名 as 别名 from 表名;select 字段名 别名 from 表名;
    
    我们在sql语句的操作中,可以直接对列进行运算

      (2)条件查询

        where语句表条件过滤。满足条件操作,不满足不操作,多用于数据的查询与修改。

    select 字段  from 表名  where 条件;    

    比较运算符

    >  <  <=   >=   =  <>

    大于、小于、大于(小于)等于、不等于

    BETWEEN  ...AND...

    显示在某一区间的值(含头含尾)

    IN(set)

    显示在in列表中的值,例:in(100,200)

    LIKE 通配符

    模糊查询,Like语句中有两个通配符:

    % 用来匹配多个字符;例first_name like ‘a%’;

    _ 用来匹配一个字符。例first_name like ‘a_’;

    IS NULL

    判断是否为空

    is null; 判断为空

    is not null; 判断不为空

    逻辑运算符

    and

    多个条件同时成立

    or

    多个条件任一成立

    not

    不成立,例:where not(salary>100);

       2.6 排序查询-查询,对结果集进行排序

    order by 列名[desc][asc]
        desc 降序排列
        asc 升序排列,可以不写,中括号表示可选择项

       2.7 聚合函数

    -- 求和
    SELECT SUM(列名)FROM 表名;
    SELECT SUM(列名)FROM 表名 WHERE 条件;
    
    -- max 函数,对某列数据,获取最大值
    SELECT MAX (列名) FROM 表名;
    
    -- min 函数,对某列数据,获取最小值
    SELECT MIN(列名) FROM 表名;
    
    -- avg 函数,计算一个列所有数据的平均数
    SELECT AVG(列名) FROM 表名;

      2.8 分组查询

    group by 被分组的列名
    SELECT SUM(列名),其他列名 FROM 表名 GROUP BY 被分组的列名;

        注意:

          必须跟随聚合函数
             select 查询的时候,被分组的列,要出现在Select选择列的后面  

  • 相关阅读:
    mac上的终端bash命令(二)基础
    Android 开发笔记___drawable
    Android 开发笔记___图像按钮__imageButton
    Android 开发笔记___滚动视图__scroll view
    Android 开发笔记___textvieww__跑马灯效果
    Android 开发笔记___textview_聊天室效果
    Android 开发笔记___图像视图__简单截屏
    Android 开发笔记___图像视图
    javaScript学习笔记(一)js基础
    iview2+ 表单密码验证
  • 原文地址:https://www.cnblogs.com/ERFishing/p/10802721.html
Copyright © 2011-2022 走看看