码迷,mamicode.com
首页 > 数据库 > 详细

数据库知识_01

时间:2019-04-05 23:56:00      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:price   不可   写法   rename   登录   切换数据库   1.5   数据库管理   blob   

1.什么是数据库?

  数据库就是一个文件系统,只不过我们需要通过命令行(SQL)来操作这个文件系统

2.常见数据库:

  mysql:开源免费的适用于中小型企业的免费数据库

  mariadb:由mysql创始人搞出来的,直接是mysql开源版本的一个分支,基本上所有的命令都是一样的

  oracle:商业软件,收费软件,适用于大型电商网站,收购了sun公司

  db2:IBM公司,thinkpad,解决方案:软件和硬件,服务器架构,银行系统大多采用db2

  sqlserver:windows里面,政府网站asp.net,并且大学教学通常都是采用SQLserver。图形化工具做的不错

  sybase:被淘汰的

 

  NOSQL非关系型数据库:key--value

  mongodb:

  redis:set get

3.关系型数据库:

 主要用来描述实体与实体之间的关系,

  实实在在存在的事物:男生与女生  学生和班级  员工和部门

  E-R关系图:要求必须得会画

  实体:方框

  属性:椭圆

  关系:菱形

4.MYSQL数据库服务器

  MYSQL数据库:数据库管理软件

  服务器:就是一台电脑,这台安装相关的服务器软件,这些软件会监听不同的端口号,根据用户访问的端口号,提供不同的服务

5.MYSQL的安装和卸载

  卸载:

    打开控制面板,删除软件

    删除mysql安装目录的所有文件C:\Program File\MySQL

    删除mysql数据存放文件:C:\ProgramData\MySQL

  安装:

    运行安装程序:在启动配置教程之前,一路下一步,没有下一步的话就直接finish

    第一次finish之后启动服务器配置教程

    第一个incluce mysql bin directory to windows path

    第二个:端口号不要去修改,字符集要选UTF-8,密码不要忘记了

    附件(重置root密码):   

  方法一:
  在my.ini的[mysqld]字段加入:
  skip-grant-tables
  重启mysql服务,这时的mysql不需要密码即可登录数据库
  然后进入mysqlmysql>use mysql; mysql>更新 update user set password=password(‘新密码‘) WHERE User=‘root‘;mysql>flush   privileges; 运行之后最后去掉my.ini中的skip-grant-tables,重启mysqld即可。

  方法二:
  不使用修改my.ini重启服务的方法,通过非服务方式加skip-grant-tables运行mysql来修改mysql密码
  停止mysql服务
  打开命令行窗口,在bin目录下使用mysqld-nt.exe启动,即在命令行窗口执行: mysqld-nt --skip-grant-tables
  后另外打开一个命令行窗口,登录mysql,此时无需输入mysql密码即可进入。
  按以上方法修改好密码后,关闭命令行运行mysql的那个窗口,此时即关闭了mysql,如果发现mysql仍在运行
  的话可以结束掉对应进程来关闭。
  启动mysql服务

 

6.MYSQL的SQL语句

  SQL:Structure Query Language结构化查询语言

  DDL:数据定义语言:定义数据库;数据表他们的结构:create(创建) drop(删除)alter(修改)

  DML:数据操纵语言:主要是用来操作数据 insert(插入)  delete(删除)update(修改)

  DCL:数据控制语言:定义访问权限,取消访问权限,安全设置   grant

  DQL:数据查询语言:select(查询) from字句  where字句

7.数据库的CRUD的操作

  首先要登录数据库服务器:mysql -u用户名 -p密码

  创建数据库:

  create database 数据库的名字:create database day06;

  创建数据库数据库的时候,指定字符集:

  create database 数据库的名字 character set utf8;

  eg:create database day06_1 character set utf8;

  create database 数据库的名字 character set 字符集 collate 校对规则;

  eg:create database day_02 character set utf8 collate utf8_bin;

  查看数据库:、

    查看所有数据库:

    show databases;

    information_schema

    performance_schema

    mysql(这三个数据库不要动)

    查看数据库定义的语句:

    show create database 数据库名字

    eg:show create database day06;

    eg:show create database day06_2;

  修改数据库的操作:

    修改数据库的字符集:

    alter database 数据库的名字 character set 字符集

    alter database day06_1 character set gbk;

  删除数据库:

    drop database 数据库名字;

    drop database day06_02;

    drop database test;

  其他数据库操作命令:

    切换数据库(选中数据库):

    use 数据库名字;

    use day06;

    查看一下当前正在使用的数据库:

    select database();

8.表的CRUD操作

  创建表:

    create database 数据库名字

    create table 表名(

      列名 列的类型(长度) 约束,

      列名2 列的类型(长度) 约束

    );

    列的类型:

    java    sql

    int     int

    char/String     char/varchar

          char:固定长度

          char(3):    一    一空格空格

          varchar(3):  一    一

          长度代表的是字符的个数。另外提一下:utf8下汉字是3个字节

    double   double

    float    float

    boolean   boolean

    date    date:YYYY-MM-DD

          time:hh-mm-ss

          datetime:YYYY-MM-DD  hh:mm:ss  默认值 是null

          timestamp:YYYY-MM-DD  hh:mm:ss  默认使用当前时间

          text:主要是用来存放文本

          blob:存放的是二进制

    列的约束:

      主键约束:primary key

      唯一约束:unique

      非空约束:not null

    创建表:

      1.分析实体:学生

      2.学生ID

      3.姓名

      4.性别

      5.年龄

    create table student(

    sid  int  primary  key,

    sname  varchar(31),

    sex  int,

    age  int

    );

  查看表:

    查看所有的表:show tables;

    查看表的定义:show create table student;

    查看表的结构:desc student;

  修改表:

    添加列(add):alter table 表名 add 列名 列的类型 列的约束

    alter table student add chengji int not null;

    修改列(modify):alter table student modify sex varchar(2);

    修改列名(change):alter table student change sex gender varchar(2);

    删除列(drop):alter table student drop chengji;

    修改表名(rename):rename table student to heima;

    修改表的字符集:alter table heima character set gbk;

  删除表:

    drop table heima; 

9.Sql完成对表中数据的CRUD的操作

  插入数据:insert into 表名(列名1,列名2,列名3) valus(值1,值2,值3);

  eg:insert into student(sid,sname,sex,age)values(1,’张三‘,1,23);

  简单写法(如果插入的是全列名的数据,表后面的列明可以省略):insert into student values(2,’张三‘,1,23);

  注意:如果是插入部分列的话,列明不能省略

  insert into student(sid,sname) values(3,’lisi‘);

  nsert into student values(3,’lisi‘);//这种写法是错误的

  批量插入:

insert into student values

(4,’张三‘,1,23),

(5,’张三‘,1,23),

(6,’张三‘,1,23),

(7,’张三‘,1,23),

(8,’张三‘,1,23); 

单条插入和批量插入的效率:

  插三条数据

  查看表中数据:select*from student;

  删除记录:delete from 表名 [where 条件]

  delete from student where sid=10;

  delete from student;如果没有指定条件会将表中数据一条一条全部删掉

  更新表记录:

    update 表名 set 列名=列的值,列名2=列的值2 [where 条件]

    将sid为5的名字改为李四

    如果参数是字符串,日期要加单引号

    update student set sname=’李四‘ where sid=5;

 

    update student set sname=’李四‘ ,set=0;(会将表中所有数据都修改)

  查询记录:

    select [distinct] [*] [列名,列名2] from 表名 [where 条件]

    distinct:去除重复数据

 

    select:选择显示那些列的内容

    --商品分类:手机数码,鞋靴箱包

      1.分类的ID

      2.分类名称

      3.分类描述

      create table category(

        cid int primary key auto_increment,

        cname varchar(10),

        cdesc varchar(31)

      );

      insert into category values(null,’手机数码‘,‘电子厂品,黑马生产’);

      insert into category values(null,’鞋靴箱包‘,’江南皮革厂,倾情打造‘);

      insert into category values(null,’香烟酒水’,‘黄鹤楼,茅台,二锅头’);

      insert into category values(null,‘酸奶饼干’,‘哇哈哈,蒙牛酸酸乳’);

      insert into category values(null,‘馋嘴零食’,‘瓜子花生,八宝粥,辣条’);

      select*from category;//表中所有数据

      select cname,desc fromcategory;//查看表中指定列的数据

    --所有商品

      1.商品ID

      2.商品名称

      3.商品价格

      4.生产日期

      5.商品分类ID

      商品和商品分类:所属关系

      create table product(

        pid int primary key auto_increment,

        pname varchar(10),

        price double,

        pdate timestamp,

        cno int 

      );

      insert into product values(null,‘小米mix4’,998,null,1);

      insert into product values(null,‘锤子’,2888,null,1);

      insert into product values(null,‘阿迪王’,99,null,2);

      insert into product values(null,‘老村长’,88,null,3);

      insert into product values(null,‘劲酒’,35,null,3);

      insert into product values(null,‘小熊饼干’,1,null,4);

      insert into product values(null,‘卫龙辣条’,1,null,5);

      insert into product values(null,‘旺旺大饼’,1,null,5);

      --简单查询:

        --查询所有的商品:select*from product;

        --查询商品名称和商品价格:select pname,price from product;

        --别名查询,as的关键字,as关键字是可以省略的

          --表别名:select p.pname,p.price from product p;(主要是用在多表查询);

          select p.pname,p.price from product as p;

         

          --列别名:select pname as 商品名称,price as 商品价格 from product;

          select pname as 商品名称,price as 商品价格 from product ;

          省略as关键字

          select pname 商品名称,price 商品价格 from product ;

        --去掉重复的值

          --查询商品所有的价格

          select price from product;

          select distinct price from product;

        --select运算查询:仅仅在查询结果上做了运算,数据没变 + - * /

          select *,price*1.5 from product;

          select *,price*1.5 as 折后价 from product;

          

          select *,price*0.8 from product;

        --条件查询[where关键字]

          指定条件,确定要操作的记录

        --查询商品价格>60元的所有商品信息

          select*from product where price>60;

        --where 后的条件写法

          --关系运算符:> >= < <= = != <>

            <>:不等于(标准SQL语法)

            !=:不等于(非标准SQL语法)

          --查询商品的价格不等于88的所有商品

           select*from product where price<>88;

           select*from product where price!=88;

          --查询商品的价格在10到100之间

           select*from product where 10<price and price<100;

           between..and..

           select*from product where price between 10 and 100;

          --逻辑运算:and , or, not

          --查询商品价格小于100或者商品价格大于900

          select *from product where price<100 or price>900;

          --like:模糊查询

            _:代表的是一个字符

            %:代表的是多个字符

          --查询出名字中带有饼的所有商品  %饼%

            select *from product where pname like ‘%饼%‘;

          --查询第二个名字是熊的所有商品  ’-熊%‘

            select*from product where pname like ’_熊%‘;

          --in在某个范围中获得值

            --查询出商品分类ID在1,4,5里面的所有商品

            select *from product where cno in(1,4,5);

          --排序查询:order by 关键字

            asc:ascend升序(默认的排序方式)

            desc:descend降序

            --0.查询所有商品,按照价格进行排序

            select*from product order by price;

            --1.查询所有的商品,按价格进行降序排序(asc-升序  desc-降序);

            select *from product order by price desc;

            --2,查询名称有  小  的商品,按价格升序排序

              1.查询名称有  小·  的商品;

              select*from product where pname like ’‘%小%;

              2.进行排序得出结果

              select*from product where pname like ’%小%‘ order by price asc;

          --聚合函数:

            sum():求和

            avg():求平均值

            count():统计数量

            max():最大值

            min():最小值

            --1.获得所有商品价格总和:

             select sum(price)  from product;

            --2.获得所有商品的平均价格:

             select avg(price) from product;

            --3.获得所有商品的个数;

             select count(*) from product;

            --注意:where条件后面不能接聚合函数

            --查出商品价格大于平均价格的所有商品

             查出所有商品;select*from product;

             大于

             平均价格

            --子查询

             select*from product where price >(select avg(price)from product);

          --分组:group by

            --1.根据cno字段分组,分组后统计商品的个数

            select cno,count(*) from product group by cno;

            --2.根据cno分组,分组统计每组商品的平均价格,并且商品价格>60

            select cno,avg(price) from product group by cno having avg(price)>60;;

 

            --having关键字  可以接聚合函数的  出现分组之后

            --where关键字  它是不可以接聚合函数的,出现在分组之前

          --编写顺序

          --S..F..W..G..H..O

            select...from...where...group by..having..order by

          --执行顺序

            F..W..G..H..S..O

            from...where...group...having...select...order by

数据库知识_01

标签:price   不可   写法   rename   登录   切换数据库   1.5   数据库管理   blob   

原文地址:https://www.cnblogs.com/jsnote/p/10654440.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!