关系型数据库
数据库服务器 -> 数据库 -> 数据表 -> 行 -> 列
mysql
工作模式 b/s --> 服务器端/客户端
show databases;
use 数据库名称;
show tables;
desc 数据表名称;
quit ;
标准的SQL命令分类
定义数据(DDL):create/drop/alter(修改)
操作数据(DML):insert/delete(删除)/update(修改数据)
查询数据(DQL):select
控制权限(DCL):grant(授权)/revoke(收权)
常用基本命令如下:
表名 : news
create database xuezi;创建数据库 xuezi;
#设置客户端连接服务器端的编码
set names utf8;
#丢弃数据库,如果存在
drop database if exists sina;
#创建新的数据库,设置存储的编码
create database sina charset=utf8;mysql -h localhost -u root -p 或者 mysql -uroot -p 链接数据库
source + 拖拽sql 文件(改成反斜杠 不要双引号) 执行sql文件
show tables; 查看所有表格
set charset gbk; 设置字符编码
desc news; 查看 表格的所有字段
alter table news drop origin; 删除表格的“origin”字段
alter table news add origin varchar(16); 给表格 增加“origin” 字段
alter table news change origin sex int; 将表格字段“origin”字段 改成“sex” 数据类型为int
create table person(id int,name varchar(20),addr varchar(100),sex int); 创建表格
insert into person values(1,'j','b','1'); 插入数据
insert into person values(2,'j',default,'1');
insert into person(id,sex) values(3,0); 插入的数据
update person set addr='zzzz' where id=2; 修改数据
delete from emp where deptId = 10; 删除deptId=10 的数据
select *from emp where ename like '黄%'; 模糊查询 emp 表中 ename首字为 黄 的
## 查询出工资在10000以上的男员工的姓名,生日,工资;按照工资降序排列。
先条件后排序
select ename,birthday,salary from emp
where salary>7000 and sex=1
order by salary desc; desc降序 asc升序 默认升序
主键、外键
##创建 部门表 dept,did 设为主键,自动增长
create table dept(
did int primary key auto_increment,
dname varchar(16) unique
);##创建一个员工表 eid 设为主键,自动增长 deptId 设外键约束 与dept中的did关联 ename不能为空
create table emp(
eid int primary key auto_increment,
ename varchar(8) not null,
sex boolean default 1, #1-男 0-女
birthday date,
salary decimal(7,2), #99999.99 十进制最大七位,精确到小数点后两位
deptId int,
foreign key(deptId) references dept(did)
);##添加外键
alter table 从表 add constraint 约束名 foreign key(user_id) references 主表(uid);
实战----学子商城数据库:
操作过程:
- create database xuezi
- show databases;
- use xuezi;
- create table xz_user(
uid int primary key auto_increment,
uname varchar(32),
upwd varchar(32),
email varchar(64),
phone varchar(16),
avatar varchar(128),
user_name varchar(32),
gender int);- create table xz_receiver_address(
aid int primary key auto_increment
user_id int);- alter table xz_receiver_address add constraint FK_user foreign key(user_id) references xz_user(uid);
- create table xz_order(
aid int primary key auto_increment,
user_id int,
address_id int,
order_time bigint,
foreign key(user_id) references xz_user(uid),
foreign key(address_id) references xz_receiver_address(aid));- create table xz_laptop_family(
fid int primary key auto_increment,
name varchar(16) unique);- create table xz_laptop(
lid int primary key auto_increment,
family_id int,
title varchar(128),
name varchar(32),
price decimal(10,2));- alter table xz_laptop add constraint PK_F foreign key(family_id) references xz_laptop_family(fid);
- create table xz_laptop_pic(
pid int primary key auto_increment,
laptop_id int,
sm varchar(128),
foreign key(laptop_id) references xz_laptop(lid));- create table xz_shopping_cart(
cid int primary key auto_increment,
user_id int,
product_id int,
count int,
foreign key(user_id) references xz_user(uid),
foreign key(product_id) references xz_laptop(lid));- create table xz_order_detail(
did int primary key auto_increment,
order_id int,
product_id int,
count int,
foreign key(order_id) references xz_order(aid),
foreign key(product_id) references xz_laptop(lid));- create table xz_index_product(
pid int primary key auto_increment,
title varchar(64),
details varchar(128),
pic varchar(128));- create table xz_index_carousel(
cid int primary key auto_increment,
img varchar(128),
title varchar(128),
href varchar(128));