Mysql在Mac终端以及Navicat 的基本操作

本文详细介绍了如何操作MySQL数据库,包括登录、创建/删除数据库、使用数据库、操作表(创建、修改、删除)、数据的插入、更新和删除,以及数据查询(基础查询、条件查询、排序查询、聚合函数、分组查询和分页查询)。此外,还讲解了数据库约束,特别是外键约束的概念和使用。内容全面,适合初学者掌握MySQL基本操作。
摘要由CSDN通过智能技术生成

1.进入MySQL:

     打开终端,输入/usr/local/MySQL/bin/mysql -u root -p ,其中,root为数据库用户名。

输入密码后(密码输入不会被显示):

2.接下来就可以对数据库进行操作了

~创建数据库:create database 数据库名;

 

~显示当前所有数据库:show databases;

可以看到db1就在数据库列表里。

~删除数据库: drop database 数据库名;

~使用数据库:use 数据库名;

         输入use library;

~查看当前使用数据库:select database();    select database()是个函数

 可以看到当前使用的数据库是library

3.对数据库里的表进行操作

DDL-查询表

   ~查询当前数据库下的所有表名称:show tables;

 

~查询表结构: desc 表名称;(注意查的是表的结构信息,而不是数据)

Field这一列的信息是表头;

 创建表:

 

操作表-数据类型:

age int

score double(总长度,小数点后保留的位数)   如范围是0~100 ,要求小数点后保留两位

则 score double(5,2)

 删除表

     drop table 表名称;   或者: drop table if exists 表名称;

修改表

修改表名: alter table 表名 rename to 新的表名;

添加新的一列:alter table   表名 add 列名 数据类型;

修改数据类型:alter table 表名 modify 列名 新数据类型;

修改列名和数据类型:alter table 表名 change 列名 新列名 新数据类型;

删除列:alter table 表名 drop 列名;

4.DML-操作数据(对表中的数据进行操作)

   添加数据(insert):(1)  给指定列添加数据:insert into 表名(列名1,列名2)

                                                             values(值1,值2);

                     (2)给全部列添加数据    insert into 表名 values(添加各列的值);

                        (3)  批量添加全部列数据         insert into 表名 values(添加各列的值),

                                                           (添加各列的值),

                                                           (添加各列的值);     

                                批量添加指定列的数据  insert into 表名(列名1,列名2,...)

                                                                       values(值1,值2...),

                                                                        values(值1,值2...),

                                                                        values(值1,值2...);

修改数据(update):update 表名 set 列名1=值1,列名2=值2,...where 条件;

                         注意:若没有where条件语句,则会将表中全部数据修改!!!

删除数据(delete):  delete from 表名 where 条件;(直接删除那一行)

                         注意:若没有where条件语句,则会将表中全部数据删除!!!

5.DQL-数据查询(重要!!!                                                                                                                                                                                      

(1)基础查询

  • 查询多个字段     select  字段列表  from  表名;      select  *  from 表名; --查询所有列(所有数据)但不要使用*,因为要求代码规范
  • 去除重复记录     select distinct  字段列表  from 表名;  例: select distinct score from stus;
  • 起别名                AS: AS也可以省略    例:select   name , score as 数学成绩 from stus;                                                                   或者:select   name , score  数学成绩 from stus;

(2)条件查询

                 select 字段列表 from 表名 where 条件列表

     

例1:查询年龄在20到30之间的    select * from stus where age between 20 and 30;

          注意:在SQL里,日期也是可以比较大小的。

例2:查询年龄等于20或者年龄等于18的学员信息:select * from stus where age=18 or age = 20;

        或:select * from stus where age in(18,20);

 例3:查询成绩不为空的学生:select * from stus where score is not null;      

注意:在SQL里,null的判断不能用=或者!= ,而应该用is或者is not

  例4:查询第二个字是“梅”的学生:select * from stus where  name like "_梅%";

 例5:查询名字里含“想”的学生:select * from stus where  name like "%想%";

  • [ ] 可以匹配集合内的字符,例如 [ab] 将匹配字符 a 或者 b。用脱字符 ^ 可以对其进行否定,也就是不匹配集合内的字符。

例6:

SELECT *FROM mytable
WHERE col LIKE '[^AB]%'; -- 不以 A 和 B 开头的任意文本

模糊查询like中的%不限个数,可以是0个,可以是多个。  

(3)排序查询(order by)

语法:select 字段列表 from 表名 order by 排序字段名1【排序方式1】,排序字段名2【排序方式2】...

排序方式:ASC:升序排列(默认值)

                 DESC:降序排列

 注意:如果有多个排序条件,当前边的条件值一样时,才会根据第二条件进行排序

例1:查询学生信息,按年龄升序排序:select * from stus order by age;   或:select * from stus order by age asc;

例2:查询学生信息,按成绩降序排序:select * from stus order by score desc;

例3:查询学生信息,按成绩降序排列,如果成绩一样,再按年龄升序排列

         select * from stus order by score desc,age desc;

(4)聚合函数 

             a.概念:将一列数组作为一个整体,进行纵向运算。

             b.聚合函数分类:

           

           c.聚合函数语法:select  聚合函数名(列名)from 表;

                注意:null值不参与所有聚合函数运算。

          例1:统计班上一共多少个学生  select count(id) from stus;

                   注意:count统计的列名不能为null

                              主键或*(*:代表所有,只要那一行数据有一个不为空就能统计出来,且*会主                                                选择速度最快的那列统计)                                                              

                                除非必要,不能写*

          例2:查询成绩最高分:select max(score) from stus;

           例3:查询成绩平均分:select avg(score) from stus;

       

(5)分组查询(group by):

        分组查询语法:

select 字段列表 from 表名 【where 分组条件限定】 group by 分组字段名 【having 分组后条件过滤】   

       注意:分组之后,查询的字段为聚合函数和分组字段,查询其他字段无意义

having是分组后的筛选,可理解为最后一轮筛选

 例1:查询男同学和女同学各自的数学平均分   

                select gender 性别,avg(score) 平均成绩 from stus group by gender;

                

例2:查询男同学和女同学各自的数学平均分,以及各自人数。

        select gender 性别,avg(score) 平均成绩,count(id) 人数 from stus group by gender; 

        

例3:查询男同学和女同学各自的数学平均分,以及各自人数。要求:分数低于80分的不参与分组。

select gender ,avg(score) 平均成绩,count(id) 人数  from stus where score > 80 group by gender;   

例4:查询男同学和女同学各自的数学平均分,以及各自人数。要求:分数低于70分的不参与分组,分组之后人数大于两个。

 select gender 性别,avg(score) 平均成绩,count(id) 人数  from stus where score > 80 group by gender having count(id) > 2;

(6)分页查询

LIMIT:限制返回的行数。可以有两个参数,第一个参数为起始行,从 0 开始;第二个参数为返回的总行数。

语法:select 字段列表 from 表名 limit 起始索引,查询条目数。

例1:从0开始查询,查询三条数据   

   select * from stus limit 0,3;

        

例2:每页显示三条数据,查询第一页数据

   select * from stus limit 0,3;

         

 例3:每页显示三条数据,查询第二页数据

         select * from stus limit 3,3;

          

起始索引 =  (当前页面-1)*每页显示的条数

小结可以看黑马javaweb课堂p18

6.约束

(1)概念:约束是作用于表中列上的规则,用于限制加入表的数据。约束的存在保证了数据库中数据的正确性、有效性和完整性

(2)约束的分类:

    

注意:默认约束中,没给值时才是默认值,给null就不会默认约束 

   自动增长:auto-increment   应用条件:当列是数字类型且是唯一约束。结果:就算给null也会自增。

 如非空约束:

                                

 (3)外键约束

      概念:  外键用来让两个表的数据之间建立链接,保证数据的一致性和完整性。

      语法:

             添加约束

                 

                               constraint是约束的意思,外键名称是可选项

              建完表后添加外键约束

alter table 表名 add constraint 外键名称 forein key(外键字段名)   references 主表名称(主表列名称)

               删除约束: alter table 表名 drop forein key 外键名;             

     例:      

                            

     在该例中,dep_id作为外键去关联部门表里的主键id,员工表为从表,部门表为主表。(先创主表,再创从表,添加数据同理)

           

创建好外键约束后,主表部门表里的部门就不能随意删除了,因为和员工表里的dep_id关联了起来,要想删掉部门表里的部门,必须把从表里的该部门人员删去。

如果是建好表后再添加外键:

              alter  table emp add constraint  fk_emp_dept foreign key(dep_id) references dept(id);

都是往【从表】里添加外键

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在Mac终端上使用MySQL,你可以按照以下步骤进行操作。首先,你可以使用命令"mysql -u root -p"登录MySQL。\[1\]如果你想配置环境变量,可以使用命令"open .bash_profile"打开.bash_profile文件,并在末尾添加"export PATH=${PATH}:/usr/local/mysql/bin",然后保存并关闭配置文件。接下来,在终端中输入命令"source .bash_profile"来使配置生效。这样,你就可以直接在终端中使用"mysql -u root -p"命令来登录MySQL了。\[1\]另外,如果你想直接进入/usr/local/mysql/bin路径下,你可以使用快捷键"shift + command + ."来显示隐藏文件夹,然后找到/usr文件夹,进入/usr/local/mysql/bin路径下。\[2\]希望这些步骤对你有帮助! #### 引用[.reference_title] - *1* *2* [Mac电脑使用终端快速进入mysql命令行的方法(超详细)](https://blog.csdn.net/weixin_45182409/article/details/117753140)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [MysqlMac终端以及Navicat基本操作](https://blog.csdn.net/Finneab/article/details/124565528)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值