美文网首页
08_MySql基础

08_MySql基础

作者: AndroidCat | 来源:发表于2017-05-26 00:37 被阅读0次

    MySql基础(一)

    数据库 & 数据库管理系统
    区别
    • 数据库:就是存储数据的仓库,是一个文件系统
    • 数据库管理系统:一个管理数据库的软件
    • 相当于图书馆和图书管理员
    常用的数据库管理系统
    • MYSQL:开源免费小型数据库,后面被Oracle公司收购,6.0开始要收费,我们用5.5的版本
    • Oracle:收费的大型数据库
    • DB2:IBM公司研发的收费数据库,多用于银行
    • SQLServer:微软研发的数据库
    • SQLite:移动设备用的嵌入式小型数据库
    数据库 & 数据库管理系统 关系
    • 数据库本身是一个服务器,需要网络连接访问
    • 通过数据库管理系统操作数据库,用户不直接操作数据库
    • 数据库服务器面对里面的众多数据库,在众多数据库中有相应的表,数据就存在表中
    • 相当于图书馆--分类--书架--书本
    数据库表
    • 数据库表相当于java中的类
    • 表名--类名
    • 表中字段--类属性
    • 记录--对象
    表数据
    • 表的字段规定的数据类型:整数,小数,字符串....
    MySql数据库
    安装MySql
    • 查看doc文档,根据安装步骤安装(j2ee软件包)
    • 安装时需要修改两个路径:
      1. 数据库服务器的安装路径(卸载的时候需要用到这个路径)
      2. 数据库存放路径
    • MySql端口:3306
    • 数据库中有一个内置的用户:root
    选择数据库服务器的启动方式
    • 打开window服务:
      • terminal中输入:services.msc(打开服务可视窗口)
    • MySql数据库有开机启动和手动启动两种,为了节省性能,可以选择开发的时候手动开启
    • 右键--属性--启动类型--手动
    • 快速打开服务:
      • 在命令行中输入:net start mysql
    MySql的登陆
    • 安装MySql的时候勾选了自动配置环境变量
    • 在命令行输入:
    mysql -uroot -proot
    //-u表示用户名user
    //-p表示密码password
    //登陆后输入exit退出mysql
    //也可以用户名密码分开写来登陆
    mysql -u root -p
    //然后再输入密码
    
    • 登陆后表示已经进入数据库管理系统了,然后就可以对数据库进行操作了
    SQLYog软件介绍(图形化开发工具)
    • 在命令行里写程序比较痛苦,可通过可视化工具操作数据库--==SQLYog==
    • 对于数据库来讲,图形化界面操作的工具有很多种
    • SQLYog软件为免安装版本
    • 在SQLYog界面中:
      • Query:可以敲命令,就相当于在命令行登陆mysql后的界面
    SQL语句
    • 数据库不认识java语言,要与数据库交互需要用sql语言(结构化查询语言)
    • 所有的数据库都遵循sql语言的标准
    • sql语句不区分大小写(建议使用大写)
    • sql可以单行和多行书写,以分号结尾
    • 注释:/**/
    • mysql常用数据类型:
      1. int:整型
      2. double:浮点型
      3. varchar:字符型
      4. date:日期类型 yyyy-MM-dd(只有年月日,没有时分秒)
    SQL分类
    • 数据定义语言:DDL-->用来定义数据库对象:数据库,表,列等。关键字:create,alter,drop等
    • 数据操作语言:DML-->用来对数据库中表的记录进行更新。关键字:insert,delete,update等
    • 数据控制语言:DCL-->用来定义数据库的访问权限和安全级别,及创建用户
    • 数据查询语言:DQL-->用来查询数据库中表的记录。关键字:select,from,where等
    创建数据库操作
    create database 数据库名;#默认字符集为安装数据库时制定的字符集
    create database 数据库名 character set 字符集;
    
     #显示数据库
    show databases; 
    
    #删除数据库
    drop database 数据库名;
    
    #切换数据库(使用数据库)
    use 数据库名;
    
    #查看某个数据库的定义的信息
    SHOW CREATE DATABASE 数据库名;
    
    #查看正在使用的数据库
    select database();
    
    创建表 & 删除表
    create table 表名(
        字段名 数据类型 约束,
        字段名 数据类型 约束,
        字段名 数据类型 约束
    );
    # 字段名最后一个不能写逗号
    
    drop table 表名;
    
    #查看所有的表
    show tables;
    
    #查看表的详细信息
    DESC 表名;
    
    • 约束:限制这个列能写什么数据,不能写什么数据

      • 主键约束:永远保持唯一性
      • 非空约束:值不能为空
      • 唯一约束:只能出现一次
      • 外键约束:基础班没有
    • 创建用户表

    create table users (
        uid int primary key auto_increment,   #表名第一个字母+id
        user_name varchar(50),               #varchar需要制定字符长度
        address varchar(50)
    );
    
    • 主键约束:primary key
      • 保证数据的唯一性(非空、唯一),开发中主键是不具备任何含义的
    • 自动增长:auto_increment(只适用MySQL)
      • 数据库可以让主键列实现自动增长的功能
    • 不能为空:not null
    修改表结构(alter修改)
    • 添加一个列add
    alter table 表名 add 列名 类型(长度) 约束;
    
    • 修改一个列modify
    alter table 表名 modify 列名 类型(长度) 约束;
    
    • 单独改列名
    alter table 表名 change 旧列名 新列名 数据类型(长度) 约束;
    
    • 删除列drop
    alter table 表名 drop 列名;
    
    • 改表名
    rename table 表名 to 新表名;
    
    • 改表字符集
    alter table 表名 character set 字符集
    
    sql代码保存
    • sqlyog能够保存sql代码,后缀为.sql
    表数据操作
    • 添加数据
    #字符串以单引号括起来
    #除了数字之外都应该加上单引号,如日期,字符串
    #主键可以不用添加值,让其自增长
    insert into 表名(字段1,字段2,字段3) values(值1,值2,值3);
    
    insert into 表名 values(全字段的值);
    
    #写入两条 
    insert into 表名(字段1,字段2,字段3) values(值1,值2,值3),(值1,值2,值3);
    
    • 更新数据
    # 下面语句会将所有的数据都改了
    update 表名 set 字段1=值1, 字段2=值2, 字段3=值3;
    update 表名 set 字段1=值1, 字段2=值2, 字段3=值3 where 条件
    
    • 提交写法
    id=6等于
    id<>6不等于
    id<=6小于等于6
    and 并且
    or  或
    not 非
    id in (1,4,5,6) id在1,4,5,6里的任意一个
    id not in (1,4,5,6) id不在1,4,5,6里的任意一个
    
    • 删除数据

      • drop用于删除数据库或者表,代表整个删除
      • delete用于删除表中的数据,只删除局部
      delete from 表名 where 条件
      
      • 面试题:清空表中的数据
      delete from 表名;
      truncate table 表名;
      delete一条一条删除,不清空auto_increment的记录
      truncate直接将表删除,再重新建表,auto_incremeng重新开始
      
    • 查询语句

      • 查询语句在开发中使用最多
      • 使用"*"在练习、学习过程中可以使用,在实际开发中,不推荐使用。原因,要查询的字段信息不明确,若字段数量很多,会导致查询速度很慢
    select * from 表明 条件
    select 字段1,字段2,字段3 from 表名 where 条件
    
    #去掉重复记录
    select dictance 字段1 from 表名;
    
    #取别名
    select 字段1 as 别名1, 字段2 as 别名2 from 表名 条件;
    搜索出来,字段1显示为别名1,字段2显示为别名2,不常用
    
    select zname, zmoney+1000 as zmoney from table1;
    
    • where条件
    1. >    <   <>  >=  <=  =
    2. between ... and ...(包含头包含尾)
    3. in...    在..里面.如:in (1,2,3,4,5)
    4. like通配符   %代表多个字符   _代表一个字符;  如:
        first_name like 'a%';
        first_name like 'a_';
    5. is null:判断是否为空
    6. and
    7. or
    8. not
    
    • like模糊查询(非常强大),需要配合通配符 % 和 _
      • % : 多个字符
      • _ : 一个字符
    select * from 表名 where 字段名 like '%关键字%'
    
    • 查询数据库中某个字段为5个字符的数据
    select * from 表名 where 字段名 like '_____';(5个下划线)
    
    • 查询数据库中某个字段不为空的数据
    select * from 表名 where 字段名 is not null;
    select * from 表名 where not (字段名 is null);
    
    • 排序查询--order by 字段名 [desc][asc]
      • 默认升序
      • 升序:[asc]
      • 降序:[desc]
    select * from 表名 where 条件 order by 字段名
    
    聚合
    • 之前我们做查询的时候都是横向查询,它们都是根据条件一行一行的进行判断,而使用聚合函数查询是纵向的,它是对一列的值进行计算,然后返回一个单一的值,另外聚合函数会忽略空值
      • count:统计指定列不为null的记录条数
      • sum:计算指定列的数值和,如果指定列不是数值类型,计算结果为0
      • max:计算指定列的最大值,如果指定列为字符串类型,那么使用字符串排序运算
      • min:计算指定列的最小值,那么使用字符串排序运算
      • avg:计算制定列的平均值,如果指定列不是数值类型,计算结果为0
    select count(*) from 表名;
    select count(*) as 'counts' from 表名;
    select count(列名) from 表名;
    
    select sum(字段名) from 表名 where 条件;
    
    分组查询:group by 被分组的列名
    • 分组查询必须跟随聚合函数
    • 被分组的列需要出现在select的查询字段中
    • 先where过滤,在group by分组,如果对结果再进行筛选,通过having进行筛选
    补充
    SELECT * FROM zhangwu WHERE zname LIKE'%支出%' ORDER BY zmoney DESC
    SELECT SUM(money) AS total,NAME FROM zhangwu WHERE 
        NAME LIKE '%支出%' GROUP BY NAME HAVING total > 200 ORDER BY total DESC;
    

    相关文章

      网友评论

          本文标题:08_MySql基础

          本文链接:https://www.haomeiwen.com/subject/byltfxtx.html