zoukankan      html  css  js  c++  java
  • Java Web总结十一MySql数据库

    登录MySQL数据库的命令:在windows命令窗口下输入:mysql -u root -p回车后再输入密码。

    一、创建数据库

      1、语法:create database [if not exists] db_name [character set] [collate];

      2、相关解释:1)character set:指定数据库采用的字符集。

              2)collate:指定数据库字符集的比较方式、规则,比如排序。

      3、案例:

        1)创建一个名称为mydb1的数据库。

          create database if not exists mydb1;

        2)创建一个使用utf8字符集的mydb2数据库。

          create database if not exists mydb2 character set utf8;

        3)创建一个使用utf8字符集,并带校对规则的mydb3数据库。

          create database if not exists mydb3 character set utf8 collate utf8_general_ci;

    二、查看、删除数据库

      1、显示所有数据库:

        show databases;

      2、显示某个数据库的创建语句:

        show create database db_name;

      3、使用某一个数据库:

        use db_name;

      4、数据库删除语句:

        drop database [if exists] db_name;

      5、案例:

        1)查看当前数据库服务器中的所有数据库。

          show databases;

        2)查看前面创建的mydb2数据库的定义信息。

          show create database mydb2;

        3)删除前面创建的mydb1数据库。

          drop database if exists mydb1;

    三、修改、备份、恢复数据库数据

      1、修改数据库

        1)语法:alter database db_name [character set] [collate];

        2)注意:修改数据库只能修改数据库的编码和校对规则,不能修改数据库的名字。

      2、备份数据库表中的数据

        首先退到window命令行窗口,然后输入以下语句:

        mysqldump -u 用户名 -p 数据库名 > D:文件名.sql

      3、恢复数据库

        首先进入mysql控制台,输入以下命令:

        source d:文件名.sql

      4、案例:

        1)查看服务器中的数据库,并把其中mydb3库的字符集修改为utf8。

          alter database mydb3 character set utf8; 

        2)备份mydb2数据库中的数据,并恢复。

          1、退到Window命令行窗口输入:mysqldump -u root -p mydb2 > D:mydb2.sql

          2、进入MySQL数据库服务器:mysql -u root -p

          3、执行恢复操作:source d:mydb2.sql

    四、创建表

      1、注意:创建表前,要先使用use dbname语句使用库。

      2、语法:

        create table table_name (field1 datatype,field2 datatype,field3 datatype) character set 字符集 collate 校对规则;

      3、解释:field:指定列名  datatype:指定列类型。

      4、案例:

        创建一个员工表,并指明字符集为utf8。包括以下字段和对应的数据类型:id:整型;name:字符型;sex:字符型;birthday:日期型;entry_date:日期型;job:字符型;salary:小数型;resume:大文本型。

        create table employee (id int,name varchar(50),sex char(2),birthday date,entry_date datetime,job varchar(100),salary float,resume text) character set utf8;

      5、显示表的所有字段和数据类型信息:desc table_name。

    五、修改表

      1、增加列:

        alter table table_name add (column_name datatype);

      2、修改列:

        1)修改列的数据类型:alter table table_name modify (column_name datatype);

        2)修改列的名称:alter table table_name change column 原列名 新列名 数据类型;

      3、删除列:

        alter table table_name drop column_name;

      4、修改表的名称:

        rename table 原表名 to 新表名

      5、修改表的字符集:

        alter table student character set utf8;

      6、案例:

        1)在员工表的基础上增加一个image列。

          alter table employee add image varchar(20); 

        2)修改job列,使其长度为60。

          alter table employee modify job varchar(60);

        3)删除sex列。

          alter table employee drop sex;

        4)表名改为user。

          rename table employee to user; 

        5)修改表的字符集为utf8。

          alter table user character set utf8;

        6)列名name修改为username。

          alter table user change column name username varchar(20);

    六、解决windows平台,中文正确输入和输出的方法

      1、显示所有以character开头的变量:show variables like 'character%';

      2、修改character_set_client为:set character_set_client=gbk;

      3、修改character_set_results为:set character_set_results=gbk;

      4、这样的修改只有在当前窗口中有效。

    七、数据库的CRUD语句

      1、insert语句

        1)语法:insert into table_name(column_name) values(value);

        2)注意:

          a、字符和日期型数据应包含在单引号中。

          b、插入空值,不指定或insert into table_name value(null);

          c、如果要插入中文,先按上面第六步进行处理。

      2、update语句

        1)语法:update table_name set column_name=value where 条件

        2)案例:

          1、将所有员工薪水修改为5000。

            update user set salary=5000;

          2、将姓名为“张晓明”的员工薪水修改为6000元。

            update user set salary=6000 where username='张晓明';

          3、将“张晓明”的薪水在原有的基础上增加1000元。

            update user set salary=salary+1000 where username='张晓明';

      3、delete语句

        1)语法:delete from table_name where 条件;

        2)注意:使用delete语句仅删除记录,不删除表本身。如要删除表,使用drop table语句。

             删除表中数据也可使用truncate table语句,它和delete语句有所不同。

        3)案例:使用truncate删除表中记录。

             truncate table user;

      4、select语句

        1)语法:select [distinct] * | {column1,column2,...} from table_name;

        2)解释:distinct可选,指显示结果时,是否剔除重复数据。

        3)案例:

          1、查询表中所有学生的信息。

            select * from student;

          2、查询表中所有学生的姓名和对应的英语成绩。

            select name,english from student;

          3、过滤表中的重复数据。

            select distinct * from student;

        4)在select语句中课使用表达式对查询的列进行运算。

        5)在select语句中可使用as语句。

          select column_name as 别名 from 表名;

        6)案例:

          1、在所有学生基础上加10分特长分。

            select name, chinese+10,english+10,math+10 from student;

          2、统计每个学生的总分。

            select name,chinese+english+math from student;

          3、使用别名表示学生分数。

            select name,chinese+english+math as 总分 from student;

        7)模糊查询like的用法:

          1、%代表零个或多个任意字符;

          2、_代表一个字符

        8)案例:

          1、查询英语分数在80-90之间的学生。

            select * from student where english between 80 and 90;

          2、查询数学分数为89,90,91的同学。

            select * from student where math in(89,90,91);

          3、查询所有姓“李”的学生成绩。

            select * from student where name like "李%";

          4、查询数学分>80且语文分>80的同学。

            select * from student where math>80 and chinese>80;

        9)使用order by子句排序查询结果。

          1、语法:select column1,column2,...from table_name order by column_name asc | desc;

          2、order by指定排序的列,排序的列既可以是表中的列名,也可以是select子句后指定的列名。

          3、asc:升序;desc:降序。

          4、order by子句位于select语句的结尾。

          5、案例:

            (1)对数学成绩排序后输出。

              select * from student order by math desc;

            (2)对总分排序后输出。

              select name,math+chinese+english as 总分 from student order by 总分 desc;

            (3)对姓“李”的学生总分排序输出。

              select name,chinese+math+english as 总分 from student where name like '李%' order by 总分 desc;

        10)使用group by子句对列进行分组:

          1、语法:select column1,column2,...from table_name group by column_name;

          2、案例:

            对订单表中商品归类后,显示每一类商品的总价。

            select product ,sum(price) as 总价 from orders group by product;

        11)使用having子句组过滤

          1、语法:select column1,column2,...from table_name group by column_name having ...;

          2、案例:

            查询购买了几类商品,并且每类总价大于100的商品。

            select product,sum(price) from orders group by product having sum(price)>100;

        12)having和where均可实现过滤,但在having可以使用合计函数,having通常跟在group by后,它作用于组。

    八、函数

      1、合计函数count()

        1)语法:select count(*) | count(列名) from table_name [where条件];

        2)count(列名)返回某一列,行的总数,除null外。

        3)案例:

          a、统计一个班级共有多少学生?

            select count(*) from student;

          b、统计数学成绩大于80的学生有多少个?

            select count(math) from  student where math>80;

          c、统计总分大于250的人数有多少个?

            select count(*) from student where math+chinese+english>250; 

      2、合计函数sum()

        1)语法:select sum(列名) {,sum(列名),...}from table_name where 条件。

        2)sum函数返回满足where条件的行的总和。

        3)sum仅对数值起作用;对多列求和,“,”不能少。

        4)案例:

          a、统计一个班级数学总成绩。

            select sum(math) from student;

          b、统计一个班级语文、数学、英语各科的总成绩。

            select sum(chinese) as 语文总成绩,sum(math) as 数学总成绩,sum(english) as 英语总成绩 from student;

          c、统计一个班级语文、数学、英语的成绩总和。

            select sum(chinese+math+english) as 三门课成绩总和 from student;

          d、统计一个班级语文成绩平均分。

            select sum(chinese)/count(*) as 语文平均成绩 from student;

      3、平均函数avg()

        1)语法:select avg(列名){,avg(列名),...} from table_name where 条件;

        2)avg()函数返回满足where条件一列的平均值。

        3)案例:

          a、求一个班级数学平均分。

            select avg(math) as 数学平均分 from student;

          b、求一个班级的总分平均分。

            select avg(chinese+math+english) from student;

      4、最大最小值函数max()/min()

        1)语法:select max(列名) from table_name where 条件。

        2)max/min函数满足where条件的一列的最大/最小值。

        3)案例:

          a、求班级最高分和最低分。

            select max(math+english+chinese) as 最高分,min(chinese+math+english) from student;

    九、定义表的约束

      1、primary key:不允许为空,不允许重复。

        删除主键:alter table table_name drop primary key;

      2、定义主键自动增长

        auto_increment(MySQL特有/UUID类生成)。

      3、定义唯一约束:unique

      4、定义非空约束:not null

      5、定义外键约束:

        constraint ordersid_FK foreign key(ordersid) references orders(id);

  • 相关阅读:
    FunctionGraph无缝集成Express应用
    三分钟迁移Spring boot工程到Serverless
    分布式数据库中间件使用经验分享
    基于OAS设计可扩展OpenAPI
    从一次小哥哥与小姐姐的转账开始, 浅谈分布式事务从理论到实践
    分布式数据库DDM Sidecar模式负载均衡
    Redis缓存数据库安全加固指导(二)
    数据存储课后作业
    GrideVlew提供点击按钮添加新数据,单击项目修改,长按删除功能
    AutoCompleteTextView,Spinner,消息提示
  • 原文地址:https://www.cnblogs.com/FlySheep/p/3646958.html
Copyright © 2011-2022 走看看