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

day38 数据库 note1

时间:2017-12-10 15:56:34      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:birt   oracl   close   color   pen   描述   ora   pre   主键   

 

 

数据库如果要使用的话,必须要先安装它,然后安装完之后还需要卸载它,这些初始步骤都是在老师的博客里面的, 我就不在这里一一总结了,我都会操作,而且已经操作过一遍了,都成功的达到了预期的效果.

http://www.cnblogs.com/wangfengming/p/7879074.html     --------------------------这里是卸载博客链接.

这条连接是如何创建临时表.---所谓的临时表就是你把它创建出来了然后它存在于内存里面,内存的特性就是你关机后自清空,所以这里我们关掉了mycql之后它就会被系统自动清理掉.它的存在还是很有必要的.

http://blog.csdn.net/itegel84/article/details/5940445

 

老师的笔记:

技术分享图片
        
2.问题:为什么要学习数据库    

3.什么是数据库
    用来存储数据的仓库
    
4.数据库的优势:
    1.存储数据量大
    2.方便管理
    3.多用户共享
    4.独立的数据集合
5. 关系型数据
    mysql oracle sql server db2 sybase
    
6. 非关系型数据库
    redis MongoDB 

7.主要学习的是 mysql数据库

    7.1 环境安装
        服务端安装
        客户端的安装
        
    7.2 数据库操作
    
        1. 显示数据库  
            show databases;
        2. 进入指定数据库 
            use 数据库名称;
        3. 创建数据库  
            create database 数据库名称 default character set=utf8;
        4.删除数据库
            drop database 数据库名称;
            
            
    7.3 数据库表操作:
        1.创建表:
            create table studentInfo2(
                name VARCHAR(10) not NULL,
                sex char(10) null,
                age int(5),
                phone BIGINT(11)
            )
    
        2.删除表
        drop table 表名;    
        
    7.4 新增表数据
        #一次增加一条数据
        insert into studentinfo (name,sex,age) 
            VALUES(大花,,12)
        
        #一次增加多条数据
        insert into studentinfo (name,sex,age) VALUES(大花,,12),(二花,,32)

        insert into 表名称 (字段名称,多个以“,”间隔)values(‘具体的值’多个以“,”间隔)
    7.5 修改
        update studentinfo set name=花花 where name=二花
    
    7.6 删除
        delete from 表名 where 条件
    
    练习:
        1.要求:将武当派 张三 修改为 张三丰
            update ren set p_name =张三丰 where p_name=张三
    
    
    -- 1.查询所有人员?
    -- select * from ren;

    -- 2.只查询人员的姓名和年龄?
            -- select p_name,p_age from ren;

    -- 3.查询年龄为20岁的人有哪些?
         -- select * from ren where p_age =20;

    -- 4.查询60岁以下的人员有哪些?
        --     select * from ren where p_age < 60
            -- select * from ren where p_age != 60
            -- 常见的逻辑运算符 <,>,= <=,>=,<>,!=

    -- 5.查询50岁以上并且工资大于8000的人员有哪些?
            -- select * from ren where p_age >50 || p_sal <8000
            -- 注意: and 用于连接两个条件 表示并且意思
            -- 注意2: or 用于连接两个条件 表示或者意思
        
    -- 6.查询姓[张]的人员有哪些?
            -- select * from ren where p_name LIKE 张%
          -- select * from ren where p_name LIKE %张%


    -- 7.查询哪些人员属于 武当/华山/嵩山?
            -- select * from ren where p_menpai =武当 or p_menpai =华山 or p_menpai=嵩山;
            -- select * from ren where p_menpai not in(武当,华山,嵩山);

    -- 8.查询工资在 5000-8900的人员有哪些?
        -- select * from ren where p_sal >=5000 and p_sal<= 8900;
        -- select * from ren where p_sal between 5000 and 8900;

    -- 9.查询所有人员,要求按工资倒序排列?
            -- select * from ren where p_sal>3000 ORDER BY p_sal asc

    -- 10.查询年龄为21岁人员的领导人是谁?
            select p_leader from ren where p_age =21
            
          select * from ren where p_id =p003

          select * from ren where p_id =(select p_leader from ren where p_age =21)


    
    
    
    
    
    
    
    

    
    
    
View Code
技术分享图片
-- 回顾
    1.数据库
        概念:存储数据,以文件的形式存储
        
        好处:1.永久保存数据(理论上)
              2.数据共享
              3.可以通过命令进行数据的精准查找
    2.数据库分类
        1.关系型数据
            mysql oracle sql server db2 ....
            特点:以表格形式进行数据库存储
            
        2.非关系型数据(NOSQL数据库)    
            MongoDB redis
            
    3.mysql 介绍
        1.优点:
            免费,可靠,支持千万级的数据吞吐量
        2.环境安装
            安装包方式(next...)
            解压方式安装(http://www.cnblogs.com/wangfengming/p/7880595.html)
            客户端安装
        
        3.连接数据
            mysql -u root -p 回车
            输入密码 ******
        
        4.数据库的操作
            1.创建
                create database 库名;
            2.进库
                use 库名;
            3.删库
                drop database ku;
            4.显示当前用户下所有的数据库
                show databases;
        
        5. 表操作
            1.创建
                create table 表名(
                    字段名 类型(长度) 是否为空  是否为主键
                )
            2. 删除表
                drop table 表名;
            
            3.修改表的字段
                alter table 表名 add 字段名称 类型(长度) 约束条件;
                alter table 表名 drop 字段名称;
                alter table 表名 change 旧字段 新字段  类型(长度) 约束条件;
            
            4.查看表
                desc 表名;
        
        6.sql 增删改查
            6.1  新增
                insert into 表名 values(要求:字段的位置与个数必须一一对应)    
                insert into 表名(表字段名称,多个以“,”间隔)values(字段值多个以“,”间隔)
                insert into 表名2 (select * from 表名)
                
            6.2 修改
                update 表名 set 字段名=‘值’ where 字段名=‘条件值’
                
                update 表名 set 字段1 =‘值1’,字段2=‘值2’ where 字段1="条件1" and 字段2=‘条件2’
        
            6.3 删除
                delete from 表名 where 条件1 =‘值1’
                delete from 表名;
                
            6.4 清空表
                truncate 表名;
        
            6.5查询(核心)
                1.查询所有
                    select * from  表名;
                    select :表示查询
                    * :表示所有(通配符)
                    from :表示从哪个表进行查询
                注意:最好把“*”换成具体字段
                
                2.查询某两个字段
                    select 字段1,字段2 from 表名
                    
                3. 根据条件查询    
                    select * from 表 where 字段1 =‘值1’
                    where :表示条件,跟在where后面的统统称之为条件
                
                4. 多条件查询
                    select * from 表名 where 字段1=‘值1’ and/or 字段2=‘值2’ and/or 字段3=‘值3’
                    注意 and 表示并且
                         or 表示 或者
                
                5. 逻辑运算符查询
                    select * from 表 where 字段1 != 值1 and z2 >=v2
                    逻辑运算符: = ,<,>,!=,<>,<=,>=
                         
                6.模糊查询
                    select * from 表名 where 字段 like %羊蝎子
                    like :表示模糊查询
                    以什么开头: "s%"
                    以什么结尾:%s
                    包含: %s%
                         
                7 集合查询
                    select * from 表名 where 字段 in(值1,值2,值3)
                    in :表示 集合
                    not in:表示反向集合
                         
                8.区间查询
                    select * from 表 where 字段 between z1 and z2;
                    注意: between ... and ... 表示区间查询
                         
                9.排序
                    select * from 表 order by 字段 asc
                         
                    注意:order by  表示排序
                        正序: ASC 默认
                        倒序: DESC 
        
                10.嵌套查询         
                    select * from 表 where 字段 in(select 字段 from 表 where id=“值1”)
                    注意:()优先执行
                    总结: 遇到"="值唯一, 遇到in值为集合
                
                         
2.今日内容
    --- -------------聚合函数-------------------
    -- 11.查询当前人员中谁的工资最高?
    select max(p_sal) as p_sal from ren ;
    select p_name from ren where p_sal =(select max(p_sal) as p_sal from ren)
    注意: max() 表示最大值
        as 表示 起别名
        
    -- 12.查询当前人员中谁的工资最低?
    select p_name from ren where p_sal = (select min(p_sal) from ren)
    注意:min()表示最小值
    
    -- 13.查询所有人员的平均工资是多少?
    select AVG(p_sal) from ren     
    注意:avg():表示平均值
    
    -- 14.查询所有人员的工资总和是多少?
    select sum(p_sal) from ren
     注意 sum() 求和
    
    -- 15.查询目前有多少个人员?
    select count(p_id) from ren
    注意 count(主键) 表示查询表中数据的总条数
    
        
    
    -- 16.查询各门派的平均工资是多少?
    select avg(p_sal),p_menpai,p_name from ren GROUP BY p_menpai order by avg(p_sal) desc

    注意 group by   表示分组
    
    -- 17.查询武当派最高工资是谁?
    select p_name from ren where p_sal = (select max(p_sal) from ren where p_menpai =武当) and p_menpai =武当

    
    -- 18.查询当前武林中有哪些门派?
     select p_menpai from ren GROUP BY p_menpai;
    
    select DISTINCT p_menpai,p_name from ren
    注意:DISTINCT 表示去重复查询,要求查询的所有字段必须一样,才认为是重复数据
    
    
    -- 19.查询当前武林中有哪些门派和门派的平均工资是多少?
    select p_menpai,avg(p_sal) from ren GROUP BY p_menpai
    
    
    -- 20.查询当前人员表的中的第3条数据到第7条数据?
    select * from ren LIMIT 2,5
    注意 limit 表示分页
    参数1:表示从第几条开始查询,下标从0开始
    参数2:表示每次查询多少条数据
    
    -- 21.查询没有门派的人员有哪些?
    select * from ren where p_menpai is null;
    表示查询字段为 null 的数据
    select * from ren where p_menpai =‘‘;
    表示查询字段为 ‘‘ 的数据
    
    update ren set p_menpai = null where p_id=p008
    注意:修改字段为null 时 要写 =

    
    -- 22.查询武当派下有哪些小弟?

    select * from ren where p_leader =(select p_id from ren where p_menpai=武当 and p_leader=0)
    
·    select * from ren where p_menpai =武当 and p_leader !=0

    -- 23.查询各门派的工资总和按倒序/正序排列
    select sum(p_sal) sal,p_menpai from ren GROUP BY p_menpai ORDER BY sal

     
    -- 24.查询人员并显示门派所在位置(多表联合查询)
    select * from ren,wei where ren.p_menpai = wei.a_name    
    注意:如果多表联合查询不加条件则会出现(笛卡尔乘积)
    注意:在使用多表联合查询时,一定要加条件
    结果:符合两个表条件的结果    
        
    -- 25.查询人员表,如果人员门派存在位置则显示位置信息,不存在则不显示位置
    select * from ren LEFT JOIN wei on ren.p_menpai = wei.a_name    
    
    左连接查询
        注意:on  表示条件 专门配置 left  join 来使用
        特点:左表数据全要,右表的数据与左表数据相匹配则显示,不匹配则以NULL填充
        
        
    -- 26.查询位置表,如果人员的门派有位置信息则显示人员,没有则不显示.

    select * from ren RIGHT  JOIN wei on ren.p_menpai = wei.a_name        
        
    
    -- 27.查询登记了地理位置的门派人员信息

    select * from ren INNER JOIN wei on ren.p_menpai = wei.a_name
    
        
        
    作业:http://www.cnblogs.com/wangfengming/p/7944029.html
        
        
        
        
        
        
        
        
View Code

 

 

egon的博客链接:

http://www.cnblogs.com/linhaifeng/articles/7356064.html        ---密码是egon0127

http://www.cnblogs.com/wangfengming/p/7880853.html

 

数据库的由来:

描述事物的符号记录称为数据,描述事物的符号既可以是数字,也可以是文字、图片,图像、声音、语言等,数据由多种表现形式,它们都可以经过数字化后存入计算机

在计算机中描述一个事物,就需要抽取这一事物的典型特征,组成一条记录,就相当于文件里的一行内容,如:

1 egon,male,18,1999,山东,计算机系,2017,oldboy

单纯的一条记录并没有任何意义,如果我们按逗号作为分隔,依次定义各个字段的意思,相当于定义表的标题

1 name,sex,age,birth,born_addr,major,entrance_time,school #字段
2 egon,male,18,1999,山东,计算机系,2017,oldboy #记录

这样我们就可以了解egon,性别为男,年龄18岁,出生于1999年,出生地为山东,2017年考入老男孩计算机系

2 什么是数据库(DataBase,简称DB)

数据库即存放数据的仓库,只不过这个仓库是在计算机存储设备上,而且数据是按一定的格式存放的

过去人们将数据存放在文件柜里,现在数据量庞大,已经不再适用

数据库是长期存放在计算机内、有组织、可共享的数据即可。

数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种 用户共享

========================================================================================================================

我们要进行数据传输的时候只能通过文件来操作,但是文件操作的效率太低了,而且文件只能存在于一台电脑上面,查询或者更改之后只有自己可以看到,别人看不到的,

这样就很麻烦,基于这个考量我们有了数据库的存在,它是可以多用户共享,大家都能看到这个东西,而且你有任何的改变别人也可以直接在自己的电脑上面看到结果.

但是由于数据库的庞大,导致了我们使用的时候要有规范,即数据库语言,通过这一套的规范流程,大家都基于此访问数据库,就完美的达到了想要的效果,实现了效率最大化.

那么就开始来学习数据库语言了.

首先要有库才能有数据,所以我们要先建立库,---create database 库名 这句命令行就是创建库. create就是创建,然后database,就是库,

--------

create database 库名 这句命令行就是创建库.  库创建了之后就要基于它进行操作

drop database 库名  删除库,

show databases 显示所有存在的库

use 库名 进入指定的库 

 

然后我们有了库之后就开始在库里面进行操作,最重要的是库里面的表,即Excel表的表,当然了这里并不是Excel,

在库里创建表

---------

create table 表名(字段名  字段类型 字段类型长度  是否为主键 是否为空 , 字段名 字段类型 字段类型长度 是否为空 )这里的字段名就是Excel表里面的表头, 然后字段类型就是数据类型,有字符串,数字, 固定长度的字符串,不固定长度的,时间类型的字符串.....数据里面有整数,小数,大整数(bigint,他的长度要比int长,没错,整数都是有上限的,不能够无限大,)等等.所谓的主键就是字段里面的唯一的那个字段,也就是说表头里面的其中一个表头是唯一的,在这些条件限制里面,字段名必须要有,而且不能能够有重复的,字段类型也是必须要有的,没有那些必要条件是会报错的.

create table 表名(
字段名1 类型[(宽度) 约束条件],
字段名2 类型[(宽度) 约束条件],
字段名3 类型[(宽度) 约束条件]
);

#注意:
1. 在同一张表中,字段名是不能相同
2. 宽度和约束条件可选
3. 字段名和类型是必须的

drop table 表名 删除整张表
update 表名 set 字段名2=值2 where 字段1=值1 修改表
delete from 表名 where 字段名=值 删除表里面的其中一条内容,
insert into 表名 (字段名)values(字段对应的值) 新增加的内容,可以增加多个,一般都是多个一起增加,类似于字典里的键对值,如果value就是只增加一个,
show tables 查看该库下面所有的表


例如:

语法:
1. 修改表名
ALTER TABLE 表名
RENAME 新表名;

2. 增加字段
ALTER TABLE 表名
ADD 字段名 数据类型 [完整性约束条件…],
ADD 字段名 数据类型 [完整性约束条件…];
ALTER TABLE 表名
ADD 字段名 数据类型 [完整性约束条件…] FIRST;
ALTER TABLE 表名
ADD 字段名 数据类型 [完整性约束条件…] AFTER 字段名;

3. 删除字段
ALTER TABLE 表名
DROP 字段名;

4. 修改字段
ALTER TABLE 表名
MODIFY 字段名 数据类型 [完整性约束条件…];
ALTER TABLE 表名
CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…];
ALTER TABLE 表名
CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];

 

字段的一些操作示例:

示例:
1. 修改存储引擎
mysql> alter table service
-> engine=innodb;

2. 添加字段
mysql> alter table student10
-> add name varchar(20) not null,
-> add age int(3) not null default 22;

mysql> alter table student10
-> add stu_num varchar(10) not null after name; //添加name字段之后

mysql> alter table student10
-> add sex enum(‘male‘,‘female‘) default ‘male‘ first; //添加到最前面

3. 删除字段
mysql> alter table student10
-> drop sex;

mysql> alter table service
-> drop mac;

4. 修改字段类型modify
mysql> alter table student10
-> modify age int(3);
mysql> alter table student10
-> modify id int(11) not null primary key auto_increment; //修改为主键

5. 增加约束(针对已有的主键增加auto_increment)
mysql> alter table student10 modify id int(11) not null primary key auto_increment;
ERROR 1068 (42000): Multiple primary key defined

mysql> alter table student10 modify id int(11) not null auto_increment;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0

6. 对已经存在的表增加复合主键
mysql> alter table service2
-> add primary key(host_ip,port);

7. 增加主键
mysql> alter table student1
-> modify name varchar(10) not null primary key;

8. 增加主键和自动增长
mysql> alter table student1
-> modify id int not null primary key auto_increment;

9. 删除主键
a. 删除自增约束
mysql> alter table student10 modify id int(11) not null;

b. 删除主键
mysql> alter table student10
-> drop primary key;

复制表:

复制表结构+记录 (key不会复制: 主键、外键和索引)
mysql> create table new_service select * from service;

只复制表结构
mysql> select * from service where 1=2; //条件为假,查不到任何记录
Empty set (0.00 sec)
mysql> create table new1_service select * from service where 1=2;
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> create table t4 like employees;

 

数据类型集锦:

http://www.cnblogs.com/linhaifeng/articles/7233411.html                egon博客密码egon0127

对于字段的约束:

http://www.cnblogs.com/linhaifeng/articles/7238814.html              同上,egon博客

 

 

 

这里的内容是关键中的重点:
对于表的查询:

http://www.cnblogs.com/linhaifeng/articles/7267592.html
http://www.cnblogs.com/linhaifeng/articles/7372774.html
以上都是egon博客 egon0127





 

day38 数据库 note1

标签:birt   oracl   close   color   pen   描述   ora   pre   主键   

原文地址:http://www.cnblogs.com/2012-dream/p/8016945.html

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