MySQL(1)

目录

数据库的简介

MySQL数据库的安装和卸载

MySQL数据库概念 

SQL语言(操作数据库)

SQL的分类 

数据库的操作(CURD) 创建数据库(重点) 

查看数据库(重点)

删除数据库(重点)

修改数据库

表结构操作(CURD)

创建表

数据库的数据类型(重点)

单表的约束(了解)

删除和查看表

修改表

数据的操作(CRUD)(重点)

插入数据(insert)

MySQL插入中文数据乱码

修改数据(update)

删除数据(delete)

查询数据(select)(重点)

基本的select语句

查询语句中使用运算和别名 

使用where条件过滤 

where子句中出现的运算

order by 对查询的结果进行排序

聚集函数


数据库的简介

  1. 什么是数据库:数据仓库。访问必须只能用SQL语句来访问。数据库也是一个文件的系统。
  2. 数据库的作用:存储数据的作用。开发任何的应用,都有数据库。
  3. 关系型的数据库:数据库中保存的都是实体与实体之间的关系。
  4. 常见的数据库
    • Java开发,必用的两个数据库OracleMySQL
      • Oracle数据库(甲骨文)         大型的数据库,收费的。
      • MySQL数据库     小型的数据库,免费开源的。被Oracle收购了(在6.x版本下开始收费了)
      • SQLServer      微软的数据库
      • DB2             IBM公司产品,大型的数据库,收费的。
      • SyBASE         退出了历史的舞台。PowerDigener(数据库的设计的工具)

MySQL数据库的安装和卸载

  1. MySQL数据库的卸载
    • 先找到MySQL的安装路径,找到my.ini配置文件。
    • basedir="C:/Program Files (x86)/MySQL/MySQL Server 5.5/"    ----MySQL安装路径(my.ini没有删除)
    • datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/"    ‐‐ MySQL数据存放位置(手动删除)
    • 直接通过控制面板卸载程序。
  2. 安装MySQL
    安装的路径中不能有中文和空格。
  3. 进行测试
    cmd    ‐‐ 输入mysql ‐u root ‐p ‐‐ 回车 ‐‐ 输入密码 ‐‐ 进入MySQL的服务器。

MySQL数据库概念 

总结:一个数据库的服务器中包含多个数据库,一个数据库中有多张表,一个表中包含多个字段(字段和JavaBean的     属性是对应),表中存放是数据,一行数据和一个JavaBean实体对象是对应的。

SQL语言(操作数据库)

  1. Structured Query Language, 结构化查询语言
  2. SQL非过程性的语言
    • 过程性的语言:依赖上一条或者上几条语句执行。
    • 非过程性的语言:一条语言,就对应一个返回的结果。
  3. SQL语言是基础
    • Oracle使用自己的语言,PL/SQL只能在Oracle来说使用。

SQL的分类 

  1. DDL    数据定义语言
    • 创建数据库 创建表 创建视图 创建索引 修改数据库 删除数据库 修改表 删除表
    • create ‐‐ 创建 alter ‐‐ 修改 drop ‐‐ 删除
  2. DML    数据操作语言

    操作数据         插入数据(insert)         修改数据(update)         删除数据(delete)

  3. DCL    数据控制语言
    • if else while
  4. DQL    数据查询语言
    • 从表中查询数据(select)

数据库的操作(CURD) 创建数据库(重点) 

  1. 创建数据库的语法
    基本的语法:create database 数据库名称;
    正宗的语法:create database 数据库名称 character set 编码 collate 校对规则;
  2. 校对规则(了解):决定当前数据库的属性。创建一个名称为mydb1的数据库。
    create database mydb1;

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

                create database mydb2 character set 'utf8';

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

               create database mydb3 character set 'utf8' collate 'utf8_bin';

查看数据库(重点)

  1. show databases;                      ‐‐ 查看所有的数据库
  2. use 数据库名称;(*****)                ‐‐ 使用数据库
  3. show create database 数据库名称;    ‐‐ 查询数据库的创建的信息
  4. select database();                   ‐‐ 查询当前正在使用的数据库

删除数据库(重点)

drop database 数据库名称    ‐‐ 删除数据库

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

        show databases;

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

        show create database mydb2;

删除前面创建的mydb1数据库

        drop database mydb1;

修改数据库

语法:alter database 数据库名称 character set 'gbk' collate '校对规则';

表结构操作(CURD)

创建表

1.语法:
create table 表名称(
        字段1 类型(
长度) 约束,
        字段2 类型(长度) 约束,
        字段
3 类型(长度) 约束
);

2.注意:
        创建表的时候,后面用小括号,后面分号。
        编写字段,字段与字段之间使用逗号,最后一个子段不能使用逗号。
        如果声明字符串数据的类型,长度是必须指定的。
        如果不指定数据的长度,有默认值的。int类型的默认长度是11

3.创建一张表结构(员工表练习)

create table employee(
    id int,
    name varchar(30),
    gender char(5),
    birthday date,
    entry_date date,
    job varchar(50),
    salary double,
    resume text
);
  • 4.执行SQL语句
    •         查询当前正在使用的数据库 select database();
              选择你要使用的数据库 use mydb2;
              执行创建表的SQL语句。
    • ​​​​​5.​​使用desc employee;查询表的信息
    •  

数据库的数据类型(重点)

字符串型(重点)
        VARCHAR(用的比较多):长度是可变的。        例子:name varchar(8) ,存入数据hello,存入进去之后,name字段长度自动变成了5。
        CHAR:长度是不可变的。        例子:name char(8) 存入数据hello,用空格来补全剩余的位置。
大数据类型(不常用)
        BLOB :字节(电影 mp3)
        TEXT :字符(文本的内容)
数值型(重点)
        TINYINT 、SMALLINT、INT、BIGINT、FLOAT、DOUBLE
逻辑型
        BIT
        在Java中是true或者false
        在数据库bit类型(1或者0)
日期型(重点)
        DATE :只包含日期(年月日)
        TIME :只包含时间(时分秒)
        DATETIME :包含日期和时间。如果插入数据的时候,字符值为空,字段的值就是空了。
        TIMESTAMP :包含日期和时间。如果插入数据的时候,设置字段的值为空,默认获取当前的系统的时候, 把时间保存到字段中。

单表的约束(了解)

1. 约束的好处:保证数据的完整性。
2. 主键约束(重要)代表记录的唯一标识。
        关键字:primary key:通过该关键字声明某一列为主键。
        唯一:值就不能相同
        非空:值也不能为空
        被引用:(和外键一起来使用)
3. 唯一约束
        声明字段值是唯一的。使用关键字 unique
4. 非空约束
        声明字段的值是不能空的。not null

删除和查看表

1. 删除表语法:drop table 表名;
2. 查看标签
        desc 表名;        ‐‐ 查询表的信息
        show tables;        ‐‐ 查看当前数据库中所有的标签
        show create table 表名;        ‐‐ 查看表的创建的信息

修改表

1. 语法
        alter table 表名 add 新列名 类型(长度) 约束;        ‐‐ 添加列
        alter table 表名 drop 列名;        ‐‐ 删除列
        alter table 表名 modify 列名 类型(长度) 约束;        ‐‐ 修改列的类型或者约束
        alter table 表名 change 旧列名 新列名 类型(长度) 约束;        ‐‐ 修改列名
        rename table 表名 to 新表名;        ‐‐ 修改表的名称
        alter table 表 名 character set utf8;        ‐‐ 修改表的字符集
在上面员工表的基本上增加一个image列。
        alter table employee add image varchar(50);
修改job列,使其长度为60。
        alter table employee modify job varchar(60);
删除gender列。
        alter table employee drop gender;
表名改为user。
        rename table employee to user;
修改表的字符集为utf8
        alter table user character set utf8;
列名name修改为username
        alter table user change name username varchar(30);

数据的操作(CRUD)(重点)

插入数据(insert)

1. 插入数据的语法:
        insert into 表名 (字段1,字段2,字段3) values (值1,值2,值3);
        insert into 表名 values (值1,值2,值3);
2. 注意事项
        插入的数据与字段类型必须是相同的。
        数据的大小范围在字段范围内
        值与字段一一对应 * 字符串或者日期类型数据需要使用单引号

insert into user values (1,'meimei','1956‐1‐1','1957‐1‐1','HR',5000,'meimeimei','xx'); 
insert into user values (2,'小凤','1996‐1‐1','2013‐1‐1','BOSS',15000,'mei','xx'); 
insert into user values (3,'聪聪','1993‐11‐11','2015‐09‐10','WORKER',500.0,'chou','yy'); 
insert into user values (4,'如花','1994‐1‐1','2013‐1‐1','BOSS',25000,'mei','xx'); 
insert into user values (5,'小苍','1991‐1‐1','2014‐1‐1','BOSS',15000,'mei','xx'); 
insert into user values (6,'小泽','1986‐1‐1','2013‐1‐1','BOSS',15000,'mei','xx');

        character_set_client=utf8        ‐‐ 客户端向MySQL服务器端发送内容
        character_set_results=utf8        ‐‐ MySQL服务器端向客户端发送内容

MySQL插入中文数据乱码

1. 先把MySQL服务停止。
2. 找到MySQL安装文件的my.ini的配置文件 [client] port=3306 [mysql] default‐character‐set=gbk
3. 重启MySQL服务

修改数据(update)

1. 语法:update 表名 set 字段1=值,字段2=值 where 条件;        where username = 'meimei';

2. 如果没有where条件语句,默认更新所有的数据。

3. 如果有where条件,默认更新符合条件的记录。

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

        update user set salary = 5000;

将姓名为’聪聪’的员工薪水修改为3000元。

        update user set salary = 3000 where username = '聪聪';

将姓名为’小凤’的员工薪水修改为4000元,job改为ccc。

        update user set salary = 4000,job = 'ccc' where username = '小凤';

将如花的薪水在原有基础上增加1000元。

        update user set salary = salary+1000 where username = '如花';

删除数据(delete)

1. 语法:delete from 表名 where 条件;

2. 如果没有where条件,默认删除所有的数据。

3. truncate 表名;删除表中所有的数据。delete from 表名; 也可以删除所有数据。

        区别: truncate先把你整个表删除掉,默默创建一个空的表(和原来的表结构是一样的)。

        delete from 表名 一行一行的删除。(使用它)

        事物的概念:事物提交和事物回滚。

删除表中名称为’聪聪’的记录。

        delete from user where username = '聪聪';

删除表中所有记录。

        delete from user; drop table user

删除数据及 使用truncate删除表中记录。

查询数据(select)(重点)

基本的select语句

1. 语法

select * from 表名;        ‐‐ 查询所有列的记录

select 字段1,字段2,字段3 from 表名;        ‐‐ 查询字段123的记录

DISTINCT ‐‐ 去除重复的数据(面试)

        select distinct english from stu;

练习

create database day15;

use day15;

create table stu( id int, name varchar(30), math int, english int, chinese int );

insert into stu values (1,'美美',78,93,56);

insert into stu values (2,'聪聪',18,13,16);

insert into stu values (3,'小凤',98,96,89);

insert into stu values (4,'如花',90,100,46);

insert into stu values (5,'欧阳锋',74,93,56);

insert into stu values (6,'吴彦祖',37,11,89);

insert into stu values (7,'聪大',88,77,66);

insert into stu values (8,'聪二',55,44,33);

查询语句中使用运算和别名 

在所有学生分数上加10分特长分。

        select name,(math+10) m,(english+10) e,(chinese+10) c from stu;

统计每个学生的总分。

        select name,(math+english+chinese) 总 分 from stu;

使用别名表示学生分数

        select name,(math+english+chinese) 总 分 from stu;

使用where条件过滤 

查询姓名为聪聪的学生成绩

        select name,math,chinese from stu where name = '聪聪';

查询英语成绩大于90分的同学

        select name,english from stu where english > 20;

查询总分大于200分的所有同学

        select name,math+english+chinese from stu where (math+english+chinese) > 200;

where子句中出现的运算

1. > < = = <> 大于、小于、大于(小于)等于、不等于

2. in 表示范围。

        select * from stu where math = 18;        查询出一条数据

        select * from stu where math in (78,18,99);

3. like 模糊查询 ‐‐ 符合模糊的条件

        select * from stu where name like '张_';        姓张的名称(只有两个)的记录

        select * from stu where name like '张%';        姓张的名称(张飞 张翼德 张是是是冠希)的记录。

        select * from stu where name like '%张';        末尾是张(聪聪张 XSDF张)

        select * from stu where name like '%张%';        只要名称中包含张。

4.isnull ifnull nullif判断某一个字段记录是否为空

5.and与 or或者 not非

查询英语分数在 80-90之间的同学。

        select * from stu where english >= 10 and english < 19;

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

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

查询所有姓小的学生成绩。

        select * from stu where name like '小%';

查询数学分>80,语文分>80的同学。

        select * from stu where math > 80 or chinese > 80;

总结:select 列名(运算) from 表名(别名) where 条件(运算的符号);

order by 对查询的结果进行排序

1. 排序的语法

        select * from 表名 where 条件 order by 列名 升序/降序;

2. 升序和降序

        order by 列名 asc;(升序,默认值)

        order by 列名 desc;(降序)

3. order by 子句必须出现在select语句的末尾。

对数学成绩排序后输出。

        select name,math from stu order by math desc;

对总分排序按从高到低的顺序输出

        select name,(math+english+chinese) as total from stu order by total desc;

对姓聪的学生成绩按照英语进行降序排序,英语相同学员按照数学降序

        select name,english,math from stu order by english desc,math desc;

对姓聪的学生成绩排序输出

        select name,(math+english+chinese) as total from stu where name like '聪%' order by total desc;

聚集函数

1. 聚集函数:总计某一列数据总和。一列的个数。一列的平均数。一列中最大值和最小值。 2. 聚集函数来操作列的。

3. 聚集函数

        count        -- 计数

        sum        -- 求和

        ifnull 判断是否为空:语法:ifnul(xxx,0)        如果xxx为null,替换成0

        avg        -- 平均值

        max        -- 最大值

        min        -- 最小值

练习:

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

        select count(name) from stu;

统计数学成绩大于90的学生有多少个?

        select count(math) from stu where math >= 90;

统计总分大于220的人数有多少?

        select count(*) from stu where math + english+chinese > 200;

统计一个班级数学总成绩?

        select sum(math) from stu;

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

        select sum(math),sum(english),sum(chinese) from stu;

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

        select sum(ifnull(math,0)+english+chinese) from stu;

        select sum(math) + sum(english) + sum(chinese) from stu;

        编写一条更新语句:update stu set math = null where id = 2;

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值