MySQL数据库 命令行 学习笔记 第一天(黑马)

常用关系型数据库

1 MySQL:开源免费的适用于中小型企业的免费数据库
2 oracle:甲骨文公司,商业软件,收费,适用于大型电商网站
3 db2:IBM公司,银行系统主要采用db2
4 SqlSever:Windows里面,政府网站asp.net,大学教学通常使用SqlSever,图形化工具做的不错

NOSQL非关系型数据库:key:value
关系型数据库:用来描述实体与实体之间的关系
E-R关系图:实体用方框,属性用椭圆,关系用菱形

MySql的SQL语句

SQL:structure query language 结构化查询语言
DDL:数据库定义语言:定义数据库和数据库表的结构:create(创建)、drop(删除)、alter(修改)
DML:数据操作语言:用来操作数据 insert(插入)、update(修改)、delete(删除)
DCL:数据控制语句:定义访问权限,取消访问权限,安全设置 grant
DQL:数据查询语句:select(查询) from 表名 where 条件

数据库的CRUD的操作

  1. 登录数据库服务器:mysql -h localhost -u root -p

  2. 创建数据库:create database 数据库名称;
    create database day06;

    create database 数据库名称 character set 字符集;
    create database day06_1 character set utf8;

    create database 数据库名称 character set 字符集 collate 校对规则;
    create database day06_2 character set utf8 collate utf8_bin;

  3. 查看数据库
    show databases;
    查看数据库的创建过程
    show create database 数据库名字;

  4. 修改数据库的操作
    alter database 数据库名字 character set 字符集;
    alter database day06_1 character set gbk;

  5. 删除数据库
    drop database 数据库名字;
    drop database day06;

  6. 其他数据库操作

    切换到某一数据库
    use 数据库名称;(在该数据库创建表前使用该语句)

    查看当前正在使用的数据库
    select database();

表的CRUD操作

  1. 创建表
    create table 表名(列名 列的类型(长度) 约束,列名2 列的类型(长度) 约束);

    列的常用类型:
    int
    char/varchar char:固定长度 varchar:可变长度
    double
    float
    boolean
    date: YYYY-MM-DD
    time: hh:mm:ss
    datetime: YYYY-MM-DD hh:mm:ss 默认值是null
    timestamp: YYYY-MM-DD hh:mm:ss 默认值是当前时间
    text: 用来存放文本
    blob: 存放二进制
    列的约束:
    主键约束:primary key
    唯一约束:unique
    非空约束:not null

    例:
    实体:学生 ID 姓名 性别 年龄
    create table student(
    sid int primary key,auto_increment//主键,自增长
    sname varchar(10),
    sex int,
    age int)

  2. 查看表
    查看所有表
    show tables;
    查看表的创建过程
    show create table 表名;
    查看表结构(内容)
    desc 表名;

  3. 修改表
    添加列(add)
    alter table 表名 add 列名 列的类型 列的约束
    alter table student add chengji int not null;

    修改列(modify)
    alter table student modify 列名 列的类型;
    alter table student modify sex varchar(2);

    修改列名(change)
    alter table student change 原本的列名 新的列名 列的类型;
    alter table student change sex gender varchar(2);

    删除列(drop)
    alter table student drop 列名;
    alter table student drop chengji;

    修改表名(rename)
    rename table 原来的表名 to 新的表名;
    rename table student to heima;

    修改表的字符集
    alter table 表名character set 新的字符集;
    alter table heima character set gbk;

  4. 删除表
    drop table 表名;

Sql对表中数据的CRUD的操作

  1. 插入数据
    insert into 表名values(值1,值2,值3); 插入全列数据
    insert into 表名(列1,列2) values(值1,值2); 插入部分字段

    批量插入(效率更高)
    insert into 表名values
    (值1,值2,值3),
    (值4,值5,值6),
    (值7,值8,值9);

  2. 删除数据
    delete from 表名 where 条件;
    delete from student where sid=10;
    delete from student; 将表中的数据全部删除

    delete 删除数据与truncate 删除数据的区别:
    delete:DML 一条一条删除数据
    truncate:DDL 先删除表再重建表
    如果数据比较少,delete比较高效
    如果数据比较多,truncate比较高效

  3. 改数据
    update 表名 set 列名=值,列名2=值 where 条件;
    update student set sname=‘李四’ where sid=5;
    如果值是字符串,日期要加上单引号

  4. 查询数据
    select 列名1 列名2 from 表名 where 条件
    select * from 表名; 查询表内所有内容

    表别名(as可以省略)
    select p.name,p.price from product as p;//将product表名字改成p
    列别名
    select pname as 商品名称,price as 商品价格 from product;//将product表中pname列名改成商品名称,将price列名改成商品价格

    去除重复的值
    select distinct price from product;

    运算查询:在查询结果上做运算
    select **,price*0.8 as 折后价 from product;//查询所有列,并将price这一列乘以0.8填入新的一列,叫做折后价列

    条件查询
    select *from product where price>60;//查询price>60的数据
    select *from product where price>10 and price<100;//查询10<price<100的数据
    select *from product where price between 10 and 100;//查询10<price<100的数据
    select *from product where price<30 or price>100;//查询price<30或者price>100的数据

    模糊查询(like)
    _:代表一个字符
    %:代表多个字符
    select * from product where pname like ‘%饼%’;//查询出名字中带有饼的所有商品
    select * from product where pname like ‘_熊’%;//查询出名字第二个字是熊的所有商品

    in 在某个范围中获得值
    select * from product where cno in (1,4,5)//查询cno这一列的值在1 4 5里的所有商品

    排序查询(order by 关键字)
    asc : ascend 升序
    desc : descend 降序
    select * from product order by price;//查询所有商品按照价格排序(默认升序)
    select * from product order by price desc;//查询所有商品按照价格降序排序
    select * from product where pname like ‘%小%’ order by price asc;//查询名称中有 小 的商品 ,按照价格升序

    聚合函数
    sum();求和
    avg();求平均数
    count():统计数量
    max():最大值
    min():最小值

    select sum(price) from product;//获得所有商品价格总和,price是价格列名
    select avg(price) from product;//获得所有商品的平均价格
    select count(*) from product;//获得所有商品的个数

    注:where 条件后面不能接聚合函数

    分组(group by)
    select cno,count() from product group by cno;//根据cno字段分组,分组后统计商品的个数,并创建count()列

    select cno,avg(price) from product group by cno having avg(price)>60;//根据cno分组,分组统计每组商品的平均价格,并且商品的平均价格>60

    having 关键字 可以接聚合函数 出现在分组之后
    where 关键字 不可以接聚合函数 出现在分组之前

编写顺序
select …from…where…group by…having…order by
执行顺序
from…where…group by…having…select…order by

猜你喜欢

转载自blog.csdn.net/chenchaozzu/article/details/83056037