数据库

Posted 球球啦啦啦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库相关的知识,希望对你有一定的参考价值。

数据库
    定义:存储数据的仓库,本质是文件系统,可以对数据增删改查等操作

    数据库管理系统:用于建立、使用维护数据库的大型软件,保证数据库的安全。通过管理系统访问其中数据

    常见数据库:
        mysql    :开源免费的数据库,小型的数据库.已经被Oracle收购了.MySQL6.x版本也开始收费。
        Oracle    :收费的大型数据库,Oracle公司的产品。Oracle收购SUN公司,收购MYSQL。
        DB2        :IBM公司的数据库产品,收费的。常应用在银行系统中.
        SQLServer:MicroSoft 公司收费的中型的数据库。C#、.net等语言常使用。
        SyBase    :已经淡出历史舞台。提供了一个非常专业数据建模的工具PowerDesigner。
        SQLite    : 嵌入式的小型数据库,应用在手机端。
        Java相关的数据库:MYSQL,Oracle.
    
    数据库在系统服务:
        开启/关闭:
            方式1: 我的电脑-----> (右键)管理---->服务和应用程序---->服务----找到MySQL服务右键启动或关闭 
            方式2: 进入dos窗口 使用命令: net start mysql 开启MySQL服务;  命令:net stop mysql 关闭MySql服务
        登陆MySQL:
            格式1:cmd>  mysql –u用户名 –p密码
            例如:mysql -uroot –proot
        
            格式2:cmd>  mysql --host=ip地址 --user=用户名 --password=密码
            例如:mysql --host=127.0.0.1  --user=root --password=root
    SQL分类:
        数据定义语言:DDL,用来定义数据库对象:数据库,表,列等。关键字:create,alter,drop等 
?        数据操作语言:DML,用来对数据库中表的记录进行更新。关键字:insert,delete,update等
?        数据控制语言:DCL,用来定义数据库的访问权限和安全级别,及创建用户。
?        数据查询语言:DQL,用来查询数据库中表的记录。关键字:select,from,where等
    语法:不分大小写 分号结尾
    数据类型:int:整型  double:浮点型  varchar 字符串型  date 日期类型(yyyy-MM-dd)只有年月日
    
数据库操作:
    创建数据库:
         create database 数据库名;
         create database 数据库名 character set 字符集;
    查看数据库:
        查看所有:show databases;
        查看某一个:show create database 数据库名;
    删除数据库:
        drop database 数据库名称;
    切换数据库:
        use 数据库名;
    查看正在使用的数据库:
        select database();
        
        
数据表操作:
    创建表:
        create table 表名(
            字段名 类型(长度) 约束,
            字段名 类型(长度) 约束
        );
    主键约束:
        1.在创建表时创建主键,在字段后面加
            create table tablename(    
                id int primary key,
                .......
            )
        2. 在创建表时创建主键,在表创建的最后来指定主键
            create table tablename(    
                id int,
                .......,
                primary key(id)
            )
    删除主键:
        alter table 表名 drop primary key;
    主键自动增长:主键字段后加auto_increment(只适用MySQL)
    查看表:
        查看所有:show tables;
        查看表结构:desc 表名;
    删除表:
        drop table 表名;
        
    修改表结构:altrt table 表名
        添加列:?    alter table 表名 add 列名 类型(长度) 约束;
        修改列的类型长度及约束:?alter table 表名 modify 列名 类型(长度) 约束;
        修改列名:?    alter table 表名 change 旧列名 新列名 类型(长度) 约束;
        删除列:?    alter table 表名 drop 列名;
        修改表名    rename table 表名 to 新表名;
        修改表的字符集:?alter table 表名 character set 字符集;

    添加数据:insert into 表名
        常规:insert insert into 表名(列名1,列名2,列名3)values(值1,值2,值3) (可忽略主键)
        简写:insert into 表 values (值1,值2,值3..); --向表中插入所有列  (不能忽略主键)
        一次加多个:insert into 表名 (列名1,列名2,列名3) values (值1,值2,值3),(值1,值2,值3);
INSERT INTO product (id,pname,price) VALUES (1,笔记本,5555.99);

 添加数据格式,不考虑主键
INSERT INTO product (pname,price) VALUES(洗衣机,800);

添加数据格式,所有值全给出
INSERT INTO product VALUES (4,微波炉,300.25);

 添加数据格式,批量写入
INSERT INTO product (pname,price) VALUES 
(智能机器人,25999.22),
(彩色电视,1250.36),
(沙发,5899.02)

 


        注意:    在values中列出的数据位置必须与被加入列的排列位置相对应。
                对于自动增长的列在操作时,直接插入null值即可
                除了数值类型外,其它的字段类型的值必须使用引号引起
    

    更新表记录:update 表名 set 
        update 表名 set 字段名=值,字段名=值;(全改,慎用!)
        update 表名 set 字段名=值,字段名=值 where 条件;

        如:UPDATE sort SET sname=‘日用品‘ WHERE sid=‘s002‘;
    
    条件查询where的写法:(用id举例子)
        id=6
        id<>6 id不等于6
        id<=6 
        id in(1,3,4,5,6) 包含在内的
        多个条件同时成立:and  
        多个条件任一成立:or 
        不成立:not
        between...and...  之间被修改(小值在前,含头尾)
        like :    % 用来匹配多个字符;例first_name like ‘a%’/‘%a’/‘%a%’;
            _ 用来匹配一个字符。例first_name like ‘a_’;(一个下划线代表一个字符,可用于查询几个字符)
        

    删除表:
        删具体某一条:
        delete from 表名 [where 条件];
        删整表:
        delete from 表名;
        truncate table 表名;

        删整表的区别:    
            delete 一条一条删除,不清空auto_increment记录数。
            truncate 直接将表删除,重新建表,auto_increment将置为零,从新开始。

    DOS乱码:
        查看所有mysql的编码: show variables like ‘character%‘; 
    
        一次性修改:set xxx=gbk;/set names gbk;

        永久修改:default-character-set=gbk 客户端编码设置
                character-set-server=utf8 服务器端编码设置    
               注意:修改完成配置文件,重启服务

查询语句:
        查询指定字段信息:select 列名1,列名2 from 表名;    
        查询所有字段:select * from 表名;
        去重查询:select distinct 字段 from 表名;
        查询重命名列:select 字段名 as 别名 from 表名;(临时改名,实质没改)
        查询中进行数学计算:select 列名1,列名2+1000 from 表名;
        
    排序查询:(先过滤条件,在排序)
        升序:order by 列名 [asc]  (升序可不写asc)
            【SELECT * FROM product ORDER BY stock;】
        降序:order by 列名 [desc]
            【SELECT * FROM product ORDER BY stock DESC;】
            
    聚合函数查询计算(竖列计算):
        count 求和 select count(列名) from 表名;
            SELECT COUNT(*) AS‘price‘ FROM product; //所有列和
            SELECT COUNT(price) FROM product;  //对price列求和
        sum 求和  select sum(列名)  from 表名;
            select sum(zmoney) from zhangwu where zname like ‘%收入%‘; //对所有金额列中的收入求和
        max/min 求最值 select max(列名)  from 表名; 
        avg(列名) 求均值  【不计null】
    
    分组查询:group by 列名          
                select sum(zmoney)
                as ‘getsum‘,zname from zhangwu 
                where zname like ‘%支出%‘ 
                group by getsum order by zname;
            
                SELECT 字段1,字段2… FROM 表名 GROUP BY 字段 HAVING 条件;
                
        having&where区别:
            ?    having是在分组后对数据进行过滤.
                where是在分组前对数据进行过滤
?                having后面可以使用分组函数(统计函数)
                where后面不可以使用分组函数。
            


        
    

 

以上是关于数据库的主要内容,如果未能解决你的问题,请参考以下文章

部分代码片段

将代码片段插入数据库并在 textarea 中以相同方式显示

python 用于数据探索的Python代码片段(例如,在数据科学项目中)

如何在片段中使用 GetJsonFromUrlTask​​.java

Android 使用两个不同的代码片段获取当前位置 NULL

解决方案电影标题中缺少代码的片段,完成挑战更多[关闭]