zoukankan      html  css  js  c++  java
  • 数据库(一)

    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.分组查询后筛选

  • 相关阅读:
    睡前一分钟打造完美下半身 健康程序员,至尚生活!
    几种不伤身体的速效减肥秘方 健康程序员,至尚生活!
    头发一周洗几次才适宜? 健康程序员,至尚生活!
    夏日驱蚊虫蟑螂的最好办法! 健康程序员,至尚生活!
    WPF控件和布局
    《深入浅出WPF》笔记——绑定篇(二)
    WPF中的DataTemplate绑定使用的场合
    WPF第一个程序和XAML初探
    实习总结之jquery实例
    下一步要实战的东西
  • 原文地址:https://www.cnblogs.com/hw1988/p/11521642.html
Copyright © 2011-2022 走看看