1.回顾:
1.MySQL默认端口号是多少? 3306
2.MySQL中的超级用户叫什么? root
3.创建数据库的语句? CREATE DATABASE JD CHARSET=utf8;
4.修改数据库的语句? alter database 库名 charset=utf8;
5.删除数据库的语句? DROP DATABASE JD;
6.查看数据库的语句? SELECT DATABASE();
2.数据表:
数据库是由数据表组成的,数据是存在数据表里的。
4.使用数据库:
USE python;
5.创建表:
— create table 表名(字段名 类型名 约束);
create table classes(
id int unsigned auto_increment primary key,
name varchar(20) not null
);
create table students (
id int unsigned auto_increment primary key,
name varchar(30) not null,
age tinyint unsigned default 0,
high decimal(5,2),
gender enum(“男”, “女”, “中性”, “保密”) default “保密”,
cls_id int unsigned,
foreign key(cls_id) references classes(id)
);
insert classes values(0,”网工1706a”),(0,”网工1705a”);
6.查看数据表:
SHOW TABLES; –查看所有的表
DESC students; –查看表结构
SHOW CREATE TABLE classes; –查看创表语句
7.删除表:
DROP TABLE classes;
8.增删改查(curd):
1.插入记录:
— INSERT [INTO] 表名 [(列名,….)] VALUES(数据,……);
— 全列插入
— insert 表名 values (…)
insert students values(0,”张三”,20,175,”男”,1);
— 部分插入
— insert into 表名(列1,…) values(值1,…)
insert students (name,high) values (“王二”, 173);
— 多行插入
insert students (name, high) values (“刘备”, 160),(“张飞”, 178);
2.记录查找:
— SELECT 列名,…. FROM 表名 [ WHERE 条件]
1.查询所有列
— select * from 表名;
— 注意 :“ * ” 号可以表示所有字段(列)
select * from students;
2.指定条件查询
— 条件可以使用 > < >= <= AND OR
select * from students where age > 21;
— 查询名字中带有 “王” 字的所有人信息:
select * from students where name like “%王%”;
— 查询id小于3且年龄等于20的所有人信息:
select * from students where id<3 and age=20;
3.查询指定列
— select 列1,列2,… from 表名;
select name, gender from students;
select gender, name from students;
4.可以使用as为列或表指定别名
— select 列1【 as 名字】,列2【 as 名字】,… from 表名;
select name as ‘姓名‘, gender as ‘性别‘ from students;
3.修改:
— update 表名 set 列1=值1,列2=值2… where 条件
— 把id为1的同学,年龄改为10,性别改为保密
update students set age=10,gender=4 where id=1;
— 将所有人的年龄增加1:
update students set age=age+1;
4.删除:
1.物理删除
— 基本用法为:
delete from 表名称 where 删除条件;
— 删除id为2的行:
delete from students where id=2;
— 删除所有年龄小于20岁的数据:
delete from students where age<20;
— 删除表中的所有数据:
delete from students;
2.逻辑删除
— 用一个字段来表示 这条信息是否已经不能再使用了
— alter table students add is_delete bit default 0;
update students set is_delete=1 where id=5;
9.表结构的修改:
1.添加字段
— alter table 表名 add 列名 列数据类型 [after 插入位置];
— 示例:
— alter table 表名 add 列名 类型;z‘//‘1‘
— 在名为 age 的列后插入列 address:
alter table students add birthday datetime after age;
2.删除字段
— alter table 表名 drop 列名;
alter table students drop high;
3.修改字段:不重命名版
— alter table 表名 modify 列名 类型及约束;
alter table students modify birthday date;
4.修改字段:重命名版
— alter table 表名 change 原名 新名 类型及约束;
alter table students change birthday birth date;
5.表格重命名:
基本形式:
— alter table 表名 rename 新表名;
示例:
— 重命名 students 表为 workmates:
alter table students rename workmates;
10.表的约束:确保表中数据的完整性,唯一性
常用7种约束:
unsigned: 无符号约束,指定数字不能为负数
— 数字(整数,小数)
not null: 非空约束,指定某列不为空
auto_increment: 自动增长约束,序号自动加一
— 注意:必须与主键组合使用
— 默认情况下,初始值为1,每次增量为1
unique: 唯一约束,指定某列和几列组合的数据不能重复
— 唯一约束可以保证记录的唯一性
— 唯一约束的字段可以为空值(NULL)
— 每张数据表可以存储多个唯一约束
primary key: 主键约束,指定某列的数据不能重复、唯一
— 每张数据表只能存在一个主键
— 主键保证记录的唯一性
— 主键自动为NOT NULL
foreign key: 外键,指定该列记录属于主表中的一条记录,参照另一条数据
default 0: 当插入数据的时候,如果字段没有数据,则自动插入默认值
11.备份和恢复:(了解)
— 数据库的备份
mysqldump -uroot -p python > python.sql;
— 恢复
— 先建一个新的数据库 create database newpython charset=utf8;
mysql -uroot -p newpython < python.sql;