• Java编程学习-MySQL(数据库CRUD语句)


    insert(添加数据)

    1. #使用INSERT语句向表中添加数据
    2. INSERT INTO table_name [(column [,column...])];
    3. VALUES (value [,value..]);

     代码测试

    1. DESC `employee`; --查询表结构
    2. INSERT INTO `employee` (`id`, `user_name`,`sex`,`birthday`,
    3. `entry_date`,`job`,`salary`,`resume`,`image`)
    4. VALUES ('1101001','张华','男性','1997-01-26','2022-01-10',
    5. '后端开发工程师','120000.6254','负责项目后端开发','图像');
    6. SELECT * FROM `employee`;
    7. INSERT INTO `employee` (`id`, `user_name`,`sex`,`birthday`,`entry_date`,
    8. `job`,`salary`,`resume`,`image`)
    9. VALUES('1101002','李明','女性','1995-07-23','2022-01-12',
    10. '运维工程师','80000.6254','负责项目运维工作','图像');
    11. SELECT * FROM `employee`;

    细节说明

    1)插入的数据应与字段的数据类型相同(例如:把'abc'添加到int类型会错误);

    2)数据的长度应在列的规定范围内(例如:不能将一个长度为80的字符串加入到长度为40的列中);

    3)在values中列出的数据位置必须与被加入的列的排列位置相对应;

    4)字符和日期型数据应该包含在单引号中;

    5)列可以插入null值【前提是该字段允许为null】(例如:inset into table value(null);

    6)insert into tab_name (列名...) values (),(),() 形式添加多条记录;

    7)如果是给表中的所有字段添加数据,可以不写字段名称(列名...);

    8)默认值的使用,当不给某个字段值时,如果有默认值就会添加,否则报错;

    测试代码

    1. # insert 语句的细节
    2. -- 插入的数据应与字段的数据类型相同,否则报错;
    3. -- insert into goods (id,goods_name,price)
    4. -- values ('abc',100,'cba');
    5. -- 数据的长度应在列的规定范围内,否则报错;
    6. -- insert into goods (id,goods_name,price)
    7. -- values(123456789,'abcdefghijklmnopqrstuvwxyz',12.3456);
    8. -- 在values中列出的数据位置必须与被加入的列的排列位置相对应;
    9. -- insert into goods (id,goods_name,price)
    10. -- values ('旺仔牛奶',123,6546548);
    11. -- 字符和日期型数据应该包含在单引号中;
    12. -- insert into goods (id,goods_name,price)
    13. -- values(122,菠菜,2113546)
    14. -- 列可以插入null值【前提是该字段允许为null,如果列不允许为空则需要not null在后面修饰】
    15. INSERT INTO goods (id , goods_name,price)
    16. VALUES (123,'面筋',NULL);
    17. -- insert into tab_name (列名...) values (),(),() 形式添加多条记录;
    18. INSERT INTO goods (id,goods_name,price)
    19. VALUES (10,'变形金刚',123.321),
    20. (11,'葫芦娃',321.123),
    21. (12,'孙悟空',456.654);
    22. SELECT * FROM goods;
    23. -- 如果是给表中的所有字段添加数据,可以不写字段名称(列名...);
    24. INSERT INTO goods
    25. VALUES (13,'哪吒',1987.789),
    26. (14,'玉皇',147.741);
    27. SELECT * FROM goods;
    28. -- 默认值的使用,当不给某个字段值时,如果有默认值就会添加,否则报错;
    29. -- 如果某列没有指定not null 那么添加数据时,没有给定值,就会默认给null
    30. INSERT INTO goods(id,goods_name)
    31. VALUES(15,'太上老君');
    32. SELECT * FROM goods;
    33. CREATE TABLE goods2(
    34. id INT,
    35. goods_name VARCHAR(32),
    36. price DOUBLE NOT NULL DEFAULT 105);
    37. SELECT * FROM goods2;
    38. INSERT INTO goods2 (id ,goods_name)
    39. VALUES (1,'罗汉');
    40. SELECT * FROM goods2;

    update(修改数据)

    1. #使用update语句修改表中的数据
    2. UPDATE table_name
    3. SET col_name = expr1 [,col_name2= expr2...]
    4. [WHERE where_definition] -- 如果WHERE不写则是对表中的所有数据进行修改

    测试代码

    1. DESC employee;
    2. SELECT * FROM employee;
    3. -- 将所有员工的薪水修改为5000元,如果没有带Where语句则会对表中该列中的数据进行修改
    4. UPDATE employee
    5. SET salary = 5000
    6. -- 将表中张华的薪水修改为8000元
    7. UPDATE employee
    8. SET salary = 8000
    9. WHERE user_name = '张华';
    10. SELECT * FROM employee;
    11. -- 将表中李明的薪水增加1200元
    12. UPDATE employee
    13. SET salary = salary + 1200
    14. WHERE user_name = '李明';
    15. SELECT * FROM employee;
    16. -- 修改多个列
    17. UPDATE employee
    18. SET salary = salary+1200, job = '大数据开发'
    19. WHERE user_name = '张华';
    20. SELECT * FROM employee;

    使用细节

    1)UPDATE语法可以用新值更新原有表行中的各列;

    2)SET子句指示要修改那些列和要给予的值;

    3)WHERE子句指定应该更新的那一行。如果没有WHERE子句,则更新对应列中所有的行;

    4)如需修改多个字段,可以通过set 字段1=值1,字段2=值2...

    delete语句(删除数据)

    1. delete form table_name
    2. [where where_definition] --如果不添加这句,就会删除表中的所有数据

    测试代码

    1. # delete 语句演示
    2. -- 删除表中名称为'李明'的记录
    3. DELETE FROM employee
    4. WHERE user_name = '李明';
    5. -- 删除表中的所有记录
    6. DELETE FROM employee;
    7. -- delete 语句不能删除某一列的值,(可以使用update设置为null或者' ')
    8. UPDATE employee
    9. SET job = ' '
    10. WHERE user_name = 'tom';
    11. -- 使用delete语句仅删除记录,不删除表本身。
    12. -- 如要删除表,使用drop table语句(drop table 表名)
    13. DROP TABLE employee;
    14. SELECT * FROM employee;

    使用细节

    1)如果不使用where子句,将删除表中的所有数据;

    2)delete 语句不能删除某一列的值,(可以使用update设置为null或者' ');

    3)使用delete语句仅删除记录,不删除表本身。如要删除表,使用drop table语句(drop table 表名)。

    select(查询数据)

    1. SELECT [DISTINCT] * | {column1,column2,column3...}
    2. FROM table_name;

    注意事项:

    1)selete指定查询列的数据;

    2)column指定列名;

    3)*号代表查询所有列;

    4)from指定查询的表;

    5)distinct指定显示查询结果时是否去掉重复数据。

    测试代码

    1. #创建学生表,导入学生信息
    2. -- id,为int类型,不允许为null,默认值为1
    3. -- name,为varvhar类型,不允许为null,默认值为' '
    4. -- 语文成绩,为float类型,不允许为null,默认值为0.0
    5. -- 英语成绩,为float类型,不允许为null,默认值为0.0
    6. -- 数学成绩,为float类型,不允许为null,默认值为0.0
    7. CREATE TABLE `student`(
    8. `id` INT NOT NULL DEFAULT 1,
    9. `name` VARCHAR(32) NOT NULL DEFAULT ' ',
    10. chinese FLOAT NOT NULL DEFAULT 0.0,
    11. english FLOAT NOT NULL DEFAULT 0.0,
    12. math FLOAT NOT NULL DEFAULT 0.0);
    13. DELETE FROM student;
    14. INSERT INTO student (id,`name`,chinese,english,math)
    15. VALUES (1,'tom',98,96,99);
    16. INSERT INTO student (id,`name`,chinese,english,math)
    17. VALUES (2,'jake',88,86,89);
    18. INSERT INTO student (id,`name`,chinese,english,math)
    19. VALUES (3,'lucy',99,99,86);
    20. INSERT INTO student (id,`name`,chinese,english,math)
    21. VALUES (4,'saly',85,79,96);
    22. INSERT INTO student (id,`name`,chinese,english,math)
    23. VALUES (5,'neo',91,79,96);
    24. INSERT INTO student (id,`name`,chinese,english,math)
    25. VALUES (6,'pero',89,69,100);
    26. INSERT INTO student (id,`name`,chinese,english,math)
    27. VALUES (7,'nano',83,71,88);
    28. -- 查询表中所有学生的信息
    29. SELECT * FROM student;
    30. -- 查询表中的所有学生的姓名和英语成绩
    31. SELECT `name` ,english FROM student;
    32. -- 过滤表中的重复信息distinct
    33. SELECT DISTINCT english FROM student;
    34. -- 要查询的记录,每个字段都相同,才会去重
    35. SELECT DISTINCT `name`,english FROM student; -- 只有两种条件都满足重复才会去重

    使用表达式对查询的列进行运算

    1. SELECT * | {column1|expression, column2|expression,...}
    2. FROM table_name;

    在select语句中可以使用as语句

    SELECT column_name as 别名 from 表名;

    测试代码 

    1. ALTER TABLE `student`
    2. ADD `总分` FLOAT NOT NULL
    3. AFTER `math`;
    4. UPDATE student
    5. SET `总分` = chinese + english + math
    6. WHERE `id`=7;
    7. SELECT * FROM student;
    8. #1.统计每个学生的总分
    9. SELECT `name`,(chinese+english+math)
    10. FROM student;
    11. #2.在所有学生总分加10分的情况
    12. SELECT `name`,(chinese+english+math+10)
    13. FROM student;
    14. #3.使用别名表示学生分数
    15. SELECT `name` ,(chinese+english+math)
    16. AS total_score FROM student;
    17. SELECT `name` AS `名字`,
    18. (chinese+english+math) AS `总分`
    19. FROM student;
    20. UPDATE student
    21. SET `总分` = chinese + english + math
    22. WHERE `name`='tom';

    在where子句中经常使用的运算符

    比较运算符>、<、<=、>=、=、<>、!=大于、小于、小于等于、大于等于、等于、不等于、不等于
    BETWEEN ... ADN ...显示在某一区间的值
    IN(set)显示在in列表中的值,例如:int(100,200)

    LIKE '张%'

    NOT LIKE ' '

    模糊查询(查询姓张的人)

    模糊查询

    IS NULL判断是否为空
    逻辑运算符and多个条件同时成立
    or多个条件任意一个成立
    not不成立,例如:where not(salary > 100)

    测试代码 

    1. #使用where子句,进行过滤查询
    2. SELECT * FROM student;
    3. -- 查询姓名为tom的同学成绩
    4. SELECT * FROM student
    5. WHERE `name`='tom';
    6. -- 查询英语成绩大于90分的同学
    7. SELECT `name`,`english` FROM student
    8. WHERE english > 90;
    9. -- 总分大于200分的同学
    10. SELECT `name`, `总分` FROM student
    11. WHERE `总分` > 200;
    12. SELECT * FROM student
    13. WHERE (chinese + english + math) >200;
    14. -- 查询math大于 90 并且 english小于90的学生成绩
    15. SELECT * FROM student
    16. WHERE math>90 AND english <90;
    17. -- 查询英语成绩大于语文成绩的同学
    18. SELECT * FROM student
    19. WHERE english < chinese;
    20. -- 查询总分大于200分,并且数学成绩小于语文成绩首字母带n的学生
    21. SELECT * FROM student
    22. WHERE `总分`>200 AND math > chinese AND `name`LIKE 'n%';
    23. -- 查询英语成绩在80~90之间的同学
    24. SELECT `name`,english FROM student
    25. WHERE english BETWEEN 80 AND 90;
    26. -- 查询数学成绩为88,98,100的同学
    27. SELECT * FROM student
    28. WHERE math IN(88,98,100);
    29. -- 查询所有名字中带o的同学
    30. SELECT * FROM student
    31. WHERE `name` LIKE '%o%';
    32. -- 查询数学分大于80,语文分大于80的同学
    33. SELECT * FROM student
    34. WHERE math>80 AND chinese>80;
    35. -- 查询语文分数在80-90之间的学生
    36. SELECT * FROM student
    37. WHERE chinese BETWEEN 80 AND 90;
    38. -- 查询总分为263,258,293的同学
    39. SELECT `name`,`总分` FROM student
    40. WHERE `总分` IN(263,258,293);
    41. -- 查询所有姓名里带n或者带a的同学
    42. SELECT `name` FROM student
    43. WHERE `name` LIKE '%n%' OR `name` LIKE '%a%';
    44. -- 查询数学比语文多3分以上的同学
    45. SELECT `name`,`chinese`,`math` FROM student
    46. WHERE (math - chinese) >3;

     使用order by子句排序查询结果

    1. SELECT column1,column2,column3...
    2. FROM table_name
    3. order by column asc|desc,...;

    注意细节:

    1)Order by 指定排序的列,排序的列既可以是表中的列名,也可以是select语句后指定的列名;

    2)Asc升序【默认】、Desc 降序;

    3)ORDER BY子句应位于SELECT语句的结尾。

    测试代码

    1. #order by子句使用
    2. -- 对数学成绩排序后(升序)输出
    3. SELECT `name`,math FROM student
    4. ORDER BY math ASC;
    5. -- 对总分按从高到低(降序)的顺序输出
    6. SELECT `name`,(chinese+english+math) AS `total_score` FROM student
    7. ORDER BY total_score DESC; -- 可以用别名作为排序
    8. -- 对名字最后个字母是n的同学成绩排序后(升序)输出
    9. SELECT * FROM student
    10. WHERE `name` LIKE '%o'
    11. ORDER BY (chinese+english+math) ASC;

  • 相关阅读:
    人工智能与深度神经网络,深度神经网络谁开发的
    软考网络工程师华为配置考点总结
    设计模式--访问者模式(Visitor Pattern)
    ChatGPT如何助力DevOps|用例解读
    机器学习/深度学习 模型修正能力
    flink sqlClient提交hiveIceberg
    C++11多线程第二篇:线程启动、结束、创建线程的多个方法:join、detach
    怎么批量提取文件名字到Excel中?
    【SCS-CN】SCS-CN模型中CN值的确定
    关于环境保护html网页设计完整版-4环保垃圾分类5页
  • 原文地址:https://blog.csdn.net/Ego_Ekko/article/details/127069552