您当前的位置:首页 > 计算机 > 软件应用 > 数据库 > MySQL

mysql精选02集(数据库基础操作)

时间:04-23来源:作者:点击数:

MySQL_Query

一、数据库管理

1、数据库完整性

  • 一个数据库就是一个完整的业务单元,可以包含多张表,数据被存储在表中
  • 在表中为了更加准确的存储数据,保证数据的正确有效,可以在创建表的时候,为表添加一些强制性的验证,包括数据字段的类型、约束

2、数据类型支持

  • 可以通过查看帮助文档查阅所有支持的数据类型
  • 使用数据类型的原则是:够用就行,尽量使用取值范围小的,而不用大的,这样可以更多的节省存储空间
① 数字类型:
  • 整数类型:INT,SMALLINT,TINYINT,MEDIUMINT,BIGINT
  • 浮点类型:FLOAT,DOUBLE,DECIMAL
  • 比特值类型:BIT
    在这里插入图片描述

Tips:

1、对于精度比较高的东西,比如money,用decimal类型提高精度减少误差。列的声明语法是DECIMAL(M,D)。

  • M是数字的最大位数(精度)。其范围为1~65,M 的默认值是10。
  • D是小数点右侧数字的数目(标度)。其范围是0~30,但不得超过M。
    比如 DECIMAL(6,2)最多存6位数字,小数点后占2位,取值范围-9999.99到9999.99。

2、比特值类型指0,1值表达2种情况,如真,假

② **字符串类型:
  • char和varchar类型
  • binary和varbinary类型
  • blob和text类型
  • enum类型和set类型
在这里插入图片描述
③ 类型区分
  • char 和 varchar

char:定长,效率高,一般用于固定长度的表单提交数据存储,默认1字符

varchar:不定长,效率偏低

  • text 和blob

text用来存储非二进制文本

blob用来存储二进制字节串

  • enum 和 set

enum用来存储给出的一个值

set用来存储给出的值中一个或多个值

  • 更全的数据类型可以参考https://www.cdsy.xyz/computer/soft/database/mysql/230423/cd43143.html

3、约束

  • 主键primary key:物理上存储的顺序【auto_increment 自增】
  • 非空not null:此字段不允许填写空值
  • 惟一unique:此字段的值不允许重复
  • 默认default:当不填写此值时会使用默认值,如果填写时以填写为准
  • 外键foreign key:对关系字段进行约束,当为关系字段填写值时,会到关联的表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并抛出异常
  • 说明:虽然外键约束可以保证数据的有效性,但是在进行数据的crud(增加、修改、删除、查询)时,都会降低数据库的性能,所以不推荐使用,那么数据的有效性怎么保证呢?答:可以在逻辑层进行控制

4、索引操作


二、数据库操作

1、查看已有库

show databases;
重温【数据库与数据库表的关系图】
在这里插入图片描述

2、创建库(指定字符集)

create database 数据库名 character set utf8;

create database 数据库名 charset=utf8;

create database 数据库名 default charset utf8 collate utf8_general_ci;

Tips:数据库命名规则

数字、字母、下划线,但不能使用纯数字

库名区分字母大小写

不能使用特殊字符和mysql关键字

创建python数据库,编码为utf8

案例:创建python数据库,编码为utf8
 create database python character set utf8;
 create database python charset=utf8;

3、查看创建数据库的语句(字符集)

show create database 数据库名;

案例:查看stu创建方法
show create database python;

4、查看当前所在数据库

select database();

5、切换数据库

use 数据库名;

案例:使用python数据库
use python;

6、删除库(跑路)

drop database 数据库名;

案例:删除python数据库
drop database python; 

7、总结:

库管理 代码
服务器状态 status;
查看整个数据库的编码集 show variables like ‘charavter%’;
创建库(制定字符集) create database 数据库名 character set utf8;create database 数据库名 charset=utf8; create database 数据库名 default charset utf8 collate utf8_general_ci;
查看已有库 show databases;
切换库 use 数据库名;
查看创建库的语句 show create database 数据库名;
删除库 drop database 数据库名;

 

三、数据库表操作

1、查看当前数据库中所有表(show table)

show tables;
再来看看【数据库与数据库表的关系图】
在这里插入图片描述

2、查看表结构(desc)

desc 表名;

3、创建表(create table)

auto_increment表示自动增长

CREATE TABLE table_name(
    column1 datatype contrai,
    column2 datatype,
    column3 datatype,
    .....
    columnN datatype,
    PRIMARY KEY(one or more columns)
);

例:创建班级表

create table classes(
    id int unsigned auto_increment primary key not null,
    name varchar(10)
);

例:创建学生表

create table students(
    id int unsigned primary key auto_increment not null,
    name varchar(20) default '',
    age tinyint unsigned default 0,
    height decimal(5,2),
    gender enum('男','女','保密'),
    cls_id int unsigned default 0
)

4、表字段操作(alter)

① 添加字段(add)

alter table 表名 add 列名 类型;

alter table students add birthday datetime;
②修改字段名(change)

alter table 表名 change 原名 新名 类型及约束;

alter table students change birthday birth datetime not null;
③ 修改数据类型(modify)

alter table 表名 modify 列名 类型及约束;

alter table students modify birth date not null;
④删除字段(drop)

alter table 表名 drop 列名;

alter table students drop birthday;
⑤表名重命名(rename)

alter table 表名 rename 新表名;

alter table students rename classes;

5、删除表(drop table)

drop table 表名;

drop table students;

6、查看表的创建语句(show create table)

show create table 表名;

show create table classes;

四、增删改查(curd)

curd的解释: 代表创建(Create)、更新(Update)、读取(Retrieve)和删除(Delete)

1、查询(select)

  • 查询所有列

    select * from 表名;

select * from classes;
  • 查询指定列
  • 可以使用as为列或表指定别名

    select 列1,列2,… from 表名;

select id,name from classes;

2、增加(insert)

格式:INSERT [INTO] tb**name [(col**name,…)] {VALUES | VALUE} ({expr | DEFAULT},…),(…),…

  • 说明:主键列是自动增长,但是在全列插入时需要占位,通常使用0或者 default 或者 null 来占位,插入成功后以实际数据为准
  • 全列插入:值的顺序与表中字段的顺序对应

    insert into 表名 values(…)

insert into students values(0,’刘诗雯‘,1,'广州','2016-1-2');
  • 部分列插入:值的顺序与给出的列顺序对应

    insert into 表名(列1,…) values(值1,…)

insert into students(name,hometown,birthday) values('刘诗雯','广州','2016-3-2');
  • 上面的语句一次可以向表中插入一行数据,还可以一次性插入多行数据,这样可以减少与数据库的通信
  • 全列多行插入:值的顺序与给出的列顺序对应

    insert into 表名 values(…),(…)…;

    insert into 表名 values(0,‘python1’),(0,‘python2’);

    insert into 表名(列1,…) values(值1,…),(值1,…)…;

insert into students(name) values('杨康'),('杨过'),('小龙女');

3、修改(update)

  • UPDATEtbnameSET col1={expr1|DEFAULT} [,col2={expr2|default}]…[where 条件判断]

update 表名 set 列1=值1,列2=值2… where 条件

update students set gender=0,hometown='北京' where id=5;

4、删除(delete)

  • DELETE FROM tbname [where 条件判断]

delete from 表名 where 条件

delete from students where id=5;
  • 逻辑删除,本质就是修改操作
update students set isdelete=1 where id=1;

5、总结:

表管理 代码
创建表 create table 表名(   字段名 数据类型,   字段名 数据类型,   …   字段名 数据类型 );
查看数据表 show tables;
查看已有表的字符集 show create table 表名;
查看表结构 desc 表名;
插入(insert into) insert into 表名 values(值1,值2,…),(值1,值2,…);
  insert into 表名 (字段1,…) values(值1,…);
查询(select) select 字段1,… from 表名 where 条件;
  select 字段,字段2,… from 表名;(千万别用*)
更新表记录(update)修改 update set 字段1=值1,… where 条件;
删除表记录(delete) delete from 表名 where 条件;
删除表(drop) drop table 表名;
表字段的操作(alter)  
添加字段(add)  默认末尾添加 alter table 表名 add 字段名 数据类型;
第一处添加first alter table 表名 add 字段名 数据类型 first;
在哪个字段名后面添加after alter table 表名 add 字段名 数据类型 after 字段名;
删除字段(drop) alter table 表名 drop 字段名;
修改数据类型(modify) alter table 表名 modify 字段名 新数据类型;
修改字段名(change) alter table 表名 change 旧字段名 新字段名 新数据类型 (新旧字段名相同也可以修改数据类型)
表重命名(rename) alter table 表名 rename 新表名;

五、常用时间类型数据

  • 时间和日期类型:

DATE,DATETIME和TIMESTAMP类型

TIME类型

年份类型YEAR

img

1、时间格式

date :“YYYY-MM-DD”

time :“HH:MM:SS”

datetime :“YYYY-MM-DD HH:MM:SS”

timestamp :“YYYY-MM-DD HH:MM:SS”

Tips:

1、datetime :不给值默认返回NULL值

2、timestamp :不给值默认返回系统当前时间

2、日期时间函数

now() 返回服务器当前时间

curdate() 返回当前日期

curtime() 返回当前时间

date(date) 返回指定时间的日期

time(date) 返回指定时间的时间

3、时间操作

  • 查找操作
select * from timelog where Date = "2019-07-02";
select * from timelog where Date>="2019-06-01" and Date<="2019-06-31";
  • 日期时间运算
    • 语法格式

      select * from 表名 where 字段名 运算符 (时间-interval 时间间隔单位);

    • 时间间隔单位: 1 day | 2 hour | 1 minute | 2 year | 3 month
案例:select * from timelog where date > (now()-interval 1 day);
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门