准备工作
在 windows 和 Ubuntu 安装 MySQL。具体安装步骤可去 csdn 论坛查询。
命令行脚本
数据库的操作
- 连接数据库
注意:sql 语句最后需要以分号 ;结尾
mysql -uroot -p;
输入密码即可进入数据库。
- 退出数据库
qiut,exit,ctrl + d;
- 查看所有数据库
show databases;
- 使用数据库
use 数据库名;
- 查看当前使用的数据库
select database();
- 显示数据库版本
select version();
- 创建数据库
create database demo charset=utf8;
需要知道字符集,注意不是 utf-8;
- 查看数据库的创建语句
show create database demo;
- 删除数据库
drop database demo;
- 查看帮助文档
sql中的帮助文档如何使用?
使用 ? 获取帮助信息
? functions; 查看函数的帮助文档
数据表的操作
- 查看当前数据库中所有表
show tables;
- 创建表
auto_increment 表示自动增长
创建一个学生的数据表(id name age high gender cls_id)
create table 数据表名字 (字段名 类型 约束[, 字段 类型 约束]);
多个约束 不分先后顺序
enum 表示枚举 男: 原始值 会有一个枚举值(从1开始)对应
最后一个字段不要添加逗号
unsigned表示无符号(只有正数, 没有负数)
- 创建 students 表
create table students (
id int unsigned primary key auto_increment not null,
name varchar(15) not null,
age tinyint unsigned default 18,
height decimal(5,2) default 0,
gender enum("男","女","中性","保密") default "保密",
cls_id int unsigned default 0,
is_delete bit default 0
);
- 插入数据(后面要用)
insert into students values
(0,'小明',18,180.00,2,1,0),
(0,'小月月',18,180.00,2,2,1),
(0,'彭于晏',29,185.00,1,1,0),
(0,'刘德华',59,175.00,1,2,1),
(0,'黄蓉',38,160.00,2,1,0),
(0,'凤姐',28,150.00,4,2,1),
(0,'王祖贤',18,172.00,2,1,1),
(0,'周杰伦',36,NULL,1,1,0),
(0,'程坤',27,181.00,1,2,0),
(0,'刘亦菲',25,166.00,2,2,0),
(0,'金星',33,162.00,3,3,1),
(0,'静香',12,180.00,2,4,0),
(0,'郭靖',12,170.00,1,4,0),
(0,'周杰',34,176.00,2,5,0);
- 查看创建表的语句
show create table students;
- 查看表结构
desc students;
- 修改表结构
- 修改表-添加字段
alter table 表名 add 列名 类型/约束;
alter table students add birthday datetime default "2011-11-11 11:11:11";
- 修改表-修改字段:不重命名
alter table 表名 modify 列名 类型及约束;
alter table students modify birthday date default "2011-11-11";
- 修改表-修改字段:重命名版
alter table 表名 change 原列名 新列名 类型及约束;
alter table students change birthday birth date default "2011-11-11";
- 修改表-删除字段
alter table students birth;
- 删除表
drop table students;
数据增删改查(curd)
- 增加 insert
- - 全列插入 值和表的字段的顺序一一对应
- insert into 表名 values (值1,…)
- 主键字段的占位操作: 0, NULL, Default
- 在sql中枚举的下标默认从1开始
- 在实际开发中全列插入使用的不多: 如果表结构发生修改(增加或者删除字段) 全列插入的sql语句就会出错
insert into students values (0,"小乔",18,180.00,"女",2);
insert into students values (NULL,"小乔",18,180.00,"女",2);
insert into students values (NULL,"大乔",18,180.00,2,2);
错误: insert into students values (Default,"虞姬",18,180.00,10,2,10);
- 指定列插入
insert into 表名 (列1,...) values(值1,...)
insert into students (name, gender, cls_id) values ("鲁班",1,1);
- 多行插入 批量插入
insert into 表名(列1,...) values (值1,...),(值1,...),...
insert into students (name, gender, cls_id) value ('wasp', '女', '2'),('vae', '男', '1');
- 删除
- 物理删除
DELETE FROM tbname [where 条件判断]
delete from students where id = 5;
- 逻辑删除:
标识一条记录是否被删除
update students set is_delete = 1 where id = 4;
查询有哪些学生没有被删除
select * from students where is_delete = 0;
- 修改
where 表示修改的范围
update 表名 set 列1=值1,列2=值2... where 条件
全表更新, 一定不要使用整表更新
update students set age = 20;
指定范围更新
update students set age = 20 where id = 3;
sql中,通过一个等于号表示相等