概念
- MangoDB 非关系型,爬虫用,适用于不同来源网站的
- Redis 缓存
- MySql 关系型数据库又快又省钱
- MariaDB Mysql创始人成立的分支计划,兼容mysql
- Oracle 12c是最新版本
- DB2 行业用得多
- SQL Server 受Mysql冲击大
- PostgreSQL 开源
SQL
sql是一种非面向过程语言,分为:
- DDL 数据定义语言,定义表\数据库,删除它们 create drop
- DML =数据操作语言 insert update insert=
- DQL ===数据查询语言 select ===
- DCL 数据控制语言 grand revoke
- TPL 事务处理语言 commit rollback
mysql操作
数据库操作
- 连接数据库
mysql -u root -p (u表示user,p表示password,怕明文显示不安全所以p后不直接输入密码,而是回车后才开始输入密码,此时呈现*号) - 退出数据库
quit - 显示数据库
show databases; #分号或\g表示执行 - 创建数据库
create database student default charset=utf8; # 缺省字符集是utf8 - 删除数据库
drop student - 选择数据库
use student - 显示表
show tables - 查看数据库创建语句
show create database student; #student | CREATE DATABASEstudent
/*!40100 DEFAULT CHARACTER SET utf8 */ - 查看当前数据库名
select database(); - 修改字符集
alter database student default charset=utf8;
创建表(有个坑)
mysql8.0版本: 创建表时不能以rank为表名,也不能以rank为字段名
create table if not exists rank(down numeric(3) not null,up numeric(3) not null,rank varchar(1) primary key); #报错
-
语法
create table [if not exists] 表名(
列名1 类型 [限制],
列名2 类型 [限制],
列名3 类型 [限制],
…
列名n 类型 [限制] #最后一列没有逗号
) [engine=myisam | innodb][default charset=utf8] -
类型:
- 数值型 : 整型 int smallint tinyint 浮点型:float double decimal ,常用int,double
- 字符型:char,varchar,text
- 日期时间型:date(YYYY-MM-DD) time(HH:MM:SS) datetime(YYYY-MM-DD HH:MM:DD)
-
限制
- primary key [auto_increment]
- not null
- default # 如default 0
- unique 两个null不违反unique
-
例子
create table if not exists student(
sno char(4) primary key,
sname varchar(30) not null,
sage tinyint default 0,
ssex int default 0,
sclass char(5)
); -
复合主键 primary key(sno,cno)
-
auto_increment 自增长,只对int型主键起作用
-
例子:
create table if not exists student(
-> sno char(4) ,
-> sname varchar(30) ,
-> sage tinyint default 0,
-> ssex int default 0,
-> sclass char(5),
-> primary key(sno,sname),
-> );
表操作
- 插入记录
insert into 表名(sno,sname) values(“001”,“张三”); - 删除表 drop table student
- 显示表结构 desc student #desc即describe的意思
- 查看创建表命令 show create table student;
- 显示索引show index in student;
- 复制表操作 create table 表名 like 其他表名
- 查看表结构 desc 表名
- 修改表 alter table 表名 modify 字段名 类型 [限制]
- 增加字段 alter table 表名 add 字段名 类型 [限制]
- 删除字段 alter table 表名 drop 字段名
- 修改字段名和类型 alter table 表名 change 旧字段名 新字段名 类型 [限制]
- 修改表名 alter table 表名 rename 新表名
- 在某个字段后或最开始位置插入字段 alter table 表名 add 字段名 类型 [限制] [after 字段 | first
alter table student add sno varchar(10) primary key first;
alter table student add shome varchar(50) after sno;