zoukankan      html  css  js  c++  java
  • MySql入门

    一、数据库入门
                    -------存放数据的仓库【和集合类似】,并有一定的规则结构
        一】SQL=Structure Query Language 【结构化的查询语言】
            SQL是客户端操作数据库的一种工具/命令,主要以存取为主
        二】各种常用数据库简介
            Oracle/Java
            SQLServler/Microsoft
            DB2/IBM
            Linux+Apache+MySQL+PHP(最适合的配置)
        三】SQL[通用/特定]与数据库的关系
            1)每种关系型数据库都支持的SQL命令,叫做通用SQL。
            2)每种关系型数据库都根据自身数据库的特点,量身定做的SQL,叫做特定SQL。
        四】登录与退出
            1)登录MySQL:>mysql -u root -p
                                        >******
            2)退出MySQL:>exit

    二、数据库操作
        一】数据库服务器、数据库和表以及记录的关系
            见图。
        二】Java对象世界和SQL关系世界的关系
            类User  <===>      表USER
            对象user<===>   记录(行)
            属性    <===>   字段(列)
        三】操作数据库(SQL命令大小写无关。)
            1)创建数据库:
                    create database [if not exists] 【数据库名】[character set 【字符集】[collate utf8_general_ci]];//[]中的内容为可选的
                    
                    可选参数:
                        if not exists :如果不存在则创建,如果存在就不创建此数据库。
                        character set 【字符集】:指定此数据库采用的字符集。
                        collate 【字符校验规则】:和字符集一一对应,show character set;命令可以查看。
                    
                code:
                    create database mydb1;//创建数据库mydb1
                    create database mydb2 character set UTF8;//创建数据库mydb2并设置字符集为UTF8
                    create database if not exists mydb3 character set UTF8 collate utf8_general_ci;//创建一个使用utf8字符集,并带校对规则的mydb3数据库。
        
            2)显示数据库语句
                    show databases;//查看当前数据库服务器中的所有数据库。
                    code:
                        
            3)使用数据库
                    use db_names;
            4)删除数据库
                    drop database [if exists] db_name;
            5)查看前面创建的数据库的定义信息
                    show create database db_name;
                    
        四】修改、备份、恢复数据库
            1)修改数据库:
                        ---只能修改字符集和字符校验规则。
                    
                    alter database    db_name [character set 【字符集】 collate 【字符校验规则】]
                        alter database mydb3 character set gbk;//将mydb3库的字符集修改为gbk
                
         2)备份数据库:【mySQL特有命令】
                 =(备份到的文件)
                 *********(密码)
             
                 注意:
                         1》该命令是mySQL特有命令
                         2》在>中执行,并非mysql>环境中使用。
                         3》结尾可以不用加分号表示结束
        3)恢复数据库【mySQL特有命令】
                source 【本分文件路径】;
                
                code:
                    source d:mydb2.sql;
                注意:
                        1》该命令是mySQL特有命令
                        2》在mysql>环境中使用
                        3》结尾需要加分号表示结束
        
        五】表
            1)创建表
            
                create table table_name
                (
                    filed1 datatype,
                    filed2 datatype,
                    filed3 datatype
                )[character set 【字符集】 collate 【校对规则】];
                
                
                filed:指定列名
                datatype:指定列类型
                
                code:
                    创建一张表,含有id/name/password/birthday字段
                    create table user(
                        id int,
                        name varchar(20),
                        password varchar(6),
                        birthday date
                    );
                
                
                注意:
                    1》创建表前要使用use dbname语句指明使用的数据库。
        2)修改表的列
                1》追加列
                    alter table 【表名】
                    add     【列名】 datatype [default 默认值][,【列名】 datatype    [default 默认值]];
                    
                2》修改列
                    alter table 【表名】
                    modify     【列名】 datatype [default 默认值] [,【列名】 datatype [default 默认值]];
                    
                3》删除列
                    alter table    【表名】
                    drop      【列名】;
                    
        3)修改表的名称
                rename table 【原表名】 to 【新表名】;
        4)修改表的字符集
                alter table 【表名】 character set 【字符集】;
        5)删除表
                drop table [if exists] table_name;
        6)修改列名(其功能还包括修改列数据)
                alter table user
                change column 【原列名】 【新列名】 datatype;
            code:
                修改列名name为username:
                alter table user
                change column name username varchar(20);
        7)其它:
            查看表的描述结构
                desc 【表名】;
          显示数据库中所有的表
                show tables;
            显示表的创建信息
                show create table 【表名】;
            


    三、MySQL常用数据类型
        一】时间日期
            1)date
                格式为:'2011-10-23'
                
                code:
                    create table user(
                        id int,
                        name varchar(20),
                        password varchar(6),
                        birthday date
                    );
                    insert into user(id,name,password,date)  values(1,'jack','568231252','2011-10-23');
            2)datetime        
                格式为:'2011-10-23 17:17:17'
                code:
                    create table user(
                        id int,
                        name varchar(20),
                        password varchar(6),
                        birthday datetime
                    );
                    inser into user(id,name,password,date) values(1,'jack','568231252','2011-10-23 17:17:17');
                    
            3)timestamp(登录时间)【翻译:时间戳】
                没有设置时间的时候数据库会默认自动加上当前的系统时间。
                    create table user(
                        id int,
                        name varchar(20),
                        password varchar(6),
                        birthday timestamp
                    );
                
                
                code:
                    ·date类型:

                        create table date(
                            birthday date
                        );
                        
                        show tables;
                        
                        desc date;
                        
                        insert into date(birthday)  values('2011-3-21');
                        desc date;
                        select * from date;
                        
                        
                        ·datetime类型:
                        
                        create table datetime(
                            birthday datetime
                        );
                        show tables;
                        desc datetime;
                        select * from datetime;
                        
                        insert into datetime(birthday) values('1992-09-12 01:34:25');
                        desc datetime;
                        select * from datetime;
                        
                        
                        ·timestamp(时间戳)
                        
                        create table timestamp(
                            id int,
                            birthday timestamp
                        );
                        
                        show tables;
                        desc timestamp;
                
            二】字符类型
                    char(size)      固定长度
                    varchar(size)        可变长度(自动节省空间)
                    注意:
                            size最大为65536.
                    
            三】text文本数据类型和bolob二进制数据类型    (比varchar更长的类型)
                tinytext/text/mediumtext/longtext --> 255B/64K/16M/4G大小的文本数据。
                tinyblob/blob/mediumblob/longblob --> 255B/64K/16M/4G大小的图片/音乐等二进制数据
                
                code:
                    create table user(
                        bz text,
                        photo blob,
                        mp3    blob
                    );
                    
                    
            四】数值类型
                1)bit(M):位,M为1~64
                2)int类型 【有无符号(默认)和有符号之分】
                    tinyint[(N)]    [unsigned] [zerofill]        1个字节
                    smallint[(N)]    [unsigned] [zerofill]        2个字节
                    mediumint[(N)]    [unsigned] [zerofill]    3个字节
                    int[(N)]                [unsigned] [zerofill]    4个字节
                    bigint[(N)]        [unsigned] [zerofill]        8个字节
                    
                    注意:
                        N相当于C语言中的字节对齐。eg:5 表示数据占5位,且右对齐;若实际数据超过5位也完全显示输出,不会截断。
                    code:
                    create table user(
                        id int(5)
                    );
                    inser into user(id) values(99999);//ok的
                3)float类型
                    float[(m,d)][unsigned][zerofill]
                        m:代表显示的长度(不包括小数点,截取后的数据不允许超过长度)
                        d:指定小数的位数(截取的时候会四舍五入)
                        
                    code:
                        create table user(
                            salary float(6,2)
                        );
                        insert into user(salary) values(1234.12);
                        insert into user(salary) values(1234.123);//1234.12
                        insert into user(salary) values(1234.125);//1234.13
                        insert into user(salary) values(123445.12);//errror
            
            
            
            注意:
                    1》定界符使用''或者"",但部分数据库不支持"",优先推荐''作为定界符。
                    2》对于日期类型,MySQL数据库有一定的判断功能,写入'2011-10-32'就会错误         
                    3》MySQL分为两类:
                            MyISAM数据库引擎(非关系型数据库):不支持表与表之间的查询,但查询速度快。
                            InnoDB数据库引擎(关系型数据库):支持表与表、支持事务安全,但查询速度稍慢。
            


    四、MySQL中中文的编码问题
        思路:通过设置数据库对于各部分的编码方式来进行,而windows
                    平台下的的编码方式为gbk/gb2312,所有有关部分设置为gbk/gb2312即可。
                    
        一】暂时修改
            1》show variables like 'character%';//查看当前数据库对于各个部分的编码方式
            2》set character_set_results=gbk;//设置输出到客户端的编码方式为gbk.
            3》set character_set_client=gbk;// 设置客户端输入的编码方式为gbk.    
            4》set character_set_connection=gbk;//设置连接的编码为gbk
                注意:
                    1》再次进入后,查看结果则会出现乱码,即上次的设置是暂时的
        二】长久修改
            修改配置文件:my.ini.
                修改客户端的缺省编码方式为下列值
                    default-character-set=gbk或gb2312
                注意:此种方法需要重新启动MySQL服务。
    五、数据库的CRUD语句
        一】Insert语句
            格式:
                INSERT INTO    【表名】 [(column [, column...])]
                VALUES        (value [, value...]);
                
            code:
                    insert into user values(value1, value2...);//此种方式必须符合表的默认格式
                    insert into user(id,username,salary,image) values(5,'马利',10000.123,null); //此种方式必须符合前面括号内的列的格式
            注意:
                插入空值,不指定或者insert into table value(null)
                
        二】update语句
            UPDATE     tbl_name
            SET col_name1=expr1 [, col_name2=expr2 ...]
            [WHERE where_definition]
            
            code:
                update user
                set salary= 6000
                where username='马利';
                
                //将jack的薪水在原有基础上增加1K
                update user
                set salary=salary+1000
                where username='jack';
                
        三】delete from语句/truncate table
        
                delete from tab_name
                [WHERE where_definition]
                
                1>删除表中名称为'jack'的记录
                    delete from user where username='jack';
                2>删除所有记录
                    delete from user;
                3>使用truncate删除表中记录
                    truncate table user;
                    
            总结:删除表的记录的方法
                1》delete from
                    按行删除表中的记录,但是会保留表结构和表本身。
                    适合删除数据量不大的数据。
                    code:
                    delete from user
                    where username='jack';
                2》truncate table
                    复制原表结构-->一次性删除整个表-->自动按照原表结构再创建一个空表
                    适合删除数据量较大的数据,不能按条件删除一行数据。    
                    code:
                        truncate table user;
                3》drop table
                    删除表本身
                    code:
                        drop table user;
                        
                注意:删除记录的时候,一定要注意表之间的关联关系。
                        
        四】查询    
            1》
            SELECT [DISTINCT] *|{column1|expression, column2|expression,..}
            FROM    table
            where 【条件】;        
            
            参数:    
            column指定列名。
            *号代表查询所有列。
            From指定查询哪张表。
            expression:表达式
            DISTINCT可选,指显示结果时,是否剔除重复数据
            
            2》SELECT column as 【列名别名】 from 【表名】;
            code:
                select name as 姓名,math+10 as 数学 from student;

    五、where过滤器
        出现在from后面,where是按行筛选。
        1》比较运算符
            between ...and...        显示某一区间的值
            in(set)                        在set集合中的值
            like '关键字pattern'    模糊查询  【%:零个或多个任意字符,_:一个任意字符;】
            is null / is not null    是否为空
        2》逻辑运算符    
            and/&&        多个条件同时成立
            or/||            多个条件任一成立
            not/!            不成立
        详见ppt。
        
        
    六、排序子句
            格式:
            SELECT column1, column2. column3..
            FROM    table
            order by column asc|desc;
            1》升序
            order by 【列名|表达式】[as 【别名】] asc;
                或者
                order by 【列名|表达式】[as 【别名】];
            2》降序
                order by 【列名|表达式】 [as 【别名】]desc;
            注:
                1》NULL值为最小。
                2》默认为升序。
                3》升序:asc.降序:desc.
                4》order    by语句必须放在最后。
                
                
    七、函数
        统计某列中的某行数据,若为*,取最大值。
        一】合计函数——count()
            Select count(*)|count(列名) from tablename
            [WHERE where_definition]
            注意:
                    1》Count(列名)返回某一列,行的总数
                    2》不统计NULL
        二】合计函数——sum()
            Select sum(列名)
            from tablename
            [WHERE where_definition]
            注意:
                1》Count(列名)返回某一列中行的总值
                2》统计非数值类型,返回0,无意义。
                
            
        三】平均函数-avg()
            Select avg(列名){,avg(列名)…}
            from tablename
            [WHERE where_definition]
            注意:
                AVG函数返回满足where条件的一列的平均值
            code:
                select avg(chinese+math+length)
                from student;
                
        四】最大和最小函数-max()和min()
            1》最大值
                Select max(列名) 
                from tablename
                [WHERE where_definition]
            2》最小值
                Select min(列名) 
                from tablename
                [WHERE where_definition]
            注意:
                1》可以对字符类型进行取值。根据码表。
                2》可以对date类型进行取值。max:最大日期。min:最小日期。
                
        注意:在网站中,多条件查询中用到
            select *
            from student
            where name like '%%';
            
            
            
            注意:这些函数常常于group by子句进行联用,其值则是对分组后每行中合并的列进行求值而得。
            eg:
                
            
            
        五】group by 子句
            作用:对表中内容按照列的类别进行分组
            格式:
                SELECT column1, column2. column3..
                FROM    table;
                group by column
                
        六】having 子句
            作用:过滤.
            SELECT column1, column2. column3..
            FROM    table;
            group by column
            having ...
            
        注意:where和having的区别:
            1》where:主要用于行过滤器
            2》having主要用于类别过滤器,通过用于group by后,
                                having可以使用合计函数。

        补充:#是sql的注释语句。

  • 相关阅读:
    Java自学笔记(13):【面向对象】方法覆盖,final关键字,对象转型
    Java自学笔记(12):【面向对象】继承,super关键字,继承下的访问控制权限
    Java自学笔记(11):【面向对象】 package,import,访问控制修饰符,static
    计算机领域会议和期刊
    powershell真香
    C语言博客作业--结构体
    C博客作业--指针
    C语言博客作业--字符数组
    C语言博客作业--一二维数组
    C语言博客作业--数据类型
  • 原文地址:https://www.cnblogs.com/SkyGood/p/3999542.html
Copyright © 2011-2022 走看看