mysql

安装mysql教程,网上有很多,这里就过多的介绍了。

  • 连接数据库
    打开命令行,输入以下命令
    mysql -u root -p123456
    以上是mysql在本地的连接方式,如果mysql安装在服务器呢,我们需要怎么连接呢。其实只需要在以上命令上面加上-h 主机名和-P
    端口号即可。
    注:端口号的P是大写的。
    mysql -h 192.168.0.53 -P 3306 -u root -p123456

数据库操作

  • 创建数据库
    create database develop default charset utf8;
    这里创建一个名为develop的数据库 ,并指定默认编码为utf8。
  • 查看数据库
    show databases;
  • 删除数据库
    drop database develop;
  • 进入数据库
    use develop;
    查看数据库详细信息 可以使用 status命令

数据类型

sql中的数据类型分为三大类,详细的分类请查看MySQL 中的数据类型介绍

  • 数值类型


  • 日期和时间类型


  • 字符串类型


数据表操作

  • 查看所有数据表
    show tables;
  • 创建数据表
create table t1(
   #id从1自动省长,并设置为主键
    id int auto_increment primary key,
    #设置name不可以为null,如果插入时没有name则会报错,默认是可以为null
    name varchar(50) not null,
    #设置username不可以为null,并且其值在数据表里是唯一的,不可重复
    username varchar(255) uniqu not null,
    #设置age是无符号的正整数,并且默认值为0
    age int unsigned default(0) 
)
  • 显示表信息
    desc t1;
    查看表结构
    show create table t1;
    显示创建表的sql语句
  • 添加列
    alter table t1 add phone varchar(50);
  • 修改列
    alter table t1 change phone age int;
    把原先的phone列改名为age,并修改数据类型为int
  • 删除列
    alter table t1 drop phone;
  • 删除表
    drop table t1;

数据行操作

  • 插入
    往数据表里插入数据
    insert into t1 (column1,column2...) values (value1,vaule2...);

  • 查询
    查询是数据库里使用的最频繁的操作,据统计数据库的读写比例为10:1,由此可见查询是有多么重要。
    为了满足各种复杂的需求,我们也需要写出各种复杂的sql,所以难度系数最高的也是查询。

    • 简单的查询
      select * from t1;
      从数据表里获取所有记录,这里的*是一个通配符,即返回结果集里所有列
    • 带条件查询where
      select id,name from t1 where id = 1;
      从t1表中查询符合id=1行的id,name
    • in操作符
      in查询某值是否在某条件里,相反的也有not in
      select * from t1 where id in (select cid from t2 where name = 'test')
      select 语句返回的结果集可以作为条件继续查询
    • 多条件查询 and,or
      and 逻辑与 即两边的条件都符合才成立
      or 逻辑或 即两边的条件只要满足一个就成立
      select * from meizi where name='lucy' or (height>160 and weight <= 120)
      这里使用了一个算术优先级,把括号内的内容做为一个整体条件
    • 范围匹配
      select * from meizi where age between 18 and 30 ;
      查找age在18~30之间的所有行,这里只能采用and操作符,不能使用or
    • null
      select * from meizi address is null;
      查找符合地址为null的数据
      select * from meizi address is not null;
      查找地址不为null的mz
    • 通配符
      • "%" 匹配任意数目字符(包括零个字符)
      • "_" 匹配任何单个字符
        在sql中匹配模式中不能使用!=或者=来进行匹配,而是使用like或not like比较操作符。
        使用示例:
        select * from t1 name like 'l%'
        匹配所有name以l开头的
        select * from t1 name like '_ucy'
        匹配所有name第一个字符为任意字符,并以ucy结尾
    • 排序
      排序使用order by对指定的列进行排序,使用 desc降序 asc升序 排序规则进行排序
      select * from meizi order by age desc;
      对age进行降序排序,最大的数值在最前面。如果不指定desc,则默认按asc升序进行排序
      对多个列排序
      select * from meizi order by age desc,name,height;
      如果第一个列值相同,才会对二个列按指定的规则进行排序,第三列同上
      order by 可以对任何数据类型进行排序,varchar,text等类型 则按ascii码表的值进行排序
    • 聚合函数
      mysql常用的聚合函数如下:
      • count(exrp) 返回指定列中非null值的个数
      • avg(exrp) 返回指定列的平均值
      • max(exrp) 返回指定列的最大值
      • min(exrp) 返回指定列的最小值
      • sum(exrp) 返回指定列的所有值的和
    • 分组查询
      使用group by对指定列不同的值进行分组,group by一般和聚合函数一起使用才有意义
      使用group by有两个要素
      • 出现在select后面的字段 要么是是聚合函数中的,要么就是group by 中的.
      • 要筛选结果 可以先使用where 再用group by 或者先用group by 再用having
        having和where都是对条件进行筛选,SQL语言中设定集合函数的查询条件时使用having而不是where。通常情况下,having被放置在SQL命令的结尾处。

    使用示例:
    select age from t1 group by age;
    select age,height from meizi where age >18 group by height having height > 165;

    • 连接查询
      在sql中 分为三个连接
      • inner join 内连接(一般简写为join),获取两个表中字段匹配关系的记录
      • left join 左连接,获取左表所有记录,即使右表没有对应匹配的记录
      • right join 右连接,与left join相反

    这三种连接的使用方式都是相同的,只是连接后的取值方式略有差异
    使用示例:
    select * from t1 join t2 on t1.id = t2.pid
    使用连接操符后如果没有 on 的条件,会出现笛卡尔积

  • 删除
    delete from t1;
    这样是删除整个表里的数据,请谨慎使用。
    如果只是删除指定的的数据,使用where关键字后跟上根据查询条件删除。如:
    delete from t1 where name = 'test';
    删除name等于test的所有行

  • 更新
    更新数据表,使用update关键字,后面也需要跟上查询条件进行更新,否则是更新整个表
    update t1 set name='czlyj' where id = 1;
    更新所有符合id=1行

注:执行更新和删除操作时,尤其要谨慎,一但操作失误,数据也无法恢复,所以尽量使用唯一的条件去匹配,避免照成不必要的损失。

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