数据库知识

启动数据库:sudo service mysql start
停止数据库:sudo service mysql stop
重启数据库:sudo service mysql restart
创建数据库:CREATE DATABASE database_name
查看数据库:SHOW DATABASE;
选择数据库: USE database_name;
删除数据库:DROP database_name;
查看当前时间:select now();
数据库表数据类型

  • 整数 int、bit
  • 小数 decimal 表示浮点数,如decimal(5,2)表示共存5位,小数占2位
  • 字符串 char、varchar
  • 日期时间 date(年月日)time(时间)datetime(年月日时间)
  • 枚举类型 enum
  • 主键primary key:物理上存储顺序
  • 非空not null:此字段不允许写空值
  • 默认default:默认值
  • 自增auto_increment
    创建表
    建好了数据库,我们选择一个数据库,来对它进行表的相关操作。表是数据在数据库中一种逻辑上的存储形式,和常见的电子表格类似,其中每一行代表一个记录(可以理解成一个数据对象),而记录的每一列代表一个字段(其实你可以理解成数据对象的属性)。

表的基本操作有创建,查看,删除,修改4种基本操作。我先从创建表说起。

CREATE TABLE table_name(
    Att_name_1 Data_type_1,
    Att_name_2 Data_type_2,
    ...
    Att_name_n Data_type_n,
);

table_name表示要创建的表的名称;Att_name_i表示第i个字段(也就是属性)的名称,Data_type_i表示第i个属性所对应的值的数据类型。
创建表tab_student

CREATE TABLE tab_student(
ID VARCHAR(20)
Score INT
);

”tab_student”中有两个字段,学生的身份ID以及对应的成绩Score,其中,ID是一个VARCHAR(20)型的字**符变量,里面的20是参数;Score则是一个整数类型的变量。
查看表
选择数据库后用语句SHOW TABLES:

USE TEST;
SHOW TABLES;

查看某个表的具体信息:先选择数据库,然后用DESCRIBE语句查看。

USE TEST;
DESCRIBE tab_student;

如果想要查看表结构更详细的定义,可以采用SHOW CREATE TABLE语句
删除表
DROP TABLE table_name语句用来删除表,其中”table_name”是表名。
修改表
修改表主要分为修改表名和修改表中的字段。

  1. 修改表名
    ALTER TABLE old_table_name RENAME new_table_name语句用来修改表名,其中”old_table_name”是旧表名,”new_table_name”是新表名,当然,这里所要操作的对象一定得是存在的,不然会报错。
ALTER TABLE tab_student RENAME tab_student1;

2.增加字段

  • ADD语句在表格末尾
ALTER TABLE TABLE_NAME ADD att_name_1 data_type_1;

在表table_name末尾,增加属性名为att_name_1,数据类型为data_type_1字段。

  • ADD…FIRST语句在表格末尾
ALTER TABLE TABLE_NAME ADD att_name_1 data_type_1 ;

在表table_name开头,增加属性名为att_name_1,数据类型为data_type_1字段。

  • ADD…AFTER…语句在表格末尾
ALTER TABLE TABLE_NAME ADD att_name_1 data_type_1 AFTER data_type_2;

在表table_name中的属性名为att_name_2的字段后增加属性名为att_name_1,数据类型为data_type_1字段。
删除字段

ALTER TABLE table_name DROP att_name;

将属性名为Att_name 的字段删除
修改字段
修改字段的数据类型

ALTER TABLE table_name NODIFY att_name New_data_type;

修改字段名

ALTER TABLE table_name CHANGE Old_name New_att_name Old_data_type;

同时修改字段名和数据类型:

ALTER TABLE table_name CHANGE Old_att_name New_att_name New_data_type;

将属性名为”Old_att_name”的字段名修改为”New_att_name”,数据类型为”New_data_type”的字段。基本语法结构与上面的修改字段名是一样的。
修改字段顺序:

ALTER TABLE table_name MODIFY Att_name_1 Data_type_1 FIRST (AFTER Att_name_2);

括号里面是另一种形式,先不看,括号外头的意思是将属性名为”Att_name_1”,数据类型为”Data_type_1”的字段放置于表的开头。而括号里面的是另一种修改次序的方法,表示将属性名为”Att_name_1”,数据类型为”Data_type_1”的字段放置于属性名为”Att_name_2”的字段后面。
数据的增删改查
增加

  • insert into 表名 values(值1,值2…);注:有几列values中就有几个值
  • insert into 表名(列1,列2…) values(值1,值2…);
  • insert into 表名 values(值1,值2…),(值1,值2…),(值1,值2…),…;
    查询所有字段
    select * from 表名;
    查询指定字段
    select 列1,列2 from 表名;
    使用as给字段重命名
    select 字段名 as 重命名 from 表名;
    消除重复行
    select distinct 列1,… from 表名;
    条件查询
    select * from 表名 where 条件;
  • where后面支持多种运算符,进行条件的处理:1、比较运算符2、逻辑运算符3、模糊查询4、范围查询5、空判断

比较运算符
大于>、小于<、等于=、大于等于>=、小于等于<=、不等于!=或<>
查询id大于3的所有学生
select * from students where id<3;
查询编号不大于4的学生
select * from students where id<=4;
查询姓名不是”黄蓉“的学生
select * from students where name!=“黄蓉”;
查询没有被删除的学生
select * from students where is_delete=0;
逻辑运算符
and、or、not
查询编号大于3的女同学
select * from students where id>3 and gender=0;
查询编号小于4或没有被删除的同学
select * from students where id<4 or is_delete=0;
模糊查询
like、%表示任意多个字符、表示一个任意字符
查询姓黄的学生
select * from students where name like “黄%”;
查询姓黄且名只有一个字的学生
select * from students where name like “黄
”;
查询姓黄或者叫靖的学生
select * from students where name like “黄%” or name like “%靖”;
范围查询

  • in表示在一个非连续的范围内、between…and…表示在一个连续的范围内

查询编号1、3或者8的学生
select * from students where id in(1,3,8);
查询编号3至8的学生
select * from students where id between 3 and 8;
查询编号3至8的男生
select * from students where (id between 3 and 8) and gender=1;
空判断
注意null和’’是不同的
判空is null

查询没有填写身高的学生
select * from students where height is null;
判非空is not null
查询写了身高的学生
select * from students where height is not null;
查询填写了身高的男生
select * from students where height is not null and gender=1;
修改数据
update 表名 set 列1=值1,列2=值2,…;
删除数据
delete from 表名 where 条件;
排序 asc升序/desc降序(不写默认是asc)
select * from 表名 order by 列1 asc|desc,列2 asc|desc …;
聚合函数
count() 表示总行数,括号中写与列名结果是相同的
max(列) 表示求此列的最大值
min(列) 表示求此列的最小值
sum(列) 表示求此列的和
avg(列) 表示求此列的平均值

group by 分组
将查询结果按照1个或多个字段进行分组,字段相同的为一组
可用于单个字段分组,也可用于多个字段分组,注意与distinct的区别,后者只能做去重

group by + group_concat()
group_concat**(字段名)可以作为一个输出字段使用,表示分组以后,根据分组结果,使用group_concat()来放置每一组的某个字段的集合**
group by + 集合函数
通过集合函数对这某一组字段的集合进行操作
group by + having
用来指定一些条件来输出查询结果,having作用和where一样,但having只能用于group by
group by + with rollup
在最后新增一行,用来记录当前列里所有记录的和
获取部分行
select * from 表名 limit start,count;
连接查询
select * from 表1 inner/left/right join 表2 on 表1.列=表2.列;
完整的select语句
select * from 表名
where … group by … having …
order by … limit start,count;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值