MySQL基本语句与数据类型

数据库服务软件有 MySQL Oracle SQL_Server MongoDB DB2 Maraidb

MySQL特点

  1. 关系型数据库(innoDB)
    数据以 行和列(表) 的形式去存储的
    表中行: 一条记录 列: 一个字段
    表和表之间的逻辑关联叫关系
  2. 非关系型数据库存储(mySAM)
    以字典存储, 每条字典独立, 优点查询快

数据库软件\数据库\数据仓库,概念区分

  1. 数据库软件
    可操作, 实现数据库的逻辑功能
  2. 数据库
    逻辑概念, 存储数据, 侧重于存储
  3. 数据仓库
    数据量特别庞大, 主要用于数据分析, 数据挖掘
MySQL 安装
  1. 安装服务端
    sudo apt-get install mysql-server
  2. 安装客户端
    sudo apt-get install mysql-client

安装软件时,修复依赖关系

  1. sudo apt-get install update
  2. sudo apt-get -f install

设置环境变量的方法

  1. vi .bash_profile
  2. 添加如下内容保存退出
    export PATH=${PATH}:/usr/local/mysql/bin
  3. source .bash_profile
  4. mysql -uroot -p密码

  5. 查看服务状态
    sudo /etc/init.d/mysql start
  6. 启动服务端
    sudo /etc/init.d/mysql status

  7. 客户端连接
    远程连接 mysql -h主机地址 -u用户名 -p密码
    本地连接 mysql -hlocalhost -uroot -p123456
    本地连接 mysql -uroot -p


基本SQL命令

1. 库

  1. 查看所有库
    show databases;
  2. 创建库(指定字符集)
    Create database 库名 character set utf8;
  3. 查看创建库的语句(查看字符集)
    show create database 库名;
  4. 查看当前所在库
    select database();
  5. 切换库
    use 库名;
  6. 查看库中的表
    show tables;
  7. 删除库
    drop database 库名;

2. 表

  1. 创建表(别忘了选择库, 指定字符集)
    create table 表名(
    字段名 char(10),
    字段名 数据类型,
    字段名 数据类型
    )character set utf8;
    字段名与数据类型以空格分隔
  2. 修改表名(rename)
    alter table 表名 rename 新表名;
  3. 查看创建表的语句(字符集,存储引擎)
    show create table 表名;
  4. 查看表结构
    desc 表名;

    desc开头 describe\descend\ascend

3. 表字段

  1. 语法: alter table 表名 ...;
  2. 添加字段(add)
    alter table 表名 add 字段名 数据类型; 默认位置在最后
    alter table 表名 add 字段名 数据类型 first;
    alter table 表名 add 字段名 数据类型 after 字段名;
  3. 删除字段(drop)
    alter table 表名 drop 字段名;
  4. 修改
    修改字段数据类型(modify)
    alter table 表名 modify 字段名 新的数据类型;
    • 会受到表中已有数据的限制
      修改字段名(change)
      alter table 表名 change 原字段名 新字段名
  5. 查看表结构(查看表中字段)
    desc 表名;

4. 表记录

  1. 插入(insert)
    1. insert into 表名 values(一条记录1),(一条记录2),(..);
    2. insert into 表名(字段1, 字段2)values(值1), (值2);
  2. 删除表记录(delete)
    1. delete from 表名 where 条件;
    2. 注意
      一定要加where条件, 不加where条件全部删除表记录
  3. 更新表记录(update,set)
    1. update 表名 set 字段名1=值1,字段2=值2 where 条件;
    2. 一定要加where
  4. 查询(select)
    1. select * from 表名 where 条件;
    2. select 字段1, 字段2... from 表名 where 条件;

表字段, 表记录操作

表字段(alter table 表名)表记录
增:addinsert into 表名 ..
删:dropdelete from 表名 ..
改:modifyupdate 表名 set ...
查:desc 表名;select * from 表名 ...

表的复制

  1. create table 表名 select ... from 表名 where 条件;
  2. 复制表结构
    create table 表名 select ... from 表名 where false;

数据类型

  1. 数值类型
  2. 字符类型
  3. 枚举类型
  4. 日期时间类

  5. 日期时间函数
  6. 日期时间运算
  7. 运算符操作
  • 模糊查询(like)

1. 数值类型

  1. 整型
  2. int 大整型(4个字节) 32位
    取值范围: 0~(2^32 -1) 42亿多
  3. tinyint 微小整型(1个字节)
    1. tinyint signed(默认):-128~127
    2. tinyint nusigned: 0~255
    age tinyint unsigned,
  4. smallint 小整型(2个字节)
  5. bigint 极大整型(8个字节)
  6. 浮点型
  7. float(4个字节,最多显示7个有效位)
    字段名 float(m,n)
    m: 总位数最大为7
    n: 小数位位数
    例: float(5,2)取值范围: -999.99 ~ 999.99
  8. double(8个字节)
    字段名 double(m,n)
  9. decimal(m,n)
    存储空间(整数部分, 小数部分分开存储)
    规则: 将9的倍数包装成4个字节
余数01-23-45-67-8
字节01234
例:decimal(19,9)
  整数部分: 10/9=1余1 4字节+1字节 = 5
  小数部分: 9/9=1余0  4字节+0字节 = 4
  总共 : 9个字节

2. 字符类型

  1. char() : 定长
    char(宽度) 宽度取值范围: 1 - 255
    name char(20)
    "A" --> 占20个字节
  2. varchar() : 变长__一定要传宽度值__
    varchar(宽度) 宽度取值范围 : 1 - 65535 限制最大字符串长度
  3. text / longtext(4G) /blob /longblob
  4. char 和 varchar的特点
  5. char :浪费存储空间, 性能高
  6. varchar: 节省存储空间, 性能低
  7. 字符类型的宽度和数值类型的宽度的区别
  8. 数值类型宽度为显示宽度, 只用于select查询时显示, 和占用存储无关, 可用zerofill设置用0填充
    例 id int(3) zerofill,(不够3个数左补零)
  9. 字符类型的宽度超过后无法存储

3. 枚举类型

  1. 单选enum
    sex enum('值', '值',...) DEFAULT '值',
  2. 多选set
    likes set('值', '值',...)

枚举类型使用示例

create table students( id int(3) zerofill,
name char(15),
age tinyint unsigned,
sex enum('male', 'female', 'secret'),
likes set('ml','killtime','sm','kickyouass'), score float(3,1)
)character set utf8;

指定为SET('one', 'two') NOT NULL
的列可以有下面的任何值:
''
'one'
'two'
'one,two'

4. 日期时间类

  1. date : 'YYYY-MM-DD'
  2. datetime : 'YYYY-MM-DD HH:MM:SS'默认值NULL
  3. timestamp : "YYYY-MM-DD HH:MM:SS"默认值CURRENT_TIMESTAMP
  4. time : 'HH:MM:SS'

1. 日期时间函数

  1. now()函数, 返回服务器当前日期时间"YYYY-MM-DD HH:MM:SS"
  2. curdate() 当前日期'YYYY-MM-DD' curtime() 当前时间'HH:MM:SS'

  3. date('1999-09-09 09:09:09') 提取 年月日
  4. time('...') 提取 时分秒
  5. year('...') 提取 年

select * from t2 where date(cztime) > '2018-08-00' ;
select * from t2 where date(cztime) <'2018-09-01' and date(cztime) > '2018-08-00';

2. 日期时间运算

1. 语法格式 
select * from 表名
where 字段名 运算符(时间-interval 时间间隔单位);
时间间隔单位:2 day | 3 hour | 1 minute | 2 year | 3 month

  1. 示例
    1. 查询1 天以内的充值记录
      select * from t2 where
      cztime >= (now()-interval 1 day);
    2. 查询1年以前的充值记录
      select * from t2 where cztime < (now()-interval 1 year);
    3. 查询1天以前, 3天以内的充值记录
      select* from t2 where cztime cztime <= (now()-interval 1day) and cztime >= (now() - interval 3 day );

3. 运算符操作

  1. 数值比较&&字符比较&&逻辑比较
    1. 数值比较: = != > >= < <=
    2. 字符比较: = !=
    3. 逻辑比较:and or
  2. 范围内比较
    1. between 值1 and 值2
    2. in(值1, 值2)
    3. not in(值1, 值2)
  3. 匹配空 和 非空
    1. 空: is null
    2. 非空: is not null
    3. 注意
      1. NULL :空值 , 只能用is, is not去匹配
      2. "" : 空值字符串,只能用 =, != 去匹配
  4. 模糊查询(like)
    1. where 字段名 like 表达式
    2. 表达式
      1. _: 匹配单个字符
      2. %: 匹配0到多个字符

转载于:https://www.cnblogs.com/ravener/p/9657327.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值