相关文章:
win10下MySQL安装教程(MySql-8.0.26超级详细)_丨汀、的博客-CSDN博客
目前主流数据库两种类型:关系型数据库,非关系型数据库
举个例子:
而关系型数据库用在哪里呢?类似于长期存储的规律性数据。
oracle\mysql\ms sql server\sqlite
非关系型:爬虫爬下来的数据,爬了两个域名完全不一样的网站,这两个网站的数据最好用Mongodb因为完全没关系。拓展表格很方便。
关系型数据库管理系统(管理数据库的软件)
从左到右【cs架构】
RDBMS-client:客户端进行数据库的操作发送,与RDBMS-server通过 HTTP、TCP/IP协议进行数据传输,通过SQL语句进行数据库控制。
RDBMS-server:从客户端发送的SQL语句中接受指令并对数据库进行指令操作。
数据库1:即数据库的原始数据,内涵数据表、结构等等。
SQL语句主要分为: data query language 数据 查询 语言
对于web程序员来说,重点是数据的crud(增删改查),必须熟练掌握DQL、DML,能够编写DDL完成数据库、表的操作。
SQL是一门特殊的语言,专门用来操作关系数据库。
语句不区分大小写
1.3.1 创建数据库 数据库名:随意 字符集:utf8 -- UTF-8 Unicode 排序规则:utf8_general_ci 创建表,表的编码默认为数据库编码,可以自行更改,表名:随意 1.3.2 类型:
长度:
小数点:
不是null:是否为空
主键:唯一标记每一行的记录
启动终端,输入运行指令链接数据库【安装教程见文章篇首】
链接数据库:mysql -uroot -p
输入密码
或者
mysql -uroot -p123456 #123456即为设定的密码
退出:exit or quit or Ctrl+D
show databases;
如果不小按了回车,回退到mysql,输入databases即可
同时可以空行执行,以分号为准
select now()
select version();
不可以创建重名的
create database python04
看看如何创建的
最新版本不指定创建也是utf8mb4版本的数据库了
不过最好使用
create database python04 charset=utf8mb4;
解释如下:
MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。好在utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换。当然,为了节省空间,一般情况下使用utf8也就够了。
为了获取更好的兼容性,应该总是使用 utf8mb4 而非 utf8,事实上,最新版的phpmyadmin默认字符集就是utf8mb4。 对于 CHAR 类型数据,utf8mb4 会多消耗一些空间,根据 Mysql 官方建议,使用 VARCHAR 替代 CHAR。
drop database python05;
注意:
如果出现特殊字符的数据库名类似于python-04则需要使用′python-04′进行删除drop database ′python04′;
select database();
此时还没选择数据库的表,需要进行选择, 选择使用python05
use python05
create table xxx(id int, name varchar(30));
可以看得由null 变成python05;其中在使用期间可以随意跳转到别的数据库中
首先查看当前所有的表
select database();
创建数据表:create table 数据表米子(字段 类型 约束,字段 类型 约束...)
create table xxx(id int, name varchar(30));
查看表的结构:desc xxx;description描述
增加约束:
create table yyy(id int primary key not null auto_increment,name varchar(30));
太长可以换行;
实例:创建一个students表(id name age high gender cls_id)
create table students(
id int unsigned not null auto_increment primary key,
name varchar(30),
age tinyint unsigned,
high decimal(5,2),
gender enum("男","女","中性","保密") default "保密",
cls_id int unsigned
);
int unsigned 无符号类型;enum枚举,小数:decimal
decimal(5,2)表示共存取五位数,小数占两位
gender enum("男","女","中性","保密") default "保密",
没有值的时候默认保密
插入数据:
insert into students values(0,"wang",18,188.88,"男",26)
查看表中数据:
select * from students;
alter table students add birthday datetime;
修改字段位置记得一定要带参数
alter table xxx modify column1 记得带参 column2; ex: alter table areas modify pid varchar(20) after aid;
增加一个字段并制定位置
alter table areas add types1 tinyint(1) default "2" after pid;
不重命名版本
alter table 表名 modify 列名 类型及约束
alter table students modify birthday date;
重命名版本
alter table 表名 change 原名 新名 类型及约束
alter table students change birthday birth date default "1990-01-01";
加了个默认值修改表students中birthday字段名改为birth且数据类型为date,默认为1990-01-01
alter table 表名 drop 列名
alter table students drop high;
不推荐轻易删除
drop table students;
alter table students rename student;
show create table students;
最大区别:innodb支持事务处理与外键和行级锁(当前操作此行,别人无法使用直至修改完成)
作用:
我们先插入一行:
insert into student values(0,"2",18,"男",26,"2000-1-1");
这里id为0:但实际效果如下,
show create table student;此时:变为3
创建、更新、读取、删除
首先对calsses进行插入:
create table classes(id int primary key not null auto_increment,name varchar(30));
insert into classes value(0,"python");
select * from classes;
默认是全部插入,插入内容和字段一一对应。
当对于像students这样比较长的,全部插入比较麻烦,
这里可以使用default进行站位插入
insert into student values(default,'hap',20,'女',1,'1999-01-02'),(default,'jog',12,'男,2,'1552-01-03')
也就是id可以写入:0.1.2等;null,default等,都表示自动排序生成下去
与此同时性别栏可以用数字下标替代:1,2,3,4,分别表示男女中性保密
insert into student(name,gender) values("表格","2")
insert into students(name,gender) values("表格","女"),("表格","女")
update 表名 set 列1=值1,列2=值2....where 条件:
全部修改:update students set gender='男' ;
修改id=6的人的性别:update students set gender='男' where id=6;
update students set gender='男',age=22 where id=6;
select * from students where name="表格";
select * from students where id>3;
*代表全部显示
select name,gender from student;
select name as 姓名, gender as 性别 from student;
select id as 序号, gender as 性别 ,name as 姓名 from student;
调整输出顺序即可
查询名字为jog的:select * from students where name="jog"; 查询id>6的:select * from students where id>6;
delete from student;
delete from student where name='表格';
用一个字段表示这条新信息不在使用了
alter table student add is_delete bit 'default 0';
--bit两个字节,默认值不删除
可以同过条件查询判断一下:
update student set is_delete=1 where id=1;
用来表示是否删除。