数据库(一)

1.数据库入门

1.1 引入

  方式一: 数据放到内存

                  优点:擦写数据的效率很高

                  缺点:无法永久保存,当程序关闭则数据丢失

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

                  优点:可以永久保存

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

                             2)查询数据不方便

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

                  优点:1)数据永久保存

                             2)查询数据方便

                             3)效率高

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

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

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

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

         DB2: 是IBM的产品。

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

         mangoDB: noSQL数据库

         现在数据库一般都基于sql语言

         sql:structure query language(结构化查询语言),一门和数据库交互的语言

1.3 mysql数据库基本使用

登陆连接:mysql -u root -p;

2 管理数据库(sql语言如何来操作数据库,操作表,操作数据)

1查看所有数据库:show databases;

2.创建新的数据库:create database day14;

指定字符集:create database day15 default character set gbk;

3.修改数据库

修复数据库的字符集:alter database day15 default character set utf8;

4.删除数据库:drop database day15;

3 管理表

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

1.创建新的表(create table):create table student(id int,name varchar(20),age int);

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

2.修改表(alter table

添加字段:alter table student add column gender varchar(1);

修改字段类型:alter table student modify column gender varchar(2);

修改字段名称:alter table student change column gender sex varchar(2);

删除字段:alter table student drop column age;

修改表名称:alter table student rename to teacher;

3.查看表:desc student;

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

3.4 删除表:drop table teacher;

4 管理数据

1.插入数据(insert into):INSERT INTO student VALUES(1,'张三',20);

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

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

-- 3)插入部分字段:INSERT INTO student(id,NAME) VALUES(2,'李四');

2.修改数据(update)

-- 1)批量操作(不建议经常使用这种):UPDATE student SET NAME='张三';

-- 2)按条件修改,修改一个字段:UPDATE student SET NAME='李四' WHERE id=2;

-- 3)修改多个字段:UPDATE student SET NAME='王五',age=40 WHERE id=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 查询数据(重点)

1.查询所有字段:SELECT * FROM student;

2.查询指定的字段:SELECT id,NAME FROM student;

3.查询时指定别名:SELECT id AS '编号',NAME AS '姓名' FROM student;

(AS可以省略)SELECT id '编号',NAME '姓名' FROM student;

4.查询时添加常量列:

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

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

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

5.查询时合并列:

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

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

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

6.查询去除重复记录:

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

SELECT DISTINCT address FROM student;

-- 另一种语法

SELECT DISTINCT(address) FROM student;

7.条件查询

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

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

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

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

SELECT * FROM student WHERE servlet>80;

SELECT * FROM student WHERE mysql<=85;

SELECT * FROM student WHERE mysql<85 OR mysql=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 '李_';

8.聚合查询

9.分页查询

10.查询后排序

11.分组查询

12.分组查询后筛选

原文地址:https://www.cnblogs.com/hw1988/p/11521642.html