显示所有数据库
show databases;创建数据库
create database demo ;修改数据库的字符集
alter database <dbname> character set 'utf8';删除数据库
drop database <dbname>;创建表
1、语法 //使用外键,事务功能,要用innodb引擎
create table <dbname>(
字段名 数据类型(长度) 约束类型,
。。。。
字段名 数据类型(长度) 约束类型
)engine=innodb2、数据类型
1.数字类型
1.整数
1.tinyint 极小整数 (-128,127) (0,255) 占1字节
整数 占4字节
3.bigint 大整数 占8字节
eg:age int(3);2.小数:浮点数
1.float 单精度浮点数 精度:7位小数 占4字节
2.double 双精度浮点数 精度:15位小数 占8字节
3.decimal 大浮点数 精度:30位小数 占17字节
eg:salary float(7,2); 一万元7位数,其中2位为小数
eg:distance decimal(30,29); 30位数,其中29位小数2.字符串
1.定义:在SQL中使用单引号括起来的数据统称为字符串 ' '
2.类型
1.char(n) 定长字符串 范围:0-255
2.varchar(n) 变长字符串 范围:0-65535
3.text(n) 文本型 范围:0-65535
4.binary(n) 二进制字符串 范围:0-n
3.char和varchar的区别:
1.使用空间的方式不同:char(10)和varchar(10),char分配10字符的空间,varchar分配4个字符的空间;
2.char处理速度要快于varchar;
3.能预估所存内容长度,用char,无法预估,用varchar。
3.日期
1.类型
1.year yyyy
2.date yyyy-mm-dd
3.time HH:MM:SS
4.timestamp yyyy-mm-dd HH:MM:SS
5.datetime yyyy-mm-dd HH:MM:SS
eg:birthday date4.查看表结构
1.desc <dbname>;

2.show create table <dbname>;
CREATE TABLE `userinfo` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(11) DEFAULT NULL,
`password` varchar(123) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf83、约束类型
1.主键约束
1.设置主键 (此方法只能指定一个字段做主键)
create table class(
id int primary key, #primary key 的作用就是标记该字段是主键
name varchar(10)
)2.设置复合主键
create table class(
id int,
name varchar(10),
primary key(id,name)
)3.通过修改表结构的方式增加主键
alter table student add sex int primary key; #添加
alter table student modify sex int primary key; #改变modify #修改字段的类型或约束,不能修改字段名
change #可以修改字段名,类型,约束
alter table teacher change department depart int; #department换成depart
alter table teacher change depart department varchar(10);
alter table score drop primary key; #删除主键
alter table score add primary key(sname); #添加主键2.非空约束
字段的数据不允许为空
变更表的方式去追加 not null
alter table student change name varchar(20) not null;3.默认值约束
sbirthday date default '2000-1-1'
#改表结构的方式
alter table student modify class int default 1;4.自增长
语法: 字段名 数据类型 auto_increment
注意:
- 一般搭配主键使用
- 每个表只允许一个自动使用这个约束
- 自增长的序列是单独存放的。即,删除最后一条,不影响序列。
- truncate table 删除数据,此删除无法恢复。
alter table student modify sno int auto_increment;5.检查约束
MYSQL 不支持检查约束,字段设置了可选内容的约束。
设置方式:
- 字段名 enum('1','2','3'...)
- 字段名 set('1','2','3'...)
enum只能从指定的值里任选一个,set可多选
alter table student modify sex enum('男','女')6.唯一约束
设置方式:
字段名 数据类型 unique
注意事项:
- 使用时,字段业务含义要符合唯一要求。
- 不能和默认值约束一起用。
7.外键约束
外键关联唯一性索引(主键约束和唯一性约束都是唯一性索引)
create table score(
sno int,
cno int,
foreign key(sno) references student(sno),
foreign key(sno) references course(cno),
)定义表的时候设置外键
alter table score add foreign key(sname) references teacher(sno); #添加外键并关联··变更表结构的方式设置
alter table course add foreign key(tno) references teacher(tno) on delete restrict on update cascade;
#course的tno引用teacher表主键tno,不允许删除主键,可以和主键一起变更。注意:
2个行为
1、update 更新数据
2、delete 删除数据
4种约束方式
1、restrict 拒绝变更,没有删除或变更从表数据,主表不允许变化
2、no action 效果同上
3、cascade 联动,主键值变化,外键跟随变化
4、set null 设置外键为空--外键无非空约束,主键变化,外键值设为空;外键有非空约束,拒
绝变更。
删除外键
alter table <tbname> drop foreign key 外建名;
















