• day02:DML DQL DCL


    目录

    一:DML

    二:DCL

    三:DCL


    一:DML

    1:概念:数据操作原因,对数据进行增删改。

    2:三个操作

    (1):增加:insert

    id

    name

    age

    gender

    1

    令狐冲

    23

    2(添加的数据)风清扬25

    1--->给指定字段添加数据:insert into 表名(字段1,字段2--)values(值1,值2,--);

    2---->给全部字段添加信息:insert into 表名 values(值1,值2--);

    3----->批量添加数据insert into 表名(字段1。字段2--)values (值1,值2),(值1,值2);insert into values(值1,值2----);

    代码实现:

    1. #给指定字段添加信息
    2. insert into employee (id, workno, `name 1`, gender, `age 1`, phonenumber, birth) values (1,'1','李明轩','男',18,'1234567890','2003-11-25');
    3. select *from employee;
    4. #给整段添加信息
    5. insert into employee values (2,'2','张无忌','男',19,'123456789070','2004-11-25');
    6. #批量添加数据
    7. insert into employee values(3,'3','徐佳烨','男',20,'12345678907090','2006-11-25'),(4,'4','李华','女',20,'12345678907090','2007-11-25');

    运行结果:

    (2)修改数据:update

    1----->将某个字符集的某个信息进行修改:update 表名 set 字段名1=值1,字段名2=值2......[where 条件];

    代码:

    1. #修改数据
    2. #将id为1的员工,姓名改为lmx,
    3. update employee set `name 1`= 'lmx' where id=1;
    4. #将id为1的员工,姓名改为小昭,性别改为女
    5. update employee set `name 1`='小昭',
    6. gender='女' where id=1;
    7. #将所有员工的出生日期改为2008-01-01
    8. update employee set birth ='2008-01-01';

    运行结果: 

    3:删除数据:delete

    1---->delete from 表名 [where 条件];

    #注意,如果where后面跟条件,则代表删除的整段字符集,如果不加,默认删除整张表

    代码:

    1. #删除员工
    2. delete from employee where id=1;

     运行结果: 

    二:DCL

    1:概念数据查询语言,用来查询数据库中表的记录 -------->关键词:select

    2:查询

       1--->基本查询

     (1):查询信息  select 字段1,字段2,字段3 from表名;----select*from表名;

     (2):起别名      select 字段1[AS 别名1]......from 表名;

     (3):去重查询 select distinct 字段列表 from 表名;

       代码:

    1. insert into emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
    2. values (1,'1','柳岩','女',20,'12345678901234567','北京','2000-01-01'),
    3. (2,'2','张无忌','男',18,'123456789012345678','北京','2005-09-01'),
    4. (3,'3','韦一笑','男',38,'1234567890select distinct 字段列表 from 表名;1234670','上海','2005-08-01'),
    5. (4,'4','赵敏','女',18,'12345678901234570','北京','2009-12-01'),
    6. (5,'5','小昭','女',16,'12345678901234678','北京','2007-07-01');
    7. #查询
    8. #1.查询指定字段,name,workno,age返回
    9. select name,workno,age from emp;
    10. #2.查询所有字段返回*为通配符
    11. select *from emp;
    12. #查询所有员工的工作地址,起别名
    13. select workaddress as address from emp;
    14. #查询所有的人员的工作地址,其不重复
    15. select distinct workaddress as '工作地址' from emp;

       运行结果:

      2--->条件查询

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

    #注意:

    1:between 最小值 and 最大值

    2:字符串判断是否为空 is (not) null

    3:like---->模糊处理字符'_'代表字符个数 ’%‘代表精确的字符

    4:不等于两种实现方式 != <>

    5:&&=and

    6:||=or

    7:一个字段列表匹配多个值 in(值1,值2,值3)

    代码:

    1. insert into emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
    2. values (1,'1','柳岩','女',20,'12345678901234567','北京','2000-01-01'),
    3. (2,'2','张无忌','男',18,'123456789012345678','北京','2005-09-01'),
    4. (3,'3','韦一笑','男',38,'12345678901234670','上海','2005-08-01'),
    5. (4,'4','赵敏','女',18,'12345678901234570','北京','2009-12-01'),
    6. (5,'5','小昭','女',88,'12345678901234678','北京','2007-07-01');
    7. #基础查询
    8. #1.查询指定字段,name,workno,age返回
    9. select name,workno,age from emp;
    10. #2.查询所有字段返回*为通配符
    11. select *from emp;
    12. #查询所有员工的工作地址,起别名
    13. select workaddress as '工作地址' from emp;
    14. #查询所有的人员的工作地址,其不重复select distinct workaddress as '工作地址' from emp;
    15. #条件查询
    16. #1.查询年龄等于88的员工
    17. select * from emp where age = 88;
    18. #2.查询年龄小于20的员工信息
    19. select * from emp where age<20;
    20. #3.查询年龄小于等于20岁的员工信息
    21. select * from emp where age<=20;
    22. #4。查询没有身份证号的员工信息
    23. #当为字符串的时候,判断是否为空,用is null //is not null
    24. select * from emp where idcard is null;
    25. #5.查询有身份证号的员工信息
    26. select *from emp where idcard is not null;
    27. #6.查询年龄不等于88的员工信息
    28. #//判断数字,用= !=//<>
    29. select * from emp where age!=88;
    30. select *from emp where age <>88;
    31. #7查询年龄在15岁到20岁之间的员工信息
    32. select *from emp where age>=15&&age<=30;
    33. select *from emp where age>=15 and age<=30;
    34. select * from emp where age between 15 and 20;
    35. #8.查询性别为女。且年龄小于25的员工信息
    36. select * from emp where gender ='女' and age<25;
    37. #9.查询年龄等于18 20 40
    38. select *from emp where age =18 or 20 or 40;
    39. #可以选择多个值
    40. select *from emp where age in(18,20,40);
    41. #查询姓名为两个字的员工__代表字符个数
    42. select * from emp where name like '___';
    43. #查询身份证号最后一位为x的员工信息,____________x
    44. select *from emp where name like '%X';

        3--->分组查询:group by 

        #注意

       聚合函数------>将一列数据作为整体,进行纵向计算

       select 聚合函数(字段列表) from 表名;

        常见函数:count max min avg sum

    1. #代码
    2. #聚合函数
    3. #统计该企业员工的数量
    4. select count(*) from emp;
    5. select count(id) from emp;
    6. #统计该企业员工的平均年龄
    7. select avg(age) from emp;
    8. #统计该企业员工的最大年龄
    9. select max(age) from emp;
    10. #统计该企业员工的最小年龄
    11. select min(age) from emp;
    12. #统计北京地区的年龄之和
    13. select sum(age) from emp where workaddress='北京';

         select 字段列表 from 表名 where group by 分组字段名 having 分组后过滤条件;

    代码:

    1. #分组查询
    2. #1.根据性别分组,统计男性员工和女性员工的数量
    3. select gender,count( *) from emp group by gender ;
    4. #2.根据性别进行分组,统计男性员工和女性员工的平均年龄
    5. select gender,avg(age) from emp group by gender;
    6. #3.查询年龄小于45的员工,根据工作地址分组,获取员工数量大于等于3的工作地址
    7. select workaddress,count(*) from emp where age<45 group by workaddress having count(*)>=3;

      4--->排序查询:order by 

    ###:如果是多字段排序,当第一个字段值相同时。才会根据第二个字段进行排序

    asc:升序(默认值)

    desc:降序

    1. #根据年龄对于公司的员工升序哦艾许
    2. select * from emp order by age asc;
    3. #2。根据入职时间,对员工进行降序排序
    4. select entrydate from emp order by entrydate desc ;
    5. #根据年龄对公司的年龄进行升序排序,年龄相同,再按照入职时间进行降序排序
    6. select * from emp order by age asc,entrydate desc

       5 -->分页查询:limit

     select 字段列表 from 表名 limit 起始索引,查询页数;

     #起始索引从0开始,起始索引=(查询页码数-1)*每页显示记录数;

     #分页查询是数据库的方言,不同的数据库用不同的实现,

     #如果查询的第一页数据,其起始索引可以省略,直接简写为limit10

    1. #分页查询
    2. #1.查询第一页员工数据,每页展示10条记录
    3. select * from emp limit 0,10;
    4. #查询第二页员工数据,每页展示10条记录;
    5. select * from emp limit 10,10;

     ###注意:执行顺序:from---where ------group by----select---order by--limit

    三:DCL

    控制数据库的访问权限,用来管理数据库用户。

    1:查询用户

    use mysql;

    select * from user;

    2:创建用户

    create user '用户名'@’主机名‘ identified by '密码' ;

    1. create user'lmx'@localhost identified by '123456';
    2. #任意主机都可以访问
    3. create user 'heima'@'%' identified by '123456';
    4. #修改用户密码
    5. alter user 'heima'@'%' identified with mysql_native_password by '1234';
    6. #删除用户
    7. drop user 'lmx'@localhost;

    4:权限控制

    ---1:查询权限

    ---2:授予权限

    ---3:撤销权限

    1. show grants for 'heima'@'%';
    2. #授予权限--->所有的权限
    3. grant all on test.* to 'heima'@'%';
    4. #撤销权限
    5. revoke all on test.* from 'heima'@'%';

    --------------------------------------------------------------------------------------------------------------------------------做个查询的小练习吧:

    1. #查询年龄为20,21,22,23的女性信息
    2. select * from emp where gender='女' and age in(20,21,22,23);
    3. #查询性别为男,并且年龄在20-40岁以内的姓名为三个字的员工
    4. select * from emp where gender='男' and age between 20 and 40 and name like '___';
    5. #统计员工表中,年龄小于60岁的,男性员工和女性员工的人数
    6. select gender,count( * )from emp where age<60 group by gender;
    7. #查询所有年龄小于等于35岁员工的姓名和年龄,并对查询结果按年龄升序排序,如果年龄相同则按入职时间进行降序排序
    8. select * from emp where age<=35 order by age asc,entrydate desc;
    9. #查询性别为男,且年龄在20-40之间以内的5个员工信息。对查询结果按年龄升序排序,年龄相同入职时间升序排序
    10. select * from emp where gender='男'and age between 20 and 40 order by age asc,entrydate desc limit 5;

    谢谢大家捧场呦!!!

     

  • 相关阅读:
    阿里云 —— Windows下“阿里云音视频通信RTC“ 之 云端录制编译C++的SDK接口
    寻找可靠的软件外包开发公司
    关于虚析构函数的问题
    基于余弦相似度改进蝴蝶优化算法-附代码
    驱动开发:PE导出函数与RVA转换
    Python自学教程8-数据类型有哪些注意事项
    ElasticSearch 的一些专业概念
    汇编逆向-控制台
    BrokerChain——基于“做市商账户”的区块链跨分片协议
    护眼灯和白炽灯哪个更保护眼睛?推荐真正护眼的护眼灯
  • 原文地址:https://blog.csdn.net/weixin_65492194/article/details/128386220