之前我们对数据库的环境以及对数据库的一些操作有了更进一步的认识,今天我们来更

进一步的了解对数据库中表的一些操作。mysql 新增字段不限制长度 mysql新增一个字段_mysql 新增字段不限制长度mysql 新增字段不限制长度 mysql新增一个字段_sql_02mysql 新增字段不限制长度 mysql新增一个字段_mysql 新增字段不限制长度_03

1、基本操作 

 需要操作数据库中表的时候,首先要需要使用该数据库:use db_test

例:use mysql;

mysql 新增字段不限制长度 mysql新增一个字段_数据库_04

       1.1显示当前数据库表 

show tables; 

例:

mysql 新增字段不限制长度 mysql新增一个字段_mysql 新增字段不限制长度_05

       1.2查看表的结构 

desc 表名;

例:desc user;

mysql 新增字段不限制长度 mysql新增一个字段_数据库_06

       1.3创建表

create table table_name(
         field1 datatype,
          field1 datatype,
           field1 datatype
);


注意:1.field 是字段名,datatype是字段的数据类型;

           2.小括号把字段括起来,多个字段间用逗号隔开,最后一个字段不加逗号

例:创建一个学生表

mysql 新增字段不限制长度 mysql新增一个字段_sql_07

注意:

1.在创建表的时候,建议先删除再创建 ,

mysql 新增字段不限制长度 mysql新增一个字段_mysql_08

 

mysql 新增字段不限制长度 mysql新增一个字段_字段_09


2.数据库名,表名,字段名,不能是数据库关键字,

mysql 新增字段不限制长度 mysql新增一个字段_数据库_10

3.如果非要使用关键字,那么可以在关键字前后加 ` ,

mysql 新增字段不限制长度 mysql新增一个字段_数据库_11

       1.4删除表 

drop table [if exists] table_name;

       1.5注释

 1.在SQL中可以使用“-- 空格”来注释(数据库忽略这种注释),

mysql 新增字段不限制长度 mysql新增一个字段_sql_12

mysql 新增字段不限制长度 mysql新增一个字段_字段_13

 2.表和字段可以加comment注释(数据保存表定义的时候,就会保存这个数据)

mysql 新增字段不限制长度 mysql新增一个字段_sql_14

2、新增(插入)数据

       2.1全列插入

 insert into 表名 values(字段1要插入的数据,字段2要插入的数据)

注意:全列插入,表示所有字段都要插入值,且插入的顺序,是表定义时候的顺序

 例:

-- 全列插入
 insert into student values(1,'张三',0,'简历',1000,'2000-01-01' , '张同学');

mysql 新增字段不限制长度 mysql新增一个字段_mysql 新增字段不限制长度_15

mysql 新增字段不限制长度 mysql新增一个字段_数据库_16

       2.2指定列插入 

 insert into 表名(要插入的字段1,要插入的字段2)values(要插入的值1,插入的值2)

注意:直插入我们需要的字段,其他没有插入的字段就是空

 例:

-- 指定列插入
 insert into student(id,name) values(2,'李四');

mysql 新增字段不限制长度 mysql新增一个字段_数据库_17

 插入多条语句:

1.多执行几次insert 语句,

2.执行一条:insert into 表名(ID,name)values(1,'张三‘’),(2,'李四’);

 3、查询语句

       3.1全列查询 

select * from table_name; 

直接查询某张表所有数据,及所有字段

mysql 新增字段不限制长度 mysql新增一个字段_mysql_18

       3.2指定列查询

 select 查询列1,查询列2 from student;

 查询某字段

mysql 新增字段不限制长度 mysql新增一个字段_sql_19

 缺点(全列查询和指定列查询):

1.效率低,涉及索引优化问题,

2.若开发使用框架,可以把数据转化为Java中的对象

        3.3查询字段为表达式

 select id,name,amount*2 from student;

mysql 新增字段不限制长度 mysql新增一个字段_sql_20

注意:

 字符串拼接,不能使用+,需要使用concat(str1,str2.....)函数,

mysql 新增字段不限制长度 mysql新增一个字段_mysql_21

 

mysql 新增字段不限制长度 mysql新增一个字段_mysql 新增字段不限制长度_22

日期的操作,也需要函数

-- 日期操作

-- year(日期的值),month(日期的值),day(日期的值)
 select id,name,year(birthday),day(birthday) from student;

mysql 新增字段不限制长度 mysql新增一个字段_数据库_23

       3.4别名 

     如果查询字段进行了计算操作,查询返回的字段就不是数据库定义的字段名了,这时就要用到别名。

      返回字段名 [as] 别名

mysql 新增字段不限制长度 mysql新增一个字段_mysql 新增字段不限制长度_24

 别名作用:

1.简洁;

2.规则一点;

3.可能需要查询多张表的字段及多张表的字段(可能有重复字段,若重复,程序在获取时就不知道是哪个)

        3.5去重 distinct

 select distinct 字段名1,字段名2 from student;

        3.6排序 order by

 select  字段1, 字段2,...from 表名 order by 字段1[desc],字段2[asc];

注意:

1.asc 为按升序排列,

2.desc 为按降序排列,

3.默认为asc,

4.null数据排序,视为比任何数小,升序在最上面,降序在最下面,

5.多个字段排序,按多字段顺序排列,先按第一个字段排序,若第一个字段相同,则按第二个字段排序,以此类推;若第一个字段不相同,则后边字段就没有用,会按照第一个字段排序,

6.排序也可以使用表达式及别名

 

例: 

mysql 新增字段不限制长度 mysql新增一个字段_mysql 新增字段不限制长度_25

-- 排序:order by 字段名
select id,name,amount from student order by id; 

 

mysql 新增字段不限制长度 mysql新增一个字段_数据库_26

 -- 排序:order by 字段名
select id,name,amount from student order by id asc; 

mysql 新增字段不限制长度 mysql新增一个字段_mysql 新增字段不限制长度_27

  -- 排序:order by 字段名
select id,name,amount from student order by id desc; 

mysql 新增字段不限制长度 mysql新增一个字段_mysql 新增字段不限制长度_28

-- 插入几条数据
insert into student(id,name,amount)values
       (1,'小刘',300),
       (2,'小华',200),
       (3,'小马',400);

mysql 新增字段不限制长度 mysql新增一个字段_mysql_29

 

mysql 新增字段不限制长度 mysql新增一个字段_字段_30

mysql 新增字段不限制长度 mysql新增一个字段_数据库_31

mysql 新增字段不限制长度 mysql新增一个字段_字段_32

 

       3.7条件查询:where 

比较运算符:

运算符

说明

>, >=, <, <= 
大于,大于等于,小于,小于等于
= 
等于,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 
是 NULL
IS NOT NULL 
不是 NULL
LIKE
模糊匹配。% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字
符
  注意:1.in匹配()中任意一个,就返回true/false, 


              2.null不能使用比较运算符,要用is/is not null 

逻辑运算符:

运算符 
说明
AND 
多个条件必须都为 TRUE(1),结果才是 TRUE(1)
OR 
任意一个条件为 TRUE(1), 结果为 TRUE(1)
NOT 
条件为 TRUE(1),结果为 FALSE(0)
注意:1.where条件可以使用表达式,但不能使用别名
            2.and的优先级高于or,在同时使用时,需要使用小括号包裹优先执行的部分
例:新建一个表
-- 创建考试成绩表
 DROP TABLE IF EXISTS exam_result;
 CREATE TABLE exam_result (
 id INT,
 name VARCHAR(20),
 chinese DECIMAL(3,1),
 math DECIMAL(3,1),
 english DECIMAL(3,1)
 );

 -- 插入测试数据
 INSERT INTO exam_result (id,name, chinese, math, english) VALUES
 (1,'唐三藏', 67, 98, 56),
 (2,'孙悟空', 87.5, 78, 77),
 (3,'猪悟能', 88, 98, 90),
 (4,'曹孟德', 82, 84, 67),
 (5,'刘玄德', 55.5, 85, 45),
 (6,'孙权', 70, 73, 78.5),
 (7,'宋公明', 75, 65, 30);


 

mysql 新增字段不限制长度 mysql新增一个字段_sql_33

 -- 基本查询 select name, english from exam_result where english<60; 

mysql 新增字段不限制长度 mysql新增一个字段_mysql 新增字段不限制长度_34

 -- and与or
-- 查询语文成绩大于80或英语成绩大于80的同学
select *from exam_result where chinese>80 or english>80;

mysql 新增字段不限制长度 mysql新增一个字段_数据库_35

-- 查询语文成绩大于80且英语成绩大于80的同学
select *from exam_result where chinese>80 and english>80;

 

mysql 新增字段不限制长度 mysql新增一个字段_mysql_36

 -- between....and
-- 查询语文成绩在[80,90]的同学以及成绩
select name,chinese from exam_result where chinese between 80 and 90;

mysql 新增字段不限制长度 mysql新增一个字段_数据库_37

 -- 查询语文成绩在[80,90]的同学以及成绩
select name,chinese from exam_result where chinese >= 80 and chinese<=90;

mysql 新增字段不限制长度 mysql新增一个字段_字段_38

-- in
-- 查询数学成绩是58或者59或者99的同学以及成绩
select name,math from exam_result where math in(58,59,98);

mysql 新增字段不限制长度 mysql新增一个字段_sql_39

 -- 模糊查询:like
-- %匹配任意多个字符
select name from exam_result where name like '孙%';

mysql 新增字段不限制长度 mysql新增一个字段_mysql 新增字段不限制长度_40

 -- _匹配到严格一个任意字符
select name from exam_result where name like '孙_';

mysql 新增字段不限制长度 mysql新增一个字段_mysql_41

-- null的查询 is[not] null
-- 查询生日不知道的同学的姓名
select name, birthday from student where birthday is null;

mysql 新增字段不限制长度 mysql新增一个字段_sql_42


-- 查询生日以知道的同学的姓名


select name, birthday from student where birthday is not null;

mysql 新增字段不限制长度 mysql新增一个字段_mysql 新增字段不限制长度_43

       3.8分页查询 limit 

-- 起始下标为0

-- 从0开始,查询n 条结果

select ...from table_name limit n;

-- 从s开始,查询n条结果

select ....from table_name limit s,n;

 -- 分页查询
select*from exam_result limit 2,3;

mysql 新增字段不限制长度 mysql新增一个字段_sql_44


4、修改update 

 update 表名 set 字段1=要修改的值1,字段2=要修改的值2,...where 条件 order by...

例:-- 将孙悟空的数学成绩改为88

     -- 将孙悟空的数学成绩改为88 update exam_result set math=80 where name='孙悟空';

mysql 新增字段不限制长度 mysql新增一个字段_字段_45

 

注意:update修改操作,可以修改多行数据,如果希望只修改对应的,一定要给定条件,where语句过滤后再修改 

5、删除 delete 

delete from 表名 where 条件 order by.... 

注意:删除和修改类似,也会按照条件过滤后的结果删除,如果没用条件,则就是删除整张表 

例:-- 删除孙悟空的考试成绩 

delete from exam_result where name='孙悟空';

mysql 新增字段不限制长度 mysql新增一个字段_sql_46