(14)MySQL基础

1 数据库入门

                     1.1引入

                                     方式一:数据放到内存

                                     优点:             

                                                        1)擦写数据的效率很高!

                                     缺点:

                                                        1)无法永久保存,当程序关闭了,数据丢失

                  

                                     方式二:数据放到普通文件

                                     优点:

                                                        1)可以永久保存

                                     缺点:

                                                        1)频繁地进行IO操作,效率比较低

                                                        2)查询数据不方便的!!!

 

                                     方式三:数据放到数据库软件

                                     优点:

                                                   1)数据永久保存下来

                                                        2)查询数据非常方便的!!

                                                        3)效率不能低

 

              1.2 市面上常见的数据库软件

                   数据库软件,存储和管理数据的仓库。

                   Oracle:是甲骨文公司的产品。满足中大型应用。和java语言兼容性非常好的。

                   SQLServer: 是微软公司的产品。和net平台(c#语言)兼容最好。

                   DB2:是IBM的产品。

                   mysql:开源的数据库产品。和java语言兼容非常好。满足中小型应用。

                   mangoDB: noSQL数据库

 

                   mysql:满足中小型应用

                   oracle:满足中大小应用

     1.3mysql数据库基本使用  (cmd命令)     

C:\Users\APPle>mysql -u root -p

Enter password: ****

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 12

Server version: 5.5.40 MySQL Community Server (GPL)

 

Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.

 

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

 

mysql>

 

 

2 管理数据库

              2.1 查看所有数据库                           

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |         数据库的元数据

| mysql              |        数据库用户信息或软件配置信息

| performance_schema |        数据库软件运行的性能数据

| test               |        测试数据库

+--------------------+

4 rows in set (0.00 sec)

              2.2 创建新的数据库

mysql> create database day14;

Query OK, 1 row affected (0.00 sec)

                   指定字符集

                  

mysql> create database day15 default character set gbk;

Query OK, 1 row affected (0.01 sec)

              2.3 修改数据库

         修复数据库的字符集

mysql> alter database day15 default character set utf8;

Query OK, 1 row affected (0.00 sec)

                        

  2.4删除数据库        

mysql> drop database day15;

Query OK, 0 rows affected (0.01 sec)

3 管理表

                   操作表之前,需要切换数据库:  use 数据库名称     例如  use day14;

      3.1 创建新的表(create table)

mysql> create table student(id int,name varchar(20),age int);

Query OK, 0 rows affected (0.01 sec)

 

create table 表名(字段名称 字段类型,字段名称 字段类型.....);

      3.2 修改表(alter table)

         添加字段:

mysql> alter table student add column gender varchar(1);

Query OK, 0 rows affected (0.04 sec)

Records: 0  Duplicates: 0  Warnings: 0

修改字段类型:

        

mysql> alter table student modify column gender varchar(2);

Query OK, 0 rows affected (0.03 sec)

Records: 0  Duplicates: 0  Warnings: 0

修改字段名称:

mysql> alter table student change column gender sex varchar(2);

Query OK, 0 rows affected (0.06 sec)

Records: 0  Duplicates: 0  Warnings: 0

删除字段:

mysql> alter table student drop column age;

Query OK, 0 rows affected (0.02 sec)

Records: 0  Duplicates: 0  Warnings: 0

修改表名称:

mysql> alter table student rename to teacher;

Query OK, 0 rows affected (0.01 sec)

   3.3 查看表

mysql> desc student;

+-------+-------------+------+-----+---------+-------+

| Field | Type        | Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| id    | int(11)     | YES  |     | NULL    |       |

| name  | varchar(20) | YES  |     | NULL    |       |

| age   | int(11)     | YES  |     | NULL    |       |

+-------+-------------+------+-----+---------+-------+

 

show tables: 查看当前数据库的所有表

     3.4 删除表                                      

mysql> drop table teacher;

Query OK, 0 rows affected (0.01 sec)


              

4 管理数据        

-- 二、管理数据

-- 1.1插入数据(insert into)

-- 需求: 往学生表插入数据

INSERT INTO student VALUES(1,'张三',20);

-- 1)插入的字段值顺序一定是按照表的字段顺序

INSERT INTO student VALUES('张三',1,20); -- ERROR 1366 (HY000): Incorrect integer value: 'eric' for column 'id' at row 1

-- 2)字段的数据一定要和值的数量要一致

INSERT INTO student VALUES(2,20); -- ERROR 1136 (21S01): Column count doesn't match value count at row 1

-- 3)插入部分字段

INSERT INTO student(id,NAME) VALUES(2,'李四');

 

 

-- 1.2 修改数据(update)

-- 需求: 修改学生表

-- 1)批量操作(不建议经常使用这种)

UPDATE student SET NAME='张三';

-- 2)按条件修改,修改一个字段

-- 需求: 修改id为2的学生姓名

UPDATE student SET NAME='李四' WHERE id=2;

-- 需求: 修改id为1的学生姓名和年龄

-- 3)修改多个字段

UPDATE student SET NAME='王五',age=40 WHERE id=1;

 

-- 1.3 删除数据(delete from)

-- 1) 全表数据删除

DELETE FROM student;

-- 2)按条件删除数据

DELETE FROM student WHERE id=2;

-- 3)truncate table也可以删除全表数据

TRUNCATE TABLE student;

-- 注意:delete from 和 truncate table 的区别?

--  1)delete from删除全部,也可以按条件删除,但是truncate table只能全表删除,不能按条件删除

--  2)delete from删除的数据可以回滚,truncate table删除的数据不能回滚。

--  3)delete from不可以把自增长约束(auto_increment)重置,truncate table可以把自增长约束(auto_increment)重置

 

-- truncate table student where id=1; 错误的语法

 

 

-- 1.4 查看所有数据(重点中的重点)

SELECT * FROM student;

 

5 查询数据(重点)

                   5.1查询所有字段
                   5.2查询指定的字段
                   5.3查询时指定别名
                   5.4查询时添加常量列
                   5.5查询时合并列
                   5.6查询去除重复记录
                   5.7条件查询

-- 3.1 查询所有字段

SELECT * FROM student;

 

-- 3.2 查询指定的字段

SELECT id,NAME FROM student;

 

-- 3.3 查询时指定别名

SELECT id AS '编号',NAME AS '姓名' FROM student;

-- AS可以省略

SELECT id '编号',NAME '姓名' FROM student;

 

-- 3.4 查询时添加常量列

-- 临时使用的列可以通过查询时动态添加进去

-- 需求: 查询学生数据时添加一个"班级"列。值为“java就业班”

SELECT id AS '编号',NAME AS '姓名','java就业班' AS '班级' FROM student;

 

-- 3.5 查询时合并列

-- 需求: 查询每个学生的总分。

SELECT NAME AS '姓名',(servlet+mysql) AS '总成绩' FROM student;

-- 注意: 合并列的字段必须是数值类型的字段。非数值类型合并没有效果

SELECT NAME AS '姓名',(servlet+NAME) FROM student;

 

 

-- 3.6 查询去除重复记录(distinct)

-- 需求: 查询有哪些的地区学生

SELECT DISTINCT address FROM student;

-- 另一种语法

SELECT DISTINCT(address) FROM student;

 

-- 3.7 条件查询(where)

-- 1)逻辑条件: and(与)     or(或)

-- 当出现两个或两个以上的条件,那么这两个条件直接一定会存在逻辑关系。要么是与关系,要么或关系

 

-- 需求:查询学生的id为1,且姓名为张三的学生 

SELECT * FROM student WHERE id=1 AND NAME='张三'; -- (交集,结果数小于或等于任何一个条件的结果数)

 

-- 需求:查询学生的id为2,或姓名为张三的学生

SELECT * FROM student WHERE id=2 OR NAME='张三';  -- (并集,结果数一定会大于或等于任何一个条件的结果数)

 

 

-- 2)比较条件: >  <  >=   <=  =  <>  (between and)

-- 需求: 查询servlet分数大于80分的学生

SELECT * FROM student WHERE servlet>80;

-- 需求:查询mysql分数小于或等于85分的学生

SELECT * FROM student WHERE mysql<=85;

SELECT * FROM student WHERE mysql<85 OR mysql=85;

-- 需求: 查询servlet分数大于或等于80分,且小于或等于85分的学生

SELECT * FROM student WHERE servlet>=80 AND servlet<=85;

-- 上面sql代替的语法

SELECT * FROM student WHERE servlet BETWEEN 80 AND 85; -- 在..。之间(包前包后)

-- 需求:查询年龄不等于30岁的学生

SELECT * FROM student WHERE age<>30;

 

-- 3)判空条件: is null , is not null, ='' , <>''

-- null: 表示没有数据   is null   is not null

-- 空字符:有数据    =''  

-- 需求:查询没有性别数据的学生(数据‘男’或‘女’)

SELECT * FROM student WHERE gender IS NULL OR gender='';

 

-- 需求: 查询有性别数据的学生

SELECT * FROM student WHERE gender IS NOT NULL AND gender<>'';

 

 

-- 4)模糊条件: like

-- 模糊替代符号:

--  %: 替代任意个字符

--  _: 替代一个字符

-- 需求: 查询姓‘李’的学生

SELECT * FROM student WHERE NAME LIKE '李%';

-- 需求: 查询姓名中包含‘四’字的学生

SELECT * FROM student WHERE NAME LIKE '%四%';

-- 需求:查询姓‘李’,全名只有两个字的学生

SELECT * FROM student WHERE NAME LIKE '李_';

 

                   5.8聚合查询
                   5.9分页查询
                   5.10查询后排序
                   5.11分组查询
                   5.12分组查询后筛选

 

总结:

                            1)mysql数据结构: 数据库 -> 表 -> 数据

                            2)管理数据库:

                                               createdatabase

                                               alterdatabase

                                               dropdatabase

                                               showdatabases;

                            3)管理表:     

                                               createtable

                                               altertable

                                               droptable

                                               showtables; / desc 表

                            4)管理数据

                                               insertinto

                                               update表 set ...

                                               deletefrom 表

                                              12种查询(重点)                          

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值