一,创建库
1.进行准备工作
登入数据库:使用 mysql -u root -p 然后再输入密码后进行操作。
2.查看已有的数据库
使用show databases ;命令就能够查看当前所有的自带数据库。
其中show databases**like 条件;**这个命令还可以添加条件的进行查看,特定条件下可以快速查询到自己想要看到的内容。
3.创建数据库
create database aa加粗部分是创建表的名字可以任意取名。
show databases;用这个命令进行查看。
创建时若数据库已存在,则报错
查看创建数据库的语句:
show create database ;
show create database testdb \G 折行显示
4.切换数据库
查看当前使用的数据库:
select database();
5.使用数据库
use 数据库名; 一般搭配show databases ;使用
6.删除数据库
drop database 数据库名;
二,创建表
1.表的创建
create database 表名;
新建表时注意创建再哪个库中。
2.查看表
show语句:
show tables;显示当前数据库中已有的数据表
show create table student1**\G**使用\G可以查看更全面的表定义信息
describe语句:
desc student1;查看数据表中各列的信息。
3.删除表
drop table if exists 表名;用户必须拥有执行 drop table 命令的权限,否则数据表不会被删除
drop table if exists tb1;即先判断是否存在,存在则删除。
4.修改表
改表名:
alter table 表名 rename 新表名;
rename table 表名 to 新表名;
5.新增列
alter table student1 add password char(8); 在最后一行新增
alter table student1 add notes varchar(30) after age;再添加一个新列notes varchar(30),位置在score之前
alter table student1 add aa int first; 在第一列添加一个新列
6.删除列
alter table student1 drop notes;
7.修改列名
alter table student1change password passwd char(8); 将password改为passwd
8.修改列类型
alter table student1 add birthday char(10);插入新列,修改类型
9.复制表
create table student2 like student1;只是复制结构框架,内容看不见
create table student3 select * from student1; 复制结构+数据
三,表的约束
保证数据 的合法性,从业务逻辑角度保证数据的正确性
1 .列级约束
alter table 表名 modify 列名 列类型 列约束; 修改
alter table 表名 modify 列名 列类型 #; 不加约束即可删除
2.表级约束
alter table 表名 add constraint 约束名 约束类型(要约束的列名) ; 添加
alter table 表名 drop 约束类型 约束名; 删除
注意:不能直接修改表级约束,要删除原有的表级约束,再新增即可
3.非空约束
create table myclass1(class_name varchar(20) not null, class_room varchar(20) not null, class_id int); name跟room不能为空
删除not null:
alter table student1 modify id int null;
4.默认值约束
create table teacher1(id int not null, name varchar(30) not null, sex char(2) default '女');
insert into teacher1(id,name) values('1001','林雪');
及添加的林雪性别为女
insert into teacher1 values('1002','石磊','男');
若添加注释则不会被默认
数据在插入的时候不给该字段赋值,就使用默认值
四,列描述
create table myclass2( class_name varchar(20) not null comment '教 室',class_room varchar(20) default '计科2'); 给予描述 作用相当于注解
show create table myclass2\G 用\G才能看到
五,主键约束
通俗来讲是为了保证数据的唯一性
create table t1 ( id int unsigned primary key comment '学号不能为空', name varchar(20) not null ,sex char(2) default '男'); 创建了增加主键的命令,这时再添加的人物前的序号就只能出现一次
及insert into t1 values(1,'孙文','女');
显示Query OK, 1 row affected (0.00 sec)
再次输入insert into t1 values(1,'孙文','女');
则出现ERROR 1062 (23000): Duplicate entry '1' for key 't1.PRIMARY'
六,主键自增长
alter table student1 add primary key(id); 先增加主键
alter table student1 modify id int auto_increment; Query OK, 3 rows affected (0.05 sec)设置自增长
create table t3 ( id int primary key auto_increment, systemname varchar(10) not null )auto_increment=100;指定自增长的起始值为100
insert into t3(systemname) values('windows'),('linux'); 添加记录后及windows的id为100,Linux的为101
注意:自增长在出现重复时它会直接跳过错误的哪一个,重下一次的再进行增长
六,外键约束
表分主跟从两种
主表(父表):被引用的表、被参考的表
从表(子表):引用别人的表,参考别人的表
两表之间必须建立联系:
foreign key (从表的字段名称) references 主表名字(主表的字段名称)
例:
create table myclass3(id int primary key, name varchar(20) not null ; 主表
create table myclass3_stu( id int primary key, name varchar(30) not null, class_id int, foreign key (class_id) references myclass3(id) ); 从表
主表中插入数据
mysql> insert into myclass3 values(10,'C++'),(20,'Java');
select * from myclass3;
从表中正常插入数据
insert into myclass3_stu values(1,'Li',10),(2,'Sun',20);
select * from myclass3_stu;
从表中插入没有班级的记录,受外键控制,报错
insert into myclass3_stu values(3,'wang',30);
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`stu_info`.`myclass3_stu`, CONSTRAINT `myclass3_stu_ibfk_1` FOREIGN KEY (`class_id`) REFERENCES `myclass3` (`id`))
从表中,收到外键控制,可以使用null替代,表示没有分配班级
insert into myclass3_stu values(3,'wang',null);
七,检查约束
创建约束0~10000:
create table t5(id int primary key, name varchar(20), salary float, check(salary>0 and salary<10000) );
insert into t5 values(1,'Li',5984);在范围内可以创建
insert into t5 values(2,'wang',12000);不符合则报错
八,删除约束
删除not null约束、default约束
alter table 表名 modify 列名 类型;
删除unique约束
alter table 表名 drop index 惟一约束名;
删除primary key约束
alter table 表名 drop primary key;
删除foreign key约束
alter table 表名 drop foreign key 外键名;
删除check约束
alter table 表明 drop check 约束名;
九,储存引擎
查看支持的引擎命令:
show engines\G
在创建表时, 可以指定表的存储引擎:
create table (...) engine=InnoDB;