create user 'root'@'%' identified by '123456';
flush privileges;
grant all privileges on . to 'root'@'%' with grant option;
-- 如果存在名为school的数据库就删除它
drop database if exists school;
-- 创建名为school的数据库并指定默认的字符集为utf-8
create database school default charset utf8;
-- 切换到school数据库上下文环境
use school;
-- 创建学生表
create table tb_student
(
stuid int not null,
stuname varchar(20) not null,
stusex bit default 1,
stubirth date,
primary key (stuid)
);
a ^ a = 0
a ^ 0 = a
按位与
0000 0011
& 0000 0101
0000 0001
按位或
0000 0011
| 0000 0101
0000 0111
按位取反
~ 0000 0011
1111 1100
按位异或
0000 0011
^ 0000 0101
0000 0110
a = 8 = 1000(binary)
a^0 = a
a^a =0
b = 4 = 0100
abb = a(用于加密)
<< 左移
3 << 2 : 32*2
右移
33 >> 3 : 33//(2**3),相当于整除
左移右移运算速度快于数学运算
-- 修改学生表
alter table tb_student add column stuaddr varchar(255);
alter table tb_student change column stuaddr stuaddr varchar(511);
alter table tb_student drop column stuaddr;
-- 修改学生表添加学院编号(colid)列
alter table tb_student add column colid int;
-- 修改学生表添加外键约束(参照完整性)
alter table tb_student add constraint fk_student_colid foreign key (colid) references tb_college (colid);
-- 更新学生表为学生指定所属学院
update tb_student set colid=1 where stuid between 1001 and 1006;
update tb_student set colid=2 where stuid in (1007, 1008);
update tb_student set colid=3 where stuid=1009;
-- 创建老师表
create table tb_teacher
(
teaid int not null comment '工号',
teaname varchar(20) not null comment '姓名',
teasex bit default 1 comment '性别',
teabirth date comment '生日',
teatitle varchar(10) default '助教' comment '职称',
colid int not null comment '所在学院'
-- primary key (teaid),
-- foreign key (colid) references tb_college (colid)
);
alter table tb_teacher add constraint pk_teacher_teaid primary key (teaid);
alter table tb_teacher add constraint fk_teacher_colid foreign key (colid) references tb_college (colid);
数据库 - 数据的仓库(集散地) - database - 实现数据持久化和数据管理
持久化 - 将数据从内存转移到能够长久保存数据的存储介质的过程
数据库的分类:关系型数据库(SQL)和非关系型数据库(NoSQL)
文件系统 / 层次数据库 / 网状数据库
关系型数据库
- 1970s - E.F.Codd - IBM研究员 - System R
- 理论基础:关系代数和集合论
- 具体表象:用二维表来保存数据 - 学生表
~ 行:一条记录 - 一个学生的信息
~ 列:一个字段 - 学生的某个属性,例如:学号、姓名、出生日期
~ 主键列:能够唯一标识一条记录的列,例如:学生的学号 - 编程语言:SQL - 结构化查询语言
~ DDL - 数据定义语言 - create / drop / alter
~ DML - 数据操作语言 - insert / delete / update / select
~ DCL - 数据控制语言 - grant / revoke
LAMP = Linux + Apache + MySQL + PHP
PHP ---> Java
MySQL ---> Oracle
Linux ---> 小型机
去IOE运动
IBM的小型机
Oracle的数据库
EMC的存储设备
关系型数据库产品:
- Oracle - 甲骨文
- IBM DB2
- Microsoft SQLServer
- Sybase
- MySQL
- PostgreSQL
- SQLite
连接MySQL的图形化客户端工具:
- Navicat for MySQL - 病猫
- SQLyog - 海豚
- Toad for MySQL - 蛤蟆
学生(学号、姓名、性别、生日、家庭住址)
学院(编号、名称、网站、……)
老师(工号、姓名、性别、生日、职称、所在学院编号)
课程(编号、名称、学分)
设计数据库中的表 - ER图(实体关系图)- 概念模型图
读者、图书
用户、购物车、商品、订单
用户、单车
人、身份证
实体:学生、学院
关系:属于
重数:多对一
drop database if EXISTS school;
CREATE DATABASE school DEFAULT charset utf8;
use school;
drop table if exists tb_student;
-- 创建学生表
create TABLE tb_student
(
stuid int not null comment 'xuehao',
stuname varchar(20) not null COMMENT 'xingming',
stusex bit default 1 COMMENT 'xingbie',
stubirth date COMMENT 'shengri',
primary key (stuid)
);
alter table tb_student add column stuaddr varchar(255);
alter table tb_student change column stuaddr stuaddr varchar(511);
alter table tb_student drop column stuaddr;
insert into tb_student values (1001,'张三丰',1,'1982-2-2','卧龙');
-- into可以省略,stuid不可重复
insert into tb_student values (1002,'张三丰',1,'1982-2-2','卧龙');
insert into tb_student (stuid,stuname) values (1003,'张三丰');
insert into tb_student (stuid,stuname,stusex) values
(1004,'张三丰',default),
(1005,'张三娘',0),
(1006,'小明',1);
delete from tb_student where stuid=1002;
-- truncate table tb_student
update tb_student set stuaddr='四川' where stuid=1005 or stuid=1006;
update tb_student set stuaddr='成都' where stuid in (1005,1006);
update tb_student set stuaddr='成都',stubirth='08-12-12' where stuid=1004;
alter table tb_student add column aca_id int;
alter table tb_student add CONSTRAINT fk_student_aca_id foreign key (aca_id) REFERENCES tb_academy (aca_id);
update tb_student set aca_id=1 where stuid BETWEEN 1001 and 1003;
update tb_student set aca_id=2 where stuid in (1004,1005);
update tb_student set aca_id=3 where stuid=1006;
drop table if exists tb_academy;
create table tb_academy
(
aca_id int auto_increment,
aca_name varchar(255) not null,
aca_webaddr varchar(511),
PRIMARY key (aca_id)
);
insert into tb_academy (aca_name) values
('英语'),
('数学'),
('政治');
create table tb_teacher
(
teaid int PRIMARY key,
teaname varchar(20) not null,
teasex bit default 1,
teabith date,
teatitle varchar(10) default '助教',
acaid int not null,
foreign key (acaid) references tb_academy (aca_id)
);
-- alter table tb_teacher add constraint pk_teacher_teaid primary key (teaid);
-- alter table tb_teacher add constraint fk_teacher_teaid foreign key (acaid) references tb_academy (aca_id);