mysql学习

这篇博客详细介绍了MySQL的安装、登录、用户管理、数据库操作、表的创建与管理,包括增删查改操作,以及数据的导入导出。通过实例展示了如何在MySQL中执行各种数据库操作,包括添加、删除用户,查看与删除数据库,创建、修改和删除表,以及使用SQL语句进行数据的插入、更新和查询。还提到了子查询和多表联合查询等高级操作。最后,讲解了数据库的导入导出方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://www.runoob.com/mysql/mysql-install.html

书籍:https://pan.baidu.com/s/1fIVAXZnZH7u_DDRIyjLTRQ
mysql登陆:
mysql -uroot -p 输入密码
增加用户:
mysql > create user 'dog''@''localhost'identified by '123';
查看用户:
mysql>select user,host from mysql.user;
删除用户:
mysql> drop user 'dog'@'localhost';
查看数据库:
mysql>show databases;
创建数据库:
mysql>create database students;
删除数据库:
mysql>drop database students;
查看数据库表:
mysql>use mysql;
mysql>show tables;
增加数据库表:
mysql>use students;
mysql>create table pet(
        name varchar(20),        #名字
        owner varchar(20),       #主人
        species varchar(20),     #种类
        sex char(1),             #性别
        birth date,              #出生日期
        death date               #死亡日期
);
describe pet;(查看)
https://blog.youkuaiyun.com/HUIJINJAVA/article/details/79233998
删除数据库表:
mysql>drop pet;
将表中记录清空:
mysql>delete from pet;
修改表:

    1.修改表添加列
        alter table 表名  add  字段 类型(长度)约束
    2.修改表修改列的类型长度约束     
        alter table 表名  modify 字段名 类型(长度) 约束;
    3.修改表,修改列名
        alter table 表名  change  旧字段名 新字段名 类型(长度) 约束;
    4.修改表的字符集
        alter table 表名  character set 字符集
    5.重命名表
        rename  table  旧表名  to  新表名
        6.在表的第一列添加一个字段
        alter table tb_dept1 add column2 int(11) first;
    7.在表的指定列之后添加一个字段
        alter table tb_dept1 add column3 int(11) after name
    8.删除字段
        alter table tb_dept1 drop column2
    9.修改字段为表的第一个字段
        alter table tb_dept1 modify column1 varchar(12) first
    
数据库表的增删查改:
    1,插入数据:
        给某几列插入数据:insert into 表名(列1,列2,列3…) values(值1,值2,值3…);
        给所有列插入数据:insert into 表名values(值1,值2,值3…);   
        一次性插入多行数据: insert into 表名values(值1,值2,值3…),(值1,值2,值3…),(值1,值2,值3…)…;
         注意事项:
         有值的类型要与数据库中列的类型一致。
          值的顺序要与列的顺序保持一致。
          插入值的长度不能超过列规定的长度。
          对于字符串和时间的值,要使用引号括起来。
          插入的数据要符合约束
    2,修改数据
            update 表名 set 列名1=值1,列名2=值2…[where条件];
    3,查询数据
            1.基本查询语句
    查询所有列
        select * from 表名
    查询指定列
        select列1,列2…from 表名

     .条件查询  where
    1.比较运算    >    >=   <     <=      <>      != 
    2.条件并列    and   or   not
       模糊查询    like    
       in       
         between    and  

    3.排序
       select * from 表名 [where 条件] order by 列名 asc/desc,列名 asc/desc …
       ASC  : 升序
       DESC : 降序

     4.分组  
        1.select s_id,count(*) as total fruits group by s_id
        2.select s_id,group_count (f_name) as names from fruits group by s_id//
将每个供应商水果名称显示出来
        3.select s_id,group_concat(f_name) as names from fruits group by s_id having
    count(f_name)>1 //根据s_id对fruits表中的数据进行分组,并显示水果种类大于1的分组信息
        4.select s_id,count(*) as total from fruits group by s_id with rollup//
       根据s_id对fruits表中的数据进行分组,并显示记录数量
        5.select o_sum,sum(quantity * item_price) as ordertotal from orderitems
        group by o_num having sum(quantity*item_price)>=100//查询订单价格
        大于100的订单号和总订单价格
        6.select sum(quantity) as items_total from orderitems where o_num=30005//
        orderitem中查询30005号订单一共购买的水果总量
        7.select o_num.sum(quantity) as items_total from orderitems
         group by o_num;在orderitems表中,使用sum函数统计不同订单号订购的
         水果总量
        8.select avg(f_price) as avg_price from fruits where s_id=103;
              //在fruits表中,查询s_id=103的供应商水果价格的平均值
        9.select s_id ,avg(f_price) as avg_price from fruits group by s_id;//
           在fruits表中,查询每一个供应商水果价格的平均值
        10.select max(f_price) as max_price from fruits;//在fruits表中
        查找市场上价值最高的水果值
        11.select s_id,max(f_price) as max_price from fruits group by s_id;//
        在fruits表中查找不同供应商提供的价格最高的水果值
        12.select max(f_name) from fruits;//在fruits表中查找f_name的
        最大值
        13.select min(f_price) as min_price from fruits;//在fruits
        表中查找市场上价格最低的水果值
        14.select suppliers.s_id,s_name,f_name,f_price from 
        fruits ,suppliers where fruits.s_id =suppliers.s_id;
           select suppliers.s_id,s_name.f_name,f_price from fruits 
        inner join suppliers on fruits.s_id =suppliers.s_id;
        //查询两个表都有s_id的部分
            15.select f1.f_id,f1.f_name from fruits as f1,fruits as f2
        where f1.s_id =f2.s_id and f2.f_id ='a1';
        //查询供应f_id ='a1'的水果供应商提供的水果种类
                16.select num1 from tbl1 where num1> any(select num2 from tbl2)//
        返回tbl2表的所有num2列,然后将tbl1中的num1的值与之比较,只要
        大于bun2的任何一个值,即为符合查询条件的结果 
        17. select num1 from tbl1 where num1 >all(select num2 from tbl2)
        //返回tbl1表中比tbl2表num2列所有值都大的值
                18.select *from fruits where exists (select s_name suppliers where s_id=107)
        查询suppliers表中是否存在s_id=107的供应商,如果存在,则查询fruits表中的记录
        19.select *from fruits where f_price >10.20 and exists
        (select s_name from suppliers where s_id=107)
        查询suppliers表中是否存在s_id=107的供应商,如果存在,则查询fruits表中
        的f_price大于10.20的记录
        20.select c_id from orders where o_num in (select o_num from orderitems where f_id='c0');
        在orderitems表中查询f_id为c0的订单,并根据订单号查询具有订单号的客户c_id
        21.select s_id ,f_name from fruits where s_id=(select s1.s_id from suppliers as where s1.s_city ='tianjin');
        在suppliers表中查询s_city等于'tianjin'的供应商s_id,然后在fruits表中查询
        所有该供应商提供的水果的种类
        22.select s_id ,f_name from fruits where s_id <>
        (select sq.s_id from suppliers as s1 where s1.s_city ='tianjin')
                 在suppliers表中查询s_city等于‘tianjin’的供应商s_id,然后再fruits表中查询所有非该水果供应商提供的水果的种类
        23.select s_id ,f_name,f_price from fruits where f_price<9.0
        union all select s_id,f_name ,f_price from fruits where s_id in(101,103);
        联合查询价格小于9,查询s_id等于101和103所有的水果信息
        24.select * from order as o where o.o_num=30001;
        //为表取别名
        25.select c.c_id,o.o_num from customers as c left outer join orders as o on
        c.c_id=o.o_id
        //为customers和orders表分别取别名,并进行连接查询
                26.select f1.f_id,f1.f_name from fruits as f1,fruits as f2
                where f1.s_id =f2.s_id and f2.f_id ='a1';
        //查询同一个表
                27.select concat(trim(s_name),'(',trim(s_city),')') as
         suppliers_title from suooliers order by s_name;
        //对连接的列取别名
        28.select *from fruits where f_name regexp '^b';
        //查询f_name字段以字母‘b’开头的记录
        29.select *from fruits where f_name regexp 'y$';
        //查询以y结尾的字段
        30.select *from fruits where f_name regexp 'a.g';
                //查询f_name字段值包含字母‘a’与'g'且俩字母间只有一个字母的
        记录
        31.select *from fruits where f_name regexp '^ba*';
        //查询f_name字段值以字母'b'开头且字母‘b’后面出现字母‘a’的记录
        32.select *from fruits where f_name regexp 'on';
        查询f_name字段值包含字符串‘on’的记录
        33.select *from fruits where f_name regexp 'on|ap';
        //查询包含on或ap的记录
        34.select *from fruits where f_name like 'on';
        在fruits表中,使用like运算符查询f_name字段值为'on'的记录
        35.select *from fruits where f_name regexp '[ot]';
        在fruits表中,查找f_name字段中包含字母'o'或者't'的记录
        36.select *from fruits where s_id regexp '[456]';
        在fruits表中查询s_id字段中数值包含4 或5或 6的记录
        37.select *from fruits where f_id regexp '[^a-e1-2]'
        //在fruits表中,查询f_id字段包含字母a-e和数字1-2意外的字符记录
        38.select *from fruits where f_name regexp 'x{2,}';
        //在fruits表中,查询f_name字段值出现字母‘x’至少2次的记录
        39.select *from fruits where f_name frgexp 'ba{1,3}';
        //查询f_name字段值出现字母‘ba’最少一次,最多3次的记录
        40.
       group  by  分组字段     having

       **注意:where子句不能使用聚合函数,如果现在使用带有聚合函数的条件过滤或者分组后过滤,使用having关键字**

      5.聚合函数
        sum         
        avg
        count
        min
        max

      6.sql语句的基本顺序 
        select ... from  表名 where  条件 group by  分组字段  having 筛选后条件   order by  排序字段  

3. 多表联合查询(*****)
    1.连接查询
        交叉链接        cross  join       二张表的笛卡尔积
            SELECT  * FROM A CROSS JOIN  B     
            SELECT  * FROM A,B
        内链接           二张表的交集部分(满足连接条件的数据组合)
            显式内连接       inner  join 
                SELECT  * FROM  A  INNER  JOIN  B   ON A.ID = B.ID  
            隐式内连接
                SELECT *  FROM  A ,B  WHERE A.ID =  B.ID 
        外连接             OUTER JOIN          OUTER可以省略
            左外链接    左表的所有数据,与二张表的交集(左表的所有数据与满足连接条件的数据组合)
                SELECT  * FROM  A LEFT  OUTER  JOIN  B  ON  A.ID = B.ID 
            右外链接  OUTER  可以省略   右表的所有数据,与二张表的交集(右表的所有数据与满足连接条件的数据组合)
                SELECT  * FROM  A RIGHT OUTER  JOIN B ON A.ID = B.ID 

    2.子查询   : SQL的嵌套 (一个查询语句,依赖于另一个查询语句的结果)
数据库的导入导出:
    mysqldump -h IP -u 用户名 -p 数据库名 > 导出的文件名;(导出)
    0:导入数据库(首先得创建数据,再导入)
    mysql -h localhost -u root -p(进入mysql下面)

    create database abc;(创建数据库)

    show databases;(就可看到所有已经存在的数据库,以及刚刚创建的数据库abc)

    use abc;(进入abc数据库下面)

    show tables;(产看abc数据库下面的所有表,空的)

    source G:\arcgisworkspace\zypdoc\test.sql(导入数据库表)

    show tables;(查看abc数据库下面的所有表,就可以看到表了)

    desc pollution;(查看表结构设计)

    select * from pollution;

    exit(或者ctrl + c)退出mysql
https://www.cnblogs.com/tangou/p/7613896.html
数据库表的导入导出:
    mysqldump -u用户名 -p密码 数据库名 > 数据库名.sql(导出数据和表结构:
     https://blog.youkuaiyun.com/qq_27563511/article/details/78563040

CREATE TABLE Student (   Sno CHAR(5) CONSTRAINT PK_Stu  PRIMARY KEY,   Sname CHAR(20)  CONSTRAINT UQ1 UNIQUE,   Ssex CHAR(2),   Sage INT NOT NULL CONSTRAINT UQ2 UNIQUE  CONSTRAINT CK1 CHECK(Sage>=15 AND Sage<=35),   Sdept CHAR(15),   CHECK(Ssex IN ('男','女') AND Sno LIKE '95___ ') );

            
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值