兰州北山生态建设局网站,今天重大新闻2021,宁波设计公司有哪些,看wordpress导出文章#x1f451;专栏内容#xff1a;MySQL⛪个人主页#xff1a;子夜的星的主页#x1f495;座右铭#xff1a;前路未远#xff0c;步履不停 目录 一、数据库操作1、创建数据库2、查看所有数据库3、选定指定数据库4、删除数据库 二、数据表操作1、创建数据表2、查看所有表3、… 专栏内容MySQL⛪个人主页子夜的星的主页座右铭前路未远步履不停 目录 一、数据库操作1、创建数据库2、查看所有数据库3、选定指定数据库4、删除数据库 二、数据表操作1、创建数据表2、查看所有表3、查看指定表的结构4、删除表 三、增删改查1、新增指定列插入插入多个记录两者区别 2、查询全列查询指定列查询查询字段为表达式查询时去重排序查询条件查询 3、修改多列修改排序修改 4、删除 一、数据库操作
1、创建数据库
create database 数据库名;create,database 相当于关键字SQL 关键字不区分大小写数据库名不能重复
create database 数据库名 character set utf8;创建数据库的时候指定字符集
2、查看所有数据库
show databases;3、选定指定数据库
use 数据库名;一旦选定某个指定数据库后续操作就都是针对该数据库展开。
4、删除数据库
drop database 数据库名;注意drop操作是非常危险的一旦删掉数据库数据库中的所有数据都没了。
二、数据表操作
1、创建数据表
create table 表名(列名 类型 , 列名 类型.....);重点了解如下数据类型 int、bigint、varchar、double、decimal、datetime 创建表的时候需要把表的类型确定好后续插入的数据也要遵循当前类型。
create table product(name varchar(30),price int ,inventory int , description varchar(30)
);2、查看所有表
show tables;3、查看指定表的结构
desc 表名;Field字段。表示一行里面有几列 Type每一列的类型 NULL该列是否允许为空YES 就是允许为空不填 Default不填的时候的默认值 Extra额外的补充信息
4、删除表
drop table 表名;删除表相当于删除整个表的所有数据。也是一个危险的操作。
三、增删改查
1、新增
insert into 表名 values (值值值...);SQL 中 ‘ 和 “ 都行。大多数没有字符类型的编程语言都是允许单引号和双引号来表示字符串并且单双引号的效果是等价的。注意要想插入中文必须在创建数据库的时候指定 charset utf8
指定列插入
insert into book(name) values (三国演义); 使用 ()来标识当前要针对那些列进行插入多个列名之间可以用来分割。
插入多个记录
insert into book values (10,a),(12,b)....;两者区别
一次插入三条记录和分三次插入每次插入一条记录有什么区别 MySQL 是一个客户端服务器结构的程序。 每次执行SQL都涉及到了客户端和MySQL服务器之间的通信所以每一次的网络交互都有成本所以多行数据插入是优于单行多次插入的
2、查询
全列查询
select *from 表名;* 是通配符可以代指任意的列。 select * 一个非常危险的操作 因为select * 会查询所有的数据。如果查询的数据非常非常多那么就会导致这个服务器一瞬间硬盘的带宽和网卡的带宽都被吃满了。
指定列查询
手动指定查询某一列或者某几列。
select 列名,列名....from 表名;select name,author from book;查询字段为表达式
查询的同时可以进行计算。
select name,price-30 from book;MySQL是一个客户端 服务器 结构的程序我们看到的客户端显示的结果是一个“临时表”select 操作不管怎么写都不会影响到数据库服务器硬盘上存储的原始数据。 查询结构的列名和表达式是一致的不利于用户阅读。所以我们在查询的时候可以给表达式指定别名。
select name,price-30 as 价钱-30 from book;查询时去重
把重复的行去掉只保留一份。
select distinct 列名 from 表名;排序查询
对查询到的结果进行排序。MySQL是一个客户端 服务器 结构的程序我们看到的客户端显示的结果是一个“临时表”。对于数据库服务器上的原始的数据没有任何的顺序上的影响。
-- 升序排序(asc可以不写)
select 列名 from 表名 order by 列名 asc;
-- 降序排序
select 列名 from 表名 order by 列名 desc;
-- 多列排序多列排序有先后顺序
-- 先排前面的。前面的一样再排后面的
select 列名 from 表名 order by 列名,列名....asc;默认为升序排序如果想要降序排序就在列名后面加上 desc
select 列名 from 表名 order by 列名 desc;如果SQL中没有指定 order by此时我们的代码中就不应该依赖结果临时表的顺序MySQL并不承诺这个不带order by的查询结果是带有一定顺序的。
条件查询
查询的同时制定一个筛选条件把符合条件的结果保留不符合的就剔除掉。 比较运算符
运算符解释,,,大于大于等于小于小于等于等于NULL 不安全例如 NULL NULL 的结果是 NULL等于NULL 安全例如 NULL NULL 的结果是 TRUE(1)!,不等于between a0 and a1范围匹配[a0, a1]如果 a0 value a1返回 TRUE(1)in(option,…)如果是 option 中的任意一个返回 TRUE(1)IS NULL是NULLis not NULL不是NULLlike模糊匹配。% 表示任意多个包括 0 个任意字符_ 表示任意一个字
逻辑运算符
运算符解释and多个条件必须都为 TRUE(1)结果才是 TRUE(1)or任意一个条件为 TRUE(1), 结果为 TRUE(1)not条件为 TRUE(1)结果为 FALSE(0)
有些列可以不填不填就相当于 NULLwhere 条件可以使用表达式但不能使用别名。and 的优先级高于 or在同时使用时需要使用小括号 () 包裹优先执行的部分。
select name,price from book where price 89;理解查询语句执行的过程
服务器需要先遍历表中的每一个记录针对当前记录带入条件看是否成立如果条件成立则将这一结果加入结果集返回给客户端。否则跳过该结构。
-- 查询英语不及格的同学及英语成绩 ( 60 )
select name, english from exam_result where english 60;
-- 查询语文成绩好于英语成绩的同学
select name, chinese, english from exam_result where chinese english;
-- 查询总分在 200 分以下的同学
select name, chinese math english as total from exam_result where chinese math english 200;
-- 查询语文成绩大于80分且英语成绩大于80分的同学
select * from exam_result where chinese 80 and english 80;
-- 查询语文成绩大于80分或英语成绩大于80分的同学
select * from exam_result where chinese 80 or english 80;
-- 观察and 和 OR 的优先级
select * from exam_result where chinese 80 or math70 and english 70;
select * from exam_result where (chinese 80 or math70) and english 70;
-- 查询语文成绩在 [80, 90] 分的同学及语文成绩
select name, chinese from exam_result where chinese between 80 and 90;
-- 使用 and 也可以实现
select name, chinese from exam_result where chinese 80 and chinese 90;
-- 查询数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩
select name, math from exam_result where math IN (58, 59, 98, 99);
-- 使用 OR 也可以实现
select name, math from exam_result where math 58 OR math 59 OR math 98 OR math 99;
-- % 匹配任意多个包括 0 个字符
select name from exam_result where name like 孙%;-- 匹配到孙悟空、孙权
-- _ 匹配严格的一个任意字符
select name from exam_result where name like 孙_;-- 匹配到孙权
-- 查询 qq_mail 已知的同学姓名
select name, qq_mail from student where qq_mail is not null;
-- 查询 qq_mail 未知的同学姓名
select name, qq_mail from student where qq_mail IS NULL;3、修改
update 表名 set 列名 值 where 条件;进行修改要明确一些重要的信息。
改那个表改这个表的那个列改这个表的那写行
update book set price 80 where name 1984;
-- 把book表中的price列中1984这一行改成80
-- 这里面的 和上面的查询不一样是赋值而不是相等select 支持的各种条件对于 update 来说也是同样生效的。 update 可以理解为先查后改。
update book set price 0;update 后面不加其他操作会出现上面 会把所有的数据都修改掉非常非常非常危险 【注意】
update 是一个非常危险的操作。
多列修改
update 表名 set 列名 值 ,列名 值 where 条件;update book set price 80, class 西方小说 where name 1984;排序修改
update 表名 set 列名 列名 xxx order by 排序条件 ;update book set price price - 20 order by price limit 3;
-- 把price最低是三位再减204、删除
delete from 表名 where 条件;
-- 直接删除符合条件的行delete from book where name 了不起的盖茨比;删除是按行来删除的无法直接删除某些列。 要想删除列可以通过 update 来更新为 null select 支持的各种条件对于 delete 来说也是同样生效的。 如果在 delete的时候没有指定条件就会把所有的都删除。效果和删表差不多了。