欢迎光临散文网 会员登陆 & 注册

0720-MySQL(1)

2023-07-20 20:37 作者:GHWNM  | 我要投稿

1. 数据库是什么?

数据库是一种存储数据的仓库

就像车库,水库,钱库等.....存储数据的仓库,就叫数据库

目前主流的数据库有好几种,比如Oracle,MySQL,SQL Server等等

有的数据库是要收费的,不会开源,但是这次学的MySQL是开源的,免费的,以及跨平台的

# SQL Server 是微软开发的,他既不开源也不跨平台,垃

这次我们学的数据库是关系型数据库,开源免费跨平台,与隔壁形成鲜明对比


数据库:DB(DataBase),用来管理数据的服务软件:DBMS(DataBase Management System)

数据库系统:DBS(DataBase System),带有数据库并整合了数据库管理软件的系统

MySQL适用于中小型规模的,主流多种编程语言,以及Unix,Linux,Windows等多种操作语言

=utf

sql语句:

创建一个名字为PythonTest01,编码格式为utf-8的数据库

create database PythonTest01 charset=utf8;

显示所有数据库

show databases;

显示创建数据库的流程(我也看不懂,也不知道有啥用)

show create database PythonTest01; --这个不用加charset=utf8,不然就报错

删除数据库

drop database PythonTest01;

--如果你不创建数据库,是无法直接新建表的

查询当前使用的数据库

select database();

使用PythonTest01数据库

use PythonTest01;

查看当前数据库所有的表

show tables;

创建一个新数据表 名称为xxxxx 有两个字段,第一个为int类型的id,第二个为varchar(30长度)的name

create table xxxxx (id int, name varcahr(30))

查看xxxxx数据表的结构

desc xxxxx;

怎么对新创建的数据表字段约束?字段 类型 约束(不限顺序)

create table yyyyy(id int primary key not null auto_increment, name varchar(30));

这东西很长,所以可以换行

create table zzzzz(

id int primary key not null auto_increment,

name varchar(30)

);


创建一个students数据表

create table students(

    id int unsigned primary key not null auto_increment, -- unsigned是表示无符号类型,也就是正数

    name varchar(30),

    age tinyint unsigned default 0, --默认为0

    high decimal(5,2), --小数类型(decimal),表示一共五位,有两位小数

    gender enum("男","女","武装直升机","我不到阿") default "我不到阿", --枚举类型,一共四种性别,默认我不到啊(

    cls_id int unsigned --最后一个记住不要加逗号

);


插入一个数据

insert into students values(0, "老登", 18, 188.88, "男", 0);


在students里面添加新的字段[字段 类型]

alter table students add birthday datetime;

重命名字段[原名 新名 类型与约束]

alter table students change birthday birth datetime not null

修改字段:

alter table students modify birth date not null;

删除字段:

alter table students drop birthday;

删除表:

drop table students;


数据的增删改查(surd)

增[自增的那位置填null 0 或者default都表示让他自个填]:

insert into students values(0, "fw刀", 40, 170.65,"我不到阿", 1, "2016-1-1");

以及枚举类型,如果填别的会报错,但是能写1,2,3,4,就是写他的下标,只不过跟列表不一样的是这个从1开始

还有就是如果你只想写一部分,可以在values前面写(),里面写你要塞的东西,但是顺序必须一样,而且规定了不能为null也没有默认值的你必须写

而且这样写后面如果写多个括号,可以一次插入多个,比如:

insert into students (name, gender) values("fw刀","我不到阿") ("虎子","男");

(实际上,全部的也可以这样,就是前面那个括号不写,后面写完还能多几个括号多写


改[update 表名]:

update students set gender=1;

这句意思是把全部都改成男(

如果把指定的改的话,后面加个where,后面接条件就行,他会把所有符合条件的都改掉

所以如果你要改指定人的话,最好用id,因为你也不知道谁会重名


MySQL的查找语句和py差不多,比如我从student里面找

select * from student where age < 18 and gender = 2;

这里就是说从student里把所有age小于18的和性别为2(女)的学生拿出来

如果* 改成 name就是只拿名字,加啥给啥,*就是全部

以及在py里表达等于是==,但是这里就是=就行了

and or 都一样用

但是not的加在哪个前面就只对哪个生效

select name from student where not age <= 18 and gender = 1

查询的时候 name改成 name as 姓名 可以把打印出来的结果改为as后面的东西,记得加逗号

而且你要查俩的话顺序也跟着你的来

这里的意思就是把所有 年龄【不】小于等于18的学生 和 性别为1(男)的学生名字拿出来

相当于 select name from student where (not age <= 18) and gender = 1;

# 是的,这里面也是括号可以提高优先级,跟py一样

如果你想把所有 不 年龄小于18和性别为1 的名字拿出来的话,就这样写: not (age <= 18 and gender = 1);


还有个删除(忘了他罢):

delete from students; 清 空 数 据 表

真正用的时候加条件

delete from students where name="fw刀"

以及你把这个删了之后主键的id不是自增长的吗,他还是会继续沿着之前的涨,但是你可以自己指定

但是主键不允许重复,他要是接到之前已有的了,那就必挂无疑

这个是物理删除


一般最好逻辑删除,数据来之不易,不要删掉!

alter table students add is_delete bit default 0;

添加个新字段,bit类型,默认值0,名字为is_delete(bit类型二进制,要么0要么1)

要是要删除,就改成1


0720-MySQL(1)的评论 (共 条)

分享到微博请遵守国家法律