您当前的位置:首页 > 计算机 > 软件应用 > 数据库 > MySQL

MySQL 基本语法

时间:11-10来源:作者:点击数:

一、基本命令

    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填充

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门