1、数据库分类
多张表构成的集合
SQL (Structured Query Language) 结构化查询语言
-
关系型数据库 – 本质上使用一张二维表来表示关系
数据行
数据列
数据表 (数据行的集合)
数据库 (数据列的集合) -
非关系型数据库
2、SQL语句:
SQL是关系型数据库客户端 操作 关系型数据库服务器的一种语法
DQL:数据查询语句 select
DML:数据操作语言,insert,update。。。。
DDL:数据定义语言,create,drop
不区分大小写
启动服务:
sudo service mysql start /stop/restart/statu
3、约束
-
主键 primary key
根据主键唯一确定的一行记录,一般都是无符号整数,自动递增 -
非空 not null
表示该字段的值,不允许为空 -
唯一 unique
要求该字段的值,不允许重复 -
默认 default
如果这个字段没有值,那么就使用默认值 -
外键 foreign key
如果一张表中有一个非主键的字段指向了别一张表中的主键,就将该字段叫做外键。
一张表中可以有多个外键。
外键的默认作用有两点:
1. 对子表(外键所在的表)的作用:子表在进行写操作的时候,如果外键字段在父表中找不到对应的匹配,操作就会失败。
2. 对父表的作用:对父表的主键字段进行删和改时,如果对应的主键在子表中被引用,操作就会失败。
4、数据库操作流程
- 创建一个数据库
- 创建一个表结构<字段名 字段类型 字段约束>
- 操作表数据
5、数据库操作
连接数据库
mysql -u root -p 或者 mysql -uroot -p 或者mysql -u root -pmysql
退出数据库
exit 或者 quit 或者 ctrl+D
以下SQL语句以分号结尾
展示当前数据库系统中所有的数据库
show databases;
查看当前使用的数据库
select database();
切换到指定数据使用
use py12;
查看当前时间
select now();
创建数据库
create database python12 charset=utf8; (charset选定字符集,utf-8中 - 不能识别 所以去掉)
展示数据库创建时SQL语句
show create database db2
删除数据库
drop database db2
6、表结构操作
查看当前数据库下的所有的表
show tables;
查看表结构的信息
desc stu
创建表结构
create table student(
id int unsigned primary key auto_increment,
name varchar(32) not null,
age tinyint unsigned default 0
);
展示创建表结构的SQL语句
show create table student;
修改表名
alter table table_name rename table_new_name
alter table student rename student1
修改表
添加字段 列名 类型
alter table student add birthday datetime not null;
删除字段
alter table student drop birthday;
修改字段的名字,类型,约束
把birthday 改为 birth 类型改为date类型
alter table student change birthday birth date;
不改名,只改约束和类型
alter table student change birth birth date not null;
alter table student modify birth date not null;
7、表数据的操作<重点>
-
查询
从stu中查询出所有的字段数据
select * from stu;
从stu中查询出年龄,名字的字段数据
select age,name from stu;
-
插入
关键字 关键字 表名 数据顺序 关键字 数据
insert into student (id,name,age) values (0,'大黄',80);
全列插入 – 插入数据的顺序 和 表结构中的字段完全一致时可以省略
insert into student values (0,'大黄',80); insert into student values (null,'妲己',18),(null,'亚瑟',90);
数据类型保证数据完整性,会报错,age是tinyint unsigned 0-255
insert into student (id,name,age) values (0,'xxx',8080);
部分列插入
insert into student (age,name) values (88,'貂蝉'),(90,'王昭君')
-
更新
update 表名 set 字段名=新值 where 条件;
update student set age = 18; update student set age = 17 where id = 4; update student set name = '盖伦', age = 17 where id = 3; update student set age = 16 where id > 2;
更新所有id
update student set id = id - 16 where id > 1;
-
删除
delete from 表名
delete from student where name = '程咬金';