美文网首页
数据库基础使用

数据库基础使用

作者: 橘子树上结西瓜 | 来源:发表于2018-01-15 14:56 被阅读7次

    数据库-密码/用户名:root

    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:嵌入式的小型数据库,应用在手机端(如Android内嵌的就是SQlite数据库)
    
    java相关的数据库:MYSQL,Oracle
    
    1.2数据库表
    1.数据库中以表为组织单位存储数据,
    2.表和Java类似,其对应关系:
    Java类 —— 表
    字段   —— 表
    对象   —— 记录
    
    1.3 表数据
    ->表中的每条数据相当于类的实例对象
    ->表中一行一行数据称为表记录
    eg:
    User对象1:id=1,name="caesar",age=23
    User对象2:id
    
    id name age
    1 caesar 23
    2 noah 24

    两个对象对应数据表:

    id name age
    1 caesar 23
    2 noah 24

    注:表中一行称为一条记录
    表中一条记录对应一个java对象的数据

    数据库软件:Mysql,SQLyog

    1.打开服务窗口(可查询mysql服务是否正在运行)
    services.msc
    
    2.mysql登录命令行(当前电脑mysql密码:root)
    注:-u:用户名,-p:密码
    mysql -uroot -proot
    
    3.SQLyog软件(MYSql数据库可视化操作软件)
    
    4.SQL语句
    概念:用于操作数据库的代码
    
    注:相关软件下载可以在百度云盘下载破解软件
    

    SQL语句

    1.概念:用于操作数据库的代码
    2.分类
    (1)数据定义语言DDL(Data Definition Language)
    定义数据库对象:数据库,表,列等。关键字:create,alter,drop
    
    (2)数据操作语言DML(Data Manipulation Language)
    用来对数据库中表的记录进行更新。关键字:insert,delete,update等
    
    (3)数据控制语言DCL(Data Control Language)
    用来定义数据库的访问权限和安全级别,及创建用户
    
    (4)数据查询语言DQL(Data Query Language)
    用来查询数据库中表的记录。关键字:select,from,where等
    
    3.规范
    /*
      创建数据库
      create database 数据库名;
    */
    CREATE DATABASE noahdatabase;
    
    /*
      使用数据库
      use 数据库名;
    */
    USE noahdatabase;
     ==============================创建表=======================
    /*
      创建表
      create table 表名(
        列名1  数据类型  约束,
        列名2  数据类型  约束,
        列名3  数据类型  约束
        将编号列,设置表为主键约束,保证列的数据唯一性
        primary key AUTO_INCREMENT
        让主键列数据,实现自动增长
      );
    */
    CREATE TABLE users (
        uid INT PRIMARY KEY AUTO_INCREMENT,
        uname VARCHAR(20),
        uaddress VARCHAR(200)
    );
    
    /*
      删除表
    */
    DROP TABLE users;
    
    /*
      显示表
    */
    SHOW TABLES;
    /*
      查看表
    */
    DESC users;
    ==============================修改表结构=======================
    /*
      添加列,添加字段
      alter table 表名 add 列名 数据类型 约束;
    */
    ALTER TABLE users ADD tel INT;
    
    /*
      修改列的数据类型约束
      alter table 表名 modify 列名 数据类型 约束;
    */
    ALTER TABLE users MODIFY tel VARCHAR(50);
    
    /*
      修改列名
      alter table 表名 change 旧列名 新列名 数据类型 约束;
    */
    ALTER TABLE users CHANGE tel newtel DOUBLE;
    
    /*
      删除列
      alter table 表名 drop 列名;
    */
    ALTER TABLE users DROP newtel;
    
    /*
     修改表名
     rename table 表名 to 新名;
    */
    RENAME TABLE users TO newusers;
    
    /*
      修改表字符集
      alter table 表名 character set 字符集;
    */
    ALTER TABLE newusers CHARACTER SET gbk;
    
    ==============================向数据表中添加数据=======================
    create table product(
      -- 主键列,自动增长
      id int PRIMARY key AUTO_INCREMENT,
      -- 商品名称,可变字符,非空
      pname varchar(100) not NULL,
      -- 商品价格,double
      price DOUBLE
    );
    
    /*
      向数据表中添加数据
      insert into 表名(列名1,列名2,列名3) values(值1,值2,值3)
    */
    insert INto product (id,pname,price) values (1,'笔记本',555.023);
    INSERT INTO product (id,pname,price) VALUES (2,'荣耀9',3255.023);
    
    /*
      添加数据格式,不考虑主键(主键已经设置了自动增长),开发常用
      insert into 表名(列名) values(值)
    */
    INSERT INto product (pname,price) values('洗衣机',328.205);
    
    /*
      添加数据格式,所有值全给出
      insert into 表名 values(全列值)
    */
    INSERT into product VALUEs (4,'微波炉',500.05);
    
    /*
      添加数据格式,批量写入
      insert into 表名 (列名1,列名2,列名3) values (值1,值2,值3),(值1,值2,值3)
    */
    INSERT INTO product (pname,price) VALUES 
    ('电视',1000),
    ('衣柜',2000),
    ('沙发',3000);
    
    /*
      添加数据格式,短号问题:如果id:7被删掉了,再添加的时候要使主键为7
      insert into 表名 (列名1,列名2,列名3) values (值1,值2,值3)
    */
    insert into product(id,pname,price) VALUEs (7,'沙发',2000);
    
    ==============================数据表修改、删除数据=======================
    

    /*
    对数据进行更新
    修改原有数据
    格式:
    update 表名 set 列1=值1,列2=值2 where 条件:数据中的唯一性
    */
    UPDATE product SET price=2000 WHERE id=2;

    /*
    删除表里的数据
    delete from 表名 where 条件
    */
    DELETE FROM product WHERE id=7;

    /*
    删除整张表
    delete from 表名
    注:delete 一条一条删除,不清空auto_increment记录数
    或者
    truncate table 表名
    注:直接将表删除,重新建表,auto_increment将置为零,从新开始
    */
    TRUNCATE TABLE newusers

    ==============================查询数据=======================
    /*
      创建财务表
    */
    CREATE TABLE zhangwu (
      id INT PRIMARY KEY AUTO_INCREMENT, -- 账务ID
      zname VARCHAR(200), -- 账务名称
      zmoney DOUBLE -- 金额
    );
    
    /*添加数据*/
    INSERT  INTO zhangwu(id,zname,zmoney) VALUES (1,'吃饭支出',247);
    INSERT  INTO zhangwu(id,zname,zmoney) VALUES (2,'工资收入',12345);
    INSERT  INTO zhangwu(id,zname,zmoney) VALUES (3,'服装支出',1000);
    INSERT  INTO zhangwu(id,zname,zmoney) VALUES (4,'吃饭支出',325);
    INSERT  INTO zhangwu(id,zname,zmoney) VALUES (5,'股票收入',8000);
    INSERT  INTO zhangwu(id,zname,zmoney) VALUES (6,'打麻将支出',8000);
    INSERT  INTO zhangwu(id,zname,zmoney) VALUES (7,NULL,5000);
    
    /*
      查询指定列的数据
      select 列名1,列名2 from 表名
    */
    SELECT zname,zmoney FROM zhangwu;
    
    /*
      查询所有列的数据
      select * from 表名
    */
    SELECT * FROM zhangwu;
    
    /*
      查询去掉重复记录
      select distinct 列名 from zhangwu
    */
    SELECT DISTINCT zname FROM zhangwu
    
    /*
      查询重新命名列(临时改名)
      select as 新列名 from 表名
    */
    SELECT zname AS '名称' FROM zhangwu
    
    /*
      查询数据中,直接进行数学计算
      列队数字进行运算
    */
    SELECT zname,zmoney+1000 AS 'zmoney' FROM zhangwu
    
    /*===================条件查询===================*/
    -- 查询金额在2000到8000之间(写法1)
    SELECT*FROM zhangwu WHERE zmoney>=2000 AND zmoney<=8000
    -- 改成between and 方式(写法2)
    SELECT * FROM zhangwu WHERE zmoney BETWEEN 2000 AND 8000
    
    -- 查询金额是1000,3500,5000
    SELECT * FROM zhangwu WHERE zmoney=1000 OR zmoney=3500 OR zmoney=5000
    -- 改成in方式
    SELECT*FROM zhangwu WHERE zmoney IN(1000,3500,5000)
    
    /*
      like 模糊查询 配合通配符
      % 用来匹配多个字符;例first_name like ‘a%’;
      _ 用来匹配一个字符。例first_name like ‘a_’;
      查询所有的支出
    */
    SELECT * FROM zhangwu WHERE zname LIKE '%支出%'
    
    -- 查询账务名字,五个字符
    SELECT * FROM zhangwu WHERE zname LIKE '_____'
    
    
    -- 查询账务名,不为空的
    SELECT * FROM zhangwu WHERE zname IS NOT NULL;
    SELECT * FROM zhangwu WHERE  NOT (zname IS NULL);
    
    /*================排序查询===========*/
    /*
      查询,对结果集进行排序
      升序,降序,对指定列排序
      order by 列名 [desc][asc]
    */
    -- 查询账务表,价格进行升序
    SELECT * FROM zhangwu ORDER BY zmoney ASC
    
    -- 查询账务表,价格进行降序
    SELECT * FROM zhangwu ORDER BY zmoney DESC
    
    -- 查询账务表,查询所有的支出,对金额降序排列
    -- 必须先过滤条件 where 查询到的结果再排序
    SELECT * FROM zhangwu WHERE zname LIKE'%支出%' ORDER BY zmoney DESC
    
    
    /*=============聚合函数=====*/
    /*
      使用聚合函数查询计算
    */
    -- count 求和,对表中的数据的个数求和
    -- 查询统计账务表中,一共有多少条数据
    SELECT COUNT(*) FROM zhangwu
    
    -- sum求和,对一列中数据进行求和计算 sum(列名)
    -- 对账务表查询,对所有的金额求和查询
    SELECT SUM(zmoney) FROM zhangwu
    -- 统计所有支出的总金额
    SELECT SUM(zmoney) FROM zhangwu WHERE zname LIKE '%支出%'
    
    -- max函数,对某列数据求最大值
    SELECT MAX(zmoney) FROM zhangwu
    
    -- avg函数,对某列数据求平均数
    SELECT AVG(zmoney) FROM zhangwu
    
    
    /*================分组查询===========*/
    /*
      查询所有的支出
      吃饭支出,工资支出。。。
      
      分组查询:group by 被分组的列名
      必须和聚合函数一起使用
      select 查询的时候,被分组的列,要出现在select选择列的后面
    */
    SELECT SUM(zmoney),zname FROM zhangwu GROUP BY zname
    

    相关文章

      网友评论

          本文标题:数据库基础使用

          本文链接:https://www.haomeiwen.com/subject/pbxdoxtx.html