MySQL——数据库的操作

MySQL——数据库的操作 基础操作1创建数据库create database 数据库名数据库名、表名、列名 都不能和关键字重复。sql的关键字是大小写不敏感的注1数据库在创建的时候是不能重复的此时就可以在创建的时候加上一个修饰来应对上述问题 例如create database if not exists 数据库名此时就不会出现数据库同名报错发现数据库已经存在是不会继续创建数据库的。避免在批量执行的情况下一条sql语句报错后续指令无法执行的情况。2创建 数据库 的时候可以手动指定一下 字符集的character set 字符集名字/charset 字符集名字需要再数据库中保存中文mysql默认的字符集是拉丁文不支持中文必须要在创建数据库的时候手动指定编码方式为支持中文编码GBK , UTF8create database 数据库名字 charset utf8;2查看数据库列出当前的mysql服务器上一共有哪些数据库 show databases;3选中数据库 use 数据库名4删除数据库 drop database 数据库名删除操作删除的不仅仅是database,而且也删除了database中所有的表和表里面所有的数据删除数据库操作是一个非常危险的操作数据表的操作针对数据表的操作前提是先 选中数据库mysql中支持的类型整数int, long, 小数double, decimal, 字符串varchar, 时间日期datetime1创建表进行表操作的前提是必须要先能够选中数据库~~create table 表名列名 类型列名 类型…;如果想让表名/列名和关键字一样可以使用 反引号 来把表名、列名引起来。2查看所有表查看当前数据库中的所有表show tables;数据库中的内容都是持久化存储的后序重启电脑数据依然存在。3查看指定表的结构desc 表名;4删除表drop table 表名;删除表的同时也会把表里的数据给一起删除掉~ 危险操作删除表的严重性可能比删除数据库更严重CRUD 操作1新增insert into 表名 values (值值…);此处的值要和列相匹配。列的个数和类型指定列插入insert into 表名(列名列名…) values (值值…);此处指插入nameid这一列就会被填充为默认值。此处默认值为null还可以一次插入多行记录~insert into 表名 values (值值…),(值值…)…这里是提示就是反馈效果客户端给服务器发起插入请求服务器要返回这次插入是否成功~~一次插入多行记录相比于一次插入一行分多次插入要快不少~通过select就可以查询到表中的数据~datetime类型如何插入呢可以使用一个固定格式的字符串来表示时间日期如果想填写的时间日期就是当前时刻。 SQL提供了一个现成的函数now()2查询复杂***DECIMAL (3,1) 总长度是3小数点后1位①全列查询select * from 表名; 危险操作**表示“通配符”可以代指所有的列这里查询出来之后服务器通过网络把这些数据返回给客户端并且在客户端以表格的形式打印出来。②指定列查询select 列名列名… from 表名③查询字段为表达式 不会影响到数据库服务器硬盘上存储的原始数据一边查询一边进行计算~~在查询的时候写作由列名构成的表达式把这一列中的所有行都带入到表达式中参与运算。查询所有同学语文成绩 -10分 的效果这里的操作不会修改数据库服务器上的原始数据只是在最终响应的“临时结果”中做了计算计算每个同学的总成绩~~SQL在查询的时候可以进行一些简单的统计操作。表达式查询是列 和 列之间的运算把每一行都带入这样的运算中不是 行 和 行之间④带别名的查询: select 表达式 as 别名 from 表名;查询的时候给 列/表达式 指定别名。给表也能指定别名as 别名,可以针对表达式列表名⑤去重distinct 修饰某个列/多个列值相同的行只会保留一个多行去重前名不同多行去重后⑥查询的时候排序select 列名 from 表名 order by 列名 asc(升序)/desc(降序);把行进行排序 不会影响到数据库服务器硬盘上存储的原始数据明确排序规则针对哪个列作为比较规则排序的时候是升序还是降序order by 指定的列如果你select的时候没有把这一列查出来也不影响 排序order by 还可以针对表达式进行排序使用别名指定多个列进行排序order by 后面可以写多个列 使用隔开先按照数学成绩排序如果数学成绩相同再按照语文排序指定列后加desc⑦条件查询select 列名 from 表名 where 条件;遍历这个表的每一行记录把每一行的数据分别带入到条件中。如果条件成立这个记录就会被放入结果集合中。如果条件不成立这个记录就pass会指定具体的条件按照条件针对数据进行筛选LIKE模糊匹配通过一些特殊符号描述出规则/特征 后续哪些值符合上述特征。1查询英语不及格的同学及英语成绩2查询语文成绩好于英语成绩的同学无论有几个列都可以使用上述运算符来描述条件3查询总成绩在200分一下的同学 条件查询搭配表达式注意 select条件查询执行的顺序1遍历表中的每个记录2把当前记录的值带入条件根据条件进行筛选3如果这个记录条件成立就要保留进行列上的表达式计算第三步定义的别名where是第二步执行的执行where的时候total还处于“未定义”的状态4如果有 order by 会在所有的行都被获取之后表达式也算完了 再针对所有的结果进行排序。⑧分页查询select 列名 from 表名 limit N offset M;N表示这次查询最多查出几个记录M表示这次查询的这N个记录是从第几个下标开始算3修改update 表名 set 列名 值 where 条件Set这个词 在计算机里有两种典型的含义设置 getter/setter集合 TreeSet/HashSet计算机中一个术语往往有多种含义必须结合上下文来了解这个含义1把孙悟空同学的数学成绩变更为80分Rows matched: where条件 筛选出了一行记录Changed修改成功了一行2把曹孟德同学的数学成绩变更为60分语文成绩变更为70分使用update,可以一次修改多个列 set列 值列 值…3把总成绩倒数前三limit的同学数学成绩再加上30分98.030128.0 不符合前面dicimal3,14将所有同学的成绩更新为原来的两倍update 后面不写任何条件就是针对所有行都进行修改8行所有的行数 实际只修改了7行警告show warnings; 查看警告截断truncated87.5/2 43.75 超出了dicimal (3,1) 的范围于是就进行了截断null未修改4删除 delete from表名where条件/order by/limit;1删除孙悟空同学的考试成绩2删除整张表的数据不指定任何条件就是删除整个表和drop table 不一样drop table是删除了表也删除了表里的记录delete 是只删除了表里的记录表还在空表delete和update都是很危险的操作delete一旦删除的条件没设置好就可能把不该删除的给删除掉了这里的修改/删除持久生效都会影响到 数据库服务器 硬盘中的数据~