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

  • 相关阅读:
    C#深入浅出 修饰符(二)
    HDU 5785 Interesting
    HDU 5783 Divide the Sequence
    HDU 5781 ATM Mechine
    UVA 714 Copying Books
    uva 1471 Defense Lines
    UVA 11134 Fabled Rooks
    UVA 11572 Unique Snowflakes
    UVA 11093 Just Finish it up
    UVA 10954 Add All
  • 原文地址:https://www.cnblogs.com/hw1988/p/11521642.html
Copyright © 2011-2022 走看看