Mysql基本操作 有这篇就够了

目录
一、数据库操作
二、用户授权
三、数据类型
四、 表的字段约束
五、表的基本操作
六、数据的基本操作

一、数据库操作

  1. 连接数据库 mysql -u root -p mysql

  2. 退出:quit exit ctrl+d

  3. 显示数据库show databases;

  4. 修改数据库为utf8alter database jaho charset=utf8

  5. use 库名;

  6. select database(); 查看当前的数据库

  7. 创建数据库 create database jaho charset utf8;

  8. 删除数据库 drop database jaho

  9. 快捷键

    • \G 格式化输出(文本式,竖立显示)

    • \s 查看服务器端信息

    • \c 结束命令输入操作

    • \q 退出当前sql命令行模式

    • \h 查看帮助

二、用户授权

格式:grant 允许操作 on 库名.表名 to 账号@来源 identified by '密码';

--实例:创建zhangsan账号,密码123,授权lamp61库下所有表的增/删/改/查数据,来源地不限
mysql> grant select,insert,update,delete on lamp61.* to zhangsan@'%' identified by '123';
mysql> grant all on . to zhangsan@'%' identified by '123';
Query OK, 0 rows affected (0.00 sec)

三、数据类型

MySQL的数据类型分为四大类:数值类型、字串类型、日期类型、NULL。

  1. 数值类型:
 tinyint(1字节) 0~255 -128~127  smallint(2字节)
 mediumint(3字节)          int(4字节)
 bigint(8字节)              float(4字节) float(6,2)
 double(8字节)              decimal(自定义)字串形数值
  1. 字串类型:

普通字串、char 定长字串 char(8)、varchar 可变字串 varchar(8)

  1. 二进制类型:

tinyblob、blob、mediumblob、longblob

  1. 文本类型:

tinytext text 常用于<textarea></textarea>

  1. 时间和日期类型:

date 年月日 time 时分秒 datetime 年月日时分秒 timestamp 时间戳 year 年

  1. NULL值

    NULL意味着“没有值”或“未知值”,可以测试某个值是否为NULL,不能对NULL值进行算术计算,-对NULL值进行算术运算,其结果还是NULL,0或NULL都意味着假,其余值都意味着真

四、 表的字段约束

- unsigned 无符号(正数)
- zerofill 前导零填充
- auto_increment 自增
- default  默认值
- not null 非空
- PRIMARY KEY 主键 (非null并不重复)
- unique 唯一性 (可以为null但不重复)
- index 常规索引

五、表的基本操作

  1. 查看:

    1. 查看表的创建语句(编码) show create database jaho;

    2. 查看所有表 show tables

    3. 表名\G --查看表的建表语句。 show create table \G

    4. 查看表内容 desc 表名

    5. 更改表名称:
      ALTER TABLE 旧表名 RENAME AS 新表名

    6. 更改表类型:
      ALTER TABLE 旧表名 RENAME AS 新表名

    7. 创建表

    CREATE TABLE 表名(
          id int auto_increment primary  key
          columnname1 datatype contrai,
          columnname1 datatype ,
          primary key (1或多个)
    )
    
  2. 修改:

    • 修改重命名 alter table 表名 change 原名 新名 类型及约束
      alter table students change birthday datetime not null;

    • 修改不重命名 alter table students modify 名 类型 约束
      alter table students modify birth date not null;

  3. 增加:

    • alter table 表名 add 列名 类型;
      alter table students add birthday datetime;
  4. 删除:

    • 删除列: alter table 表名 drop 列名
      alter table students drop birth date

    • 删除表:
      drop table students;

六、数据的基本操作

  1. 增:

    • 数据插入(全部列)
      insert into students values(0,'jaho'..)

    • 插入部分列
      insert into students (name,hometown) values('jaho','shwtao')

    • 批量插入多行数据
      insert into students values(0,'jaho'..),(0,'jaho'..)

    • 插入部分列 多行
      insert into students (name) values('jaho')('red')

    • 往一个表内插入另外一个表的数据 不用values
      insert into goods_cates (name) select cate_name from goods group by cate_name;

    • 创建外键

       create table study_record(
            id int auto_increment primary,
            day varchar(10) not null,
            stu_id int not null   # 创建外键与其他关联 必须要有
            foreign key(stu_id) references students(id)
      )
      
  2. 删除:
    delete from table where..

  3. 修改:
    update table set col1 = val1,col2=val2 where 条件

  4. 查:

    • 查全部
      select * from table

    • 查非重复
      select distinct name,score from students;

    • 偏移查询:从第二条数据开始查3行

    select * from table limit 3 offset 2

    • 分页: 每页显示m条数据,当前显示第n页 求5第n页的数据

      select * from students where is_delete=0 limit(n-1)*m,n

    • 模糊查询 必须为字符串,%表示0到多个任意字符 , _表示一个任意字符
      select * form table where day like '2018-6%';

    • 范围查询 in,非连续范围
      select * from students where id in(1,3,8);

    • 排序
      select * from table order by day (asc,desc降序);

    • 中文排序
      select * from table where convert(name using gbk) asc

    • 标量子查询

      select * from students where age > ( select avg(age) from students )`
      select cate_name, price, id from goods where 
      price > (select avg(price) from goods) order by price desc;
      
    • 列级子查询
      select name from students where cls_id in (select id from classes);

    • 查询每种类型中最贵的电脑信息 把主表中的商品与 副表,(即 价格最贵的商品的名字与价格 )一起作交集

      select * from goods inner join(select cate_name, max(price) as  max_price 
      from goods group by cate_name) as good_info on goods.price =   
      good_info.max_price and good_info.cate_name = goods.cate_name;
      
    • between..and... 在连续的范围内
      select * from students where id between 3 and 8

    • 空判断
      where xx is null / is not null

    • 权重
      not > and >or

    • 聚合函数 count(*),count(col) max(col) min(col) avg(col) round(avg(score),2) 保留2位小数
      select avg(score) from students

    • 分组查询 group by+group_concat():统计某个字段的作为输出
      select sex,group_concat(name) from students group by sex;

    • group by + 聚合函数

      • 某列的总数,分组统计,前后一致的name
        select name, count(*) from students group by name
      • 分组统计 取别名,前后一致的name
        select name, count(*) as stu_num from students group by name
    • with rollup 计算总数; coalesce(name,'总数') 给前面的取名字
      SELECT coalesce(name,'总数'),sum(socre) as '总分' from students group by name with rollup;

  5. mysql 连接

    1. 取别名
      select * from students as s left join classes as c on s.cls_id=c.id;
    2. 左连接:左差集
      select * from a left join on a.a = b.b
    3. 右连接:右差集
      select * from a right join on a.a = b.b
    4. 内连接 等值连接
      select * from a inner join b on a.a=b.b
    5. 并集
      select * from a left join b on a.a=b.b union select * from a right join b on a.a=b.b;
    6. mysql事务
      1. begin; 开启事务
      2. rollback 出现错误回滚 之前的信息不保存
      3. commit 提交数据 没提交之前数据存于内存中,执行之后保存到数据库里
      4. exit;
  6. mysql 索引

    1. 创建索引
      create index index_name on students(username(长度)) 必须加长度
      index index_name (name(10)) 创建表时添加
    2. 删除索引
      drop index index_name on students;
    3. 为user表中的name字段添加唯一性索引,索引名为uni_name
      alter table user add unique uni_name(name);
    4. 为user表中的email字段添加普通索引,索引名为index_eamil
      alter table user add index index_email(email);
    5. 将user表中index_email的索引删除
      alter table user drop index index_email;
  7. 导入和导出:

    • 将lamp138库导出
      mysqldump -u root -p lamp138 >lamp138.sql; Enter password:
    • 将lamp138库中的stu表导出
      mysqldump -u root -p lamp138 stu >lamp138_stu.sql Enter password:
    • 将lamp138库导入
      mysql -u root -p lamp138<lamp138.sql Enter password:
    • 将lamp138库中stu表导入
      mysql -u root -p lamp138<lamp138_stu.sql Enter password:
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341

推荐阅读更多精彩内容

  • 第一天 7月13日OCP笔记: Oracle Ocp11g准备资料: OracleFundmentals 书 管理...
    fjxCode阅读 2,778评论 0 4
  • MYSQL 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 MySQL基本操...
    Kingtester阅读 7,755评论 5 116
  • 观其大纲 page 01 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 M...
    周少言阅读 3,142评论 0 33
  • 《杂题》 人心可畏天莫违, 江山易改性难移。 大禹治水得疏导, 乡校不毁知合离。 白云山人 20170616
    赛德传播阅读 119评论 0 0
  • 落叶敲我窗 惊起一秋梦
    兰陵酒阅读 336评论 9 8