mysql入门

SQL的分类

  1. DDL 数据定义语言
    • 创建数据库 创建表 创建视图 创建索引 修改数据库 删除数据库 修改表 删除表
    • create ‐‐ 创建 alter ‐‐ 修改 drop ‐‐ 删除
  2. DML 数据操作语言

    * 操作数据 插入数据(insert) 修改数据(update) 删除数据(delete)

  3. DCL 数据控制语言
    • if else while
  4. DQL 数据查询语言
    • 从表中查询数据(select)

数据库的操作(CURD 

创建数据库

1.创建数据库的语法
*基本的语法:create database 数据库名称;
*正宗的语法:create database 数据库名称 character set 编码 collate 校对规则;
2.校对规则(了解):决定当前数据库的属性。创建一个名称为mydb1的数据库。
*create database mydb1;
创建一个使用utf8字符集的mydb2数据库。
*create database mydb2 character set 'utf8';
创建一个使用utf8字符集,并带校对规则的mydb3数据库。
*create database mydb3 character set 'utf8' collate 'utf8_bin';

查看数据库

1.show databases;	‐‐ 查看所有的数据库
2.use 数据库名称;(*****)	‐‐ 使用数据库
3.show create database 数据库名称;	‐‐ 查询数据库的创建的信息
4.select database();	‐‐ 查询当前正在使用的数据库

删除数据库

drop database 数据库名称

查看当前数据库服务器中的所有数据库

  • show databases;

查看前面创建的mydb2数据库的定义信息

  • show create database mydb2;

删除前面创建的mydb1数据库

  • drop database mydb1;

修改数据库

1.语法:alter database 数据库名称 character set 'gbk' collate '校对规则';

表结构操作(CURD

创建表

  1. 语法:

create table 表名称(

字段1 类型(长度) 约束, 字段2 类型(长度) 约束, 字段3 类型(长度) 约束

);

2.注意:

  • 创建表的时候,后面用小括号,后面分号。
  • 编写字段,字段与字段之间使用逗号,最后一个子段不能使用逗号。
  • 如果声明字符串数据的类型,长度是必须指定的。
  • 如果不指定数据的长度,有默认值的。int类型的默认长度是1

     3.创建一张表结构(员工表练习

    create table employee(

            id int,

            name varchar(30),

            gender char(5),

            birthday date,

            entry_date date,

            ob varchar(50),

            salary double,

            resume text

    );

            

    4.执行SQL语句

    • 查询当前正在使用的数据库 select database();
    • 选择你要使用的数据库 use mydb2;
    • 执行创建表的SQL语句。

      5.使用desc employee;查询表的信息

         

           

      数据库的数据类型

      单表的约束

      1. 约束的好处:保证数据的完整性。
      2. 主键约束(重要)代表记录的唯一标识。
        • 关键字:primary key 通过该关键字声明某一列为主键。
        • 唯一 值就不能相同
        • 非空 值也不能为空
        • 被引用 (和外键一起来使用)
      3. 唯一约束
        • 声明字段值是唯一的。使用关键字 unique
      4. 非空约束
        • 声明字段的值是不能空的。not null

      删除和查看表

      修改表

      1. 语法
        • alter table 表名 add 新列名 类型(长度) 约束; ‐‐ 添加列
        • alter table 表名 drop 列名; ‐‐ 删除列
        • alter table 表名 modify 列名 类型(长度) 约束; ‐‐ 修改列的类型或者约束
        • alter table 表名 change 旧列名 新列名 类型(长度) 约束; ‐‐ 修改列名
        • rename table 表名 to 新表名; ‐‐ 修改表的名称
        • alter table 表 名 character set utf8; ‐‐ 修改表的字符集

      在上面员工表的基本上增加一个image列。

              alter table employee add image varchar(50);

      修改job列,使其长度为60

              alter table employee modify job varchar(60);

      删除gender列。

              alter table employee drop gender;

      表名改为user

              rename table employee to user;

      修改表的字符集为utf8

              alter table user character set utf8;

      列名name修改为username

              alter table user change name username varchar(30);

      数据的操作(CRUD)

      插入数据(insert

      1. 插入数据的语法:
        • insert into 表名 (字段1,字段2,字段3) values (1,2,3);
        • insert into 表名 values (1,2,3);
      2. 注意事项
        • 插入的数据与字段类型必须是相同的。
        • 数据的大小范围在字段范围内
        • 值与字段一一对应
        • 字符串或者日期类型数据需要使用单引号

      insert into user values (1,'meimei','1956‐1‐1','1957‐1‐1','HR',5000,'meimeimei','xx'); insert into user values (2,'小凤','1996‐1‐1','2013‐1‐1','BOSS',15000,'mei','xx');
      insert into user values (3,'聪聪','1993‐11‐11','2015‐09‐10','WORKER',500.0,'chou','yy');
      insert into user values (4,'如花','1994‐1‐1','2013‐1‐1','BOSS',25000,'mei','xx'); insert into user values (5,'小苍','1991‐1‐1','2014‐1‐1','BOSS',15000,'mei','xx'); insert into user values (6,'小泽','1986‐1‐1','2013‐1‐1','BOSS',15000,'mei','xx');

      MySQL插入中文数据乱码

      1. 先把MySQL服务停止。
      2. 找到MySQL安装文件的my.ini的配置文件

      [client] port=3306 [mysql]

      default‐character‐set=gbk

      1. 重启MySQL服务

      修改数据(update

      删除数据(delete

      1.语法:delete from 表名 where 条件;
      2.如果没有where条件,默认删除所有的数据。
      
      3.truncate 表名;删除表中所有的数据。delete from 表名; 也可以删除所有数据。
      *区别: truncate先把你整个表删除掉,默默创建一个空的表(和原来的表结构是一样的)。
      *delete from 表名 一行一行的删除。(使用它)
      *事物的概念:事物提交和事物回滚。
      
      删除表中名称为’聪聪’的记录。
      delete from user where username = '聪聪';
      删除表中所有记录。
      delete from user; drop table user;删除数据及
      使用truncate删除表中记录。

      查询数据(select

      基本的select语句

      练习
      create database day15; use day15;
      create table stu( id int,
      name varchar(30), math int,
      english int, chinese int
      );
      
      insert into stu values (1,'美美',78,93,56); insert into stu values (2,'聪聪',18,13,16); insert into stu values (3,'小凤',98,96,89); insert into stu values (4,'如花',90,100,46); insert into stu values (5,'欧阳锋',74,93,56); insert into stu values (6,'吴彦祖',37,11,89); insert into stu values (7,'聪大',88,77,66); insert into stu values (8,'聪二',55,44,33);

      查询语句中使用运算和别名

      在所有学生分数上加10分特长分。
      select name,(math+10) m,(english+10) e,(chinese+10) c from stu;
      统计每个学生的总分。
      select name,(math+english+chinese) 总 分 from stu;
      使用别名表示学生分数
      select name,(math+english+chinese) 总 分 from stu;

      使用where条件过滤

      查询姓名为聪聪的学生成绩
      select name,math,chinese from stu where name = '聪聪';
      查询英语成绩大于90分的同学
      select name,english from stu where english > 20;
      查询总分大于200分的所有同学
      select name,math+english+chinese from stu where (math+english+chinese) > 200;
      

      where子句中出现的运算

      查询英语分数在 80-90之间的同学。
      select * from stu where english >= 10 and english < 19;
      查询数学分数为89,90,91的同学。
      select * from stu where math in (89,90,91);
      查询所有姓小的学生成绩。
      select * from stu where name like '小%';
      查询数学分>80,语文分>80的同学。
      select * from stu where math > 80 or chinese > 80;

      总结:select 列名(运算) from 表名(别名) where 条件(运算的符号);

      order by 对查询的结果进行排序

      1.排序的语法
      *select * from 表名 where 条件 order by 列名 升序/降序;
      2.升序和降序
      *order by 列名 asc;(升序,默认值)
      *order by 列名 desc;(降序)
      3.order by 子句必须出现在select语句的末尾。

      对数学成绩排序后输出。

              select name,math from stu order by math desc;

      对总分排序按从高到低的顺序输出

              select name,(math+english+chinese) as total from stu order by total desc;

      姓聪的学生成绩按照英语进行降序排序,英语相同学员按照数学降序

              select name,english,math from stu order by english desc,math desc;

      对姓聪的学生成绩排序输出

              select name,(math+english+chinese) as total from stu where name like '聪%' order by total desc;

      聚集函数

      统计一个班级数学总成绩?
      select sum(math) from stu;
      统计一个班级语文、英语、数学各科的总成绩
      select sum(math),sum(english),sum(chinese) from stu;
      统计一个班级语文、英语、数学的成绩总和
      select sum(ifnull(math,0)+english+chinese) from stu; select sum(math) + sum(english) + sum(chinese) from stu;
      * 编写一条更新语句:update stu set math = null where id = 2;
      统计一个班级语文成绩平均分

      评论
      添加红包

      请填写红包祝福语或标题

      红包个数最小为10个

      红包金额最低5元

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

      抵扣说明:

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

      余额充值