显示所有数据库

show databases;

 创建数据库

create database demo ;

修改数据库的字符集

alter database <dbname> character set 'utf8';

删除数据库

drop database <dbname>;

创建表

1、语法                //使用外键,事务功能,要用innodb引擎

create table <dbname>(
    字段名    数据类型(长度)    约束类型,
    。。。。
    字段名    数据类型(长度)    约束类型
    
)engine=innodb

2、数据类型

        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  date

        4.查看表结构

                1.desc <dbname>;

mysql 默认 库_mysql 默认 库

                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=utf8

3、约束类型

        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 外建名;