SQL语句

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);

你可能感兴趣的:(SQL语句)