数据库的创建、查找、查看、删除
数据库中没执行一条命令结尾必须是分号结尾,并且分号是英文的
查看当前有哪些数据库:
show databases;
创建数据库
create database 数据库名;
如果想看数据库里面有哪些表
(先进入数据库use 数据库名;在执行直看表的命令show tables ;
(不进入数据库直接在后面加数据库名字查询)show tables from 数据库名;
如果想要查看数据库单面某一张表的结构
(先进入数据库use 数据库名;再执行desc 表名;)
(不进入数据库直接加数据库的名字;desc 数据库名 表名;)
查看当前我正在使用的数据库是哪一个
select database();
使用数据库/进入到某一个数据库:
use (database) 数据库名; (括号里面的内容代表可有可为)
删除数据库
drop database数据库名;
(即可以删除数据库也可以删除表,如果是删除表那么整张表都会被删除,包括表内容,表结构delete删除表,表内容删除,但是表的结构依然存在)
创建表、查询表结构、删除表
语法:create table 表名(字段1 类型,字段2 类型,字段3 类型);
例如:create table dd(id int not null,name varchar(20) not null,age tinyint );(创建了学号姓名年龄)not noll 不为空
在创建表时可以添加中文
在每次创建表的时候都在最后加上 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 即可在表中添加中文
查看表结构:desc 表名;
查看表的属性/可以查看表是如何创建的
show create table 表名\G; (当信息混乱时,就反斜杠大写G)
查看表结构:
1.describe 表名 2.desc +表名
删除表
drop table 表名;(把整张表删除)
自动增长和主键
auto_increment primary key一般跟主键连用(主键可以单独去用,自动增长不行)
create table 表名(字段 数据类型 auto_increment primary key);
数据库四剑客(增刪改查)
向数据库里面的表添加数据时(①向指定某一列添加②批量添加)(和名字有关的要用单引号框起来)(没有设置主键、自动增长…数据可以重复添加)
插入一条数据语法
insert into 表名(字段1, 字段2, 字段3,....) values(字段一的值,字段二的值,字段三的值,.....);
(数值和字段是一一对应)
插入多条数据语法
语法:insert into 表名 (字段1,字段2,字段三) values(字段一的数据,字段二的数据,字段三的数据) ,(),()......;
例如(insert into 表名 (id,name,age) values(1,'tom",13),(2, 'jerry',15),(3,'lisi',2);
语法:insert into 表名(字段1,字段3) values(字段1的值,字段3的值),(字段1的值,字段3的值)...
例如:insert into student(id,name) values(7,'alice');
插入指定列数据时:
insert into 表名(字段1,字段3) values(字段1的值 字段3的值);
插入多条数据insert into 表名(字段1,字段3) values(字段1的值,字段3的值),(字段1的值,字段3的值)...;
例如:insert into student(id,name) values(7,'alice');
单独查询表里面的某个字段
select 字段名 from 表名;
查询表里面的数据
select * from 表名;(*表示所有)
delete删除
delete删除(①删除所有的数据②删除部分数据)只是删除表里面的数据,结构不会删除,(如果是自动增长,表结构依然存在,数据的id会从之前删除的末尾继续),删除的数据可以通过回滚事务日志恢复数据,但是每删除一行就会写到日志里面长期以来就会很占用空间。
删除所有数据:
delete from 表名;(表当中的数据都会被删除,但是表结构依然存在)
删除部分数据:
delete from student where age = 30;
(如果满足后面的条件,则只会删除和后面条件相关的数据)(如果是自动增长,表结构依然存)
truncate删除
删除表中所有数据,且无法恢复
表结构、约束和索引等保持不变,新添加的行计数值重置为初始值
执行速度比DELETE快,且使用的系统和事务日志资源少
通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放
对于有外键约束引用的表,不能使用TRUNCATE TABLE删除数据
不能用于加入了索引视图的表
truncate +表名删除
(删除表当中的数据,表结构依然存在,如果有自动增长的不会延续id号,而是从新开始
修改
修改alter
1.修改表名
语法:alter table 旧表名 rename [to]新表名;
例如:alter table student1 rename student2; (代表把student1的名字数为student2)
2.修改表字段
语法:alter table 表名 change 原來的字段名字 +新字段的名字+新字段的类型
例如:alter table student2 change age score float;
(代表把student2表当中的age字段改为score字段同时指定新字段的类型float)
modify.修改。
修改字段的数据类型
alter table 表名 modify 字段 字段类型;
例如:alter table 表名 modify id tinyint; ( 代表把id字段的类型改为tinyint)
add添加表的字段
alter table 表名 add 新字段名 数据类型:
例如:alter table student add score float;
(向student表中添加新字段,新的字段为score字段类型为float)
删除表当中的字段
alter table 表名 drop 需要删除的字段;
例如:alter table student drop score; (代表删除student表中score的字段)
修改表字段的排列顺序
语法:alter table 表名 modify 字段1(要修改的字段)+数据类型 + fipst/after+ 字段2
例:alter table student modify name varchar(20) after age; (代表把name的字段放在age字段的后面)
更新数据update
修改表当中数据:
update 表名 set 字段名=值;
更改全部的数据:
update student set age = 20;
(修改student表中,把所有的年龄都设置为20岁
更改部分数据:
update 表名 set 字段名= 值 Where 条件;
例:update 表名 set age = 15 where name = jerry;
“代表的是修改student表中,满足条件名字为jerry时,把年龄设置为15岁
查询
select * from student3 where age <15;
查询student3表当中年龄小于15岁的不包含15岁
select * from student3 where age>15;
查询student3表当中年龄大于15岁的不包含15岁
select * from student3 where age >= 15;
查询student3表当中年岭大于15岁的,包含15岁
select * from student3 where age <= 15;
查询student3表当巾年龄小于15岁的,包含15岁
select * from student3 where age != 15;
查询student3表当中年龄不是15岁的
select * from student3 where age = 15;
查询student3表当中年龄是15岁的
select * from student3 where age between 15 and 20;
查询student3表当中年龄在15-20岁之间的,并且包含15和28
select * from student3 where age is not null;
查询Student3表当中年龄 ,不是空的有哪些
select * from student3 where age is null;
查询student3表当中年龄是空的有哪些
and代表两个条件同时满足
select * from student3 where age >= 15 and age <=20;
or代表两个条件满足其中一个”
select * from student3 where age >= 30 or age <= 20;
百分号a表示a前面不管叫什么只要最后为a都会显示出来
select * from student3 where name '%a';
排序
order by升序 也就是从小到大的顺序
按照从小到大的顺序排序:
select * from 表名 order by 字段;
例如:select * from student3 order by age;
把student3表当中年龄按照从小到大的顺序排序
大到小排序
select * from 表名 order by 字段 desc;
例如:select * from 表名 order by age desc;
把student3表当中的年龄按照从大到小的顺序排序
数据取值
limit 数字----代表的是取前多少个值
select * from 表名 order by 字段 desc limit 3;
先从大到小排序取年龄最大的前三位
select"* from 表名 order by 字段 desc limit 2,3;
把student3表当中的年龄按照从大到小的顺序排序取年龄最大的二位同学但是跳过前两位 ,前面2指跳过前两位取后面3位。