MySQL

MySQL

SQL:结构化查询语言,可以操作所有关系型数据库
数据的存储:
    定义的变量存储在内存里面,随着程序的执行完毕而消失
javaSE->IO流:
    针对文件进行存储,可永久保存,但频繁的使用IO流对数据进行读写,效率低
数据库软件:
    1.对数据进行永久保存
    2.执行效率高
    3.方便维护和管理

一.创建库
* 登录命令
    dos:mysql -u root -p
        root
*如何创建一个数据库
    create database mydb_01;(数据库的名字)
*删除一个数据库
    drop database mydb_01;
*修改创建数据库的字符集
    alter database mydb_01 default character set gbk;(将UTF-8改成JBK格式)
*查看创建数据库中指定(全部)的字符集
    show create database mydb_01;
    show databases;

二.创建表
*切换库
    use mydb_01;
1.创建表
    语法:create table 表名(字段名称 字段类型,字段名称 字段类型.....)
    create table student(id int ,name varchar(20),age int);
    --常见的字段数据类型:int varchar char double date time datatime timestamp text(大文本) blob(存字节)
*查看所有表
    show tables;
*查看表中内容(表结构)
    desc sdudent;
2.修改表
*在表中添加字段
    alter table student add column gender(字段名称) varchar(字段类型);
*修改字段类型
    alter table student modify column gender varchar(2);
*修改字段名称
    alter table student change column genter sex(新名称) varchar(20);
*删除字段
    alter table student drop column age;
*修改表名
    alter table student rename to teacher;
*删除表
    drop table student;

三.管理数据
1.插入数据(整体加入数据)
    insert into  student values(1,"张三",20);
    --关于插入数据的注意事项
      1.插入字段的值和字段的信息顺序一致
      2.数量一致
*插入部分字段
    insert into student(id,name) values (2,"李四");
*查询当前表中的所有数据(重)
    select * from student ;
2.修改数据(批量修改,一般不适用)
    update student set name ="张三";
*修改指定字段
    update student set name = "李四" where id =1;
*修改多个字段
    update student set name ="王五",age = 30 where id = 2;
3.删除数据(delete from)
*删除指定字段
    delete from student where id = 2;
*全部删除
    delete from student;
    truncate table student;
    --truncate table:也是全表删除,只能删除数据而不能删除单个数据
    --关于delete from 和 truncate table 这俩个的区别
        1.delete from 既可以删除全表,也可以删除指定数据
          truncate table 只能删除全表数据
        2.delete from 可以回滚(可还原)
          truncate table 不可以回滚
        3.(重)delete from 不可以让自增长的约束重置
                truncate table 可以让自增长的约束重置
四.数据查询
*查询所有数据
    select * from student;
*查询指定字段
    select id ,name from student;
*查询的时候指定别名
    select  id as '编号' ,name as '名字' from student;(as 可以省略)
*查询时动态添加指定的列
    select  id as '编号' ,name as '名字','java就业班' as '班级' from student;
*查询时合并列
    select name as '姓名' ,(mysql + servlet) as '总成绩' from student;
    注:合并的俩个列字段名称要保持一致
*查询特定字段
    select * from student where ...;
    &&-->and 
    ||-->or
    IN(数值 1,2,3,4);在里面选择
    (重)null 值运算
     ifnull(comm,0);
*查询值是null的内容
    is(is not) null;
*模糊查询(like)
    需配合通配符使用(_匹配单个任意字符;%匹配多个任意字符)
    select * from emp where name like 'S%';(名字以S开头)
*去除重复记录(distinct)
    select distinct sal from emp where sal = 3000;(展示一条sal=3000的内容)
*排序(order by)
    select * from emp order by sal ASC(从小到大);(DESC:从大到小)
*查询平均工资
    select avg(sal) as 平均工资 from emp;
           max(sal)
           min(sal)
*查询个数(count)
    select count(*) as 人数 from emp;
*(重)分组查询(group by)
    --查询每个部门的总工资(配合聚合函数使用)
        select deptno(部门),sum(sal) as 总工资 from emp group by depyno(以部门分);
    --查询工资大于1200的部门总工资
        select deptno ,sum(sal) from emp where sal>1200 group by deptno;
    --查询工资大于1200的部门总工资,且总工资大于8500
        select deptno ,sum(sal) from emp where sal>1200 group by deptno having sum(sal) >8500;
        having:筛选后
        where:筛选前
*分页(limit)
    select * from limit 0(开始索引),5(每页5条);
    公式:索引=(页码-1)*每页条数

四.完整型约束
    对字段加以限定,约束数据
    约束:一种束缚,一种限定
1.主键约束(primary key)
    某个字段设置了主键,这个字段唯一且非空,一张表中只能有一个主键!
    --添加主键的方式
    1.create table student(sname varchar(20) primary key, age int);
    2.create table student(
            sname varchar(20),
            sage int,
            primary key(sname));
    3.create table student(
            sname varchar(20),
            sage int);
      alter table student add  primary key(sname);
*联合主键
    create table student(
            sname varchar(20),
            sage int);
      alter table student add primary key(sname,sage);
*非空约束(not null)
    create table student(
            sname varchar(20)not null,
            sage int);
*唯一约束(unique)对null值不起作用
    create table student(
            sname varchar(20) unique,
            sage int);
*自增长约束(auto_increment)
    create table student(
            sid int primary key auto_increment,
            sname varchar(20),
            sage int);
2.外键约束(foreign key)
    实体:实体之间的关系 1对1的关系 1对多的关系 多对多的关系
    添加外键约束的目的:是为了保证数据的有效性和完整性
    特点:主表(1表)一方不能删除从表(多表)中还在引用的数据
          从表中不能添加主表中没有描述的数据
*添加外键约束
    用法:foreign key(外键字段) references 主表(主键)
    例:alter table orders add foregin key(user_id) references users(uid);
*多对多通过中间表转换成一对多
    --多表查询
        select user.*,order.* from user,orders;
        俩张表关联查询(笛卡尔积),数据没有意义
    --多表条件查询(查询出每个人的订单详情)
        内连接:
            隐式:select user.*,orders.* from user,orders where user.id=orders.user_id;
            显式:delect user.id,user.username,orders,* from user inner join order on user.id = orders.user_id;
        外连接:
            左外连接:查询所有的订单信息,用户没有订单是null
                select user.*,orders.* from user left outer join orders on user.id = orders.user_id;
            右外连接:查询所有的订单信息,没有的用户以null显示
                select user.*,orders.* from user right outer join orders on user.id = orders.user_id;
    --子查询
        一张表的查询条件,需要依赖于另一张表的查询结果
        例:先找到用户的ID,用ID去订单中查找
        select user.id from user where username='张三';
        select orders.* from orders where user_id=3;
        一步走:
            select orders.* from orders where select user.id from user where username='张三';

你可能感兴趣的:(mysql,数据库,存储)