My SQL 基本语法

一、基本命令
    1.启动服务
        说明:以管理员身份运行cmd
        格式:net start 服务名称

    2.停止服务
        说明:以管理员身份运行cmd
        格式:net stop 服务名称

    3.连接数据库
        格式:mysql -u root -p

    4.退出登录(断开连接)
        quit或exit

    5.查看版本(连接后执行的)
        示例:select version();

    6.显示当前时间
        示例:select now();

    7.远程连接
        格式:mysql -h ip地址 -u 用户名 -p
        输入对方mysql密码



二、数据库操作
    1.创建数据库
        格式:create database 数据库名 charset = utf8;
        示例:create database student charset = utf8;
    
    2.删除数据库
        格式:drop database 数据库名;
        示例:drop database student;

    3.切换数据库
        格式:use 数据库名;

    4.查看当前选择的数据库
        格式:select database();

三、表操作
    1.查看当前数据库中的表
        show tables;
    2.创建表
        格式:create table 表名(列及类型);
        说明:(1) auto_increment 表明自增长    
             (2) primary key主键        
             (3) not null不为空
        示例:create table car(id int auto_increment primary key,name varchar(20) not null);
             create table car(id int auto_increment primary key not null,nam  varchar(20) not null,color varchar(10) not null);

    3.删除表
        格式:drop table 表名;
        示例:drop table car;

    4.查看表结构
        格式:desc 表名
        示例:desc select;

    5.查看建表语句
        格式:show create table 表名;
        示例:show create table student;

    6.重命名表
        格式:rename table 原表名 to 新表名;
        示例:rename table car to new car;

    7.修改表(不建议修改表结构)
        格式:alter table 表名     add|change|drop 列名 类型;
        说明:(1) add 增加
             (2) change 改变列名
             (3) drop 删除
        示例:alter table new_car add isDelete bit default 0;

四、数据操作
    1.增加
        a.全列插入
            格式:insert into 表名 values(...)
            说明:主键列是自动增长的,但是在全列插入时需要占位,通常使用0,插入成功以实际数据为准
            示例:insert into new_car values(0,'Jeep',0);

        b.缺省插入
            格式:insert into 表名(列1,列2,...) values(值1,值2,...);
            说明:后面的值要与前面的列对应
            示例:insert into new_car(name,isDelete) values('BYD',0);

        c.同时插入多条数据
            格式:insert into 表名 values(...),values(...),...;
            说明:插多少,写多少values
            示例:insert into new_car values(0,'KIA',1),(0,'TOYOTA',1);

    2.删除
        格式:delete from 表名(全部删除)
             delete from 表名 where 条件;(选择删除)
        示例:delect from car where id=2;

    3.改
        格式:update 表名 set 列1=值2,列2=值2,...where 条件
        示例:update car set color="blue" where id=1;
        注意:如果没有条件,则是全部列都修改,慎用

    4.查
        a.全部查询
        说明:查询表中的全部数据
        格式:select * from 表名
        示例:select * from new_car;

五、查
    1.基本语法
        格式:select * from 表名
        说明:(1) from关键字,后面是表名,表示数据来源于这张表
             (2) select后面写表中的列名,如果是*,表示在结果集中显示表中的所有列
             (3) 在select后面的列名部分,可以使用as为列名起别名,这个别名显示在结果集中
             (4) 如果要查询多个列,之间使用逗号分割
        示例:select * from student;
             select name,age from student;
             select name as a ,age from student;        


    2.消除重复行
        说明:在select后面列的前面使用distinct可以消除重复的行
        示例:select distincture gender from student;

    3.条件查询
        a.语法
            select * from 表名 where 条件

        b.比较运算符
            等于(=);大于(>);小于(<);大于等于(>=);小于等于(<=);不等于(!=或<>)
            需求:查询id值大于3的数据
            示例:select * from student where id>3;

        c.逻辑运算符
            并且(and);或者(or);非(not)
            需求:查询年龄小于20的女同学
            示例:select * from student where age<20 and herder=1;

        d.模糊查询
            格式:使用like;表示任意多个任意字符(%);表示任意一个字符(_)
            需求:查询姓习的同学
            示例:select * from student where name like '习%';

        e.范围查询
            格式:使用in,表示在一个非连续的范围内
                 使用between...and... 表示在一个连续的范围内
            需求:查询编号是2,4,5的学生
            示例:select * from student where id in (2,4,5);
            需求:查询编号是3到6的学生
            示例:select * from student where id between 3 and 6;

        f.空判断
            注意:null与""是不同的
            判断空:is null
            判断非空:is not null

            需求:查询没有地址的
            示例:select * from student where address is null
        g.优先级
            小括号,not ,比较运算符,逻辑运算符
            注意:and 比 or 的优先级高,如果同时出现并希望先算or,需要结合括号来使用

    4.聚合
        为了快速得到统计的数据,提供了5个聚合函数
        a.count(*)  表示计算总行数,括号中可以写*和列名
        b.max(列名) 表示求此列的最大值
        c.min(列名) 表示求此列的最小值
        d.sum(列名)    表示求此列的和
        e.avg(列名) 表示求此列的平均值
        格式:select 聚合函数(列名) from 表名

    5.分组
        按照字段分组,表示此字段相同的数据会被放到一个集合中.
        分组后,只能查询相同的数据列,对于有差异的数据列,无法显示在结果集中
        可以在对分组后的数据进行统计,做聚合运算

        语法:select 列1,列2,聚合.....from 表名 group by 列1,列2,列3.....having 列1,列2....聚合....
        需求:查询男女生总数
        示例:select gender,count(*)from student group by gender having gender

        where 与 having 的区别:
            where 是对from后面指定的表进行筛选,属于对原始数据的筛选
            having 是对group by进行筛选


    6.排序
        语法:select * from 表名 order by 列1 asc或者desc,列2 asc或者desc,....
        说明:
            a.将数据按照列1进行排序,如果某些列1的值相同,则按照列2进行排序
            b.默认按照从小到大的顺序排序
            c.asc 降序
            d.desc 升序
        示例:select * from student order by age;


    7.分页
        语法:select * from 表名 limit start(开始的位置),count(看几条数据);    
        示例:select * from 表名 limit 0,3;
        说明:sart索引从0开始



六、关联
    建表语句
    1.create table class(id int auto_increment primary key,name varchar(20) not null,stuNum int not null);
    2.create table students(id int auto_increment primary key,name varchar(20) not null,gender bit default 1,classid int not null,foreign key(classid) references class(id));

    插入一些数据:
        insert into class values(0,'python01',55),(0,'python02',50),(0,'python03',60),(0,'python04',70),(0,'python05',100);
        insert into students values(0,'tom',1,1);
        insert into students values(0,'jack',1,2);


        select students.name,class.name from class inner join students on class.id = students.id;
        select students.name,class.name from class left join students on class.id = students.id;
    分类:
        1.表a inner join 表b
          表示表a与表b匹配的行会出现在结果集中
        2.表a left join 表b
          表示表a与表b匹配的行会出现在结果集中,外加表a中独有的数据,未对应的数据使用null填充
          select students.name,class.name from class left join students on class.id = students.id;
        3.表a right join 表b
          表示表a与表b匹配的行会出现在结果集中,外加表b中独有的数据,未对应的数据使用null填充
  • 11
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值