MySQL基础

作者: 强某某 | 来源:发表于2018-12-14 16:08 被阅读5次

    MySQL的SQL语句


    1.DDL : 定义数据库,数据表的结构,create drop alter

    2.DML : 数据操纵语言, insert update delete

    3.DCM : 数据控制语言,定义访问权限,取消访问权限,安全设置 grant

    4.DQL :数据查询语言, select(查询) from子句 where子句


    数据库CRUD操作

    首先登录数据库: mysql -uroot -p

    创建数据库

    create database java
    -- 指定字符集
    create database java character set utf8
    -- 指定校对规则
    create database java character set utf8 collate 校对规则
    
    

    查看数据库

    -- 查看所有数据库
    show databases;
    -- 查看数据库定义语句
    show create database java
    

    修改数据库

    -- 修改数据库的字符集
    alter database java character set utf8
    

    删除数据库

    drop database java;
    

    其他数据库命令

    -- 切换数据库
    use java
    -- 查看当前使用的数据库
    select database();
    

    表的CRUD操作

    创建表

    -- 列的约束
        主键约束: primary key
        唯一约束: unique
        非空约束: not null
    
    -- 数据类型
        data : YYYY-MM-DD
        time : hh:mm:ss
        datatime: YYYY-MM-DD hh:mm:ss 默认null
        timestamp: YYYY-MM-DD hh:mm:ss 默认当前时间
    create table student(
        sid int primary key,
        sname varchar(30),
        sex int,
        age int
    ) ;
    

    查看表

    -- 查看所有表
    show tables;
    -- 查看表的定义
    show create table student;
    -- 查看表结构
    desc student;
    

    修改表

    -- 添加列
    alter table student add chengji int not null;
    -- 修改列(修改列sex的类型为varchar类型)
    alter table student modify sex varchar(2);
    -- 修改列名(修改列sex名为gender)
    alter table student change sex gender varchar(2);
    -- 删除列
    alter table student drop gender;
    -- 修改表名
    rename table student to java;
    -- 修改表的字符集
    alter table student character set utf8;
    

    删除表

    drop table student;
    

    表数据的CRUD操作

    插入数据

    insert into student (name,age,sex) values ("qiang",20,"1");
    insert into student values("zeng",30,"2");
    -- 批量插入(成功一起成功,失败一起失败)
    insert into student values("zeng",30,"2"),("zeng",30,"2");
    -- 查看表中数据
    select * from student;
    

    MySQL插入中文的问题


    1.关闭MySQL服务

    2.找到my.ini文件,找到第57行,修改为gbk

    配置文件截图.png

    3.重启MySQL服务即可


    删除记录

    delete from student where name='qiang';
    -- delete不指定条件会一条一条全部删除(数据量少的时候效率高)
    delete from student;
    -- truncate(DDL)删除(先删除表在重建表,数据量多的时候效率高)
    truncate student;
    

    更新表记录

    -- 修改age=20的数据的sex为30 name为曾
    update student set sex=30,name="曾" where age=20;
    

    查询记录

    select [distinct] [*] [列名,列名2] from 表名 [where 条件]
    -- distinct 去重查询
    select distinct * from student;
    -- 别名查询 as关键字 可省略
    select distinct sex s from student;
    -- 运算查询
    SELECT  *, age*2 AS ageall FROM student WHERE age=20;
    -- 查询年纪在10-20
    SELECT  * FROM student WHERE age>10 AND age<20;
    SELECT  * FROM student WHERE age BETWEEN 10 AND 20;
    -- like:模糊查询
        _ : 代表一个字符
        % : 代表是多个字符
    SELECT * FROM student WHERE NAME like'_曾';
    -- in 查询某个范围中获得的值
    SELECT * FROM student WHERE age IN (20,30)
    -- 排序查询(asc 升序,默认  desc 降序)
    SELECT  * FROM student WHERE age ORDER BY age asc;
    

    聚合函数

    --注意:where之后不可以接聚合函数
    -- 求和 sum()
    SELECT SUM(age) FROM student WHERE age>1;
    -- 求平均值avg()
    SELECT AVG(age) FROM student WHERE age>1;
    -- 统计数量
    SELECT COUNT(*) FROM student;
    -- 最大值/最小值 max()/min()
    SELECT MAX(age) FROM student WHERE age>1;
    --综合(查询所有年纪大于平均年纪的信息)
    --之所以用子查询是因为where后面不可以使用聚合函数
    SELECT * FROM student WHERE age> (SELECT AVG(age) FROM student);
    

    分组查询(group by)

    -- having 关键字 可以接聚合函数 出现在分组之后
    -- where  关键字 不可以接聚合函数,出现在分组之前
    -- 查询age大于1并且分组信息中sex为2的信息
    SELECT * FROM student WHERE age>1 GROUP BY age HAVING sex='2';
    

    相关文章

      网友评论

        本文标题:MySQL基础

        本文链接:https://www.haomeiwen.com/subject/mepghqtx.html