【MySQL基础】02数据定义语言DDL

目录

一、数据定义语言DDL:是针对数据库各种对象(数据库、视图、索引、表结构)的增删选查。

二、数据库的增删选查

三、数据类型

四、约束条件

五、数据表的增删查

六、修改数据表

七、总结


一、数据定义语言DDL:是针对数据库各种对象(数据库、视图、索引、表结构)的增删选查。

二、数据库的增删选查

        

  1. 查看数据库:show datebases;
  2. 创建数据库:create datebase 数据库名称;#数据库名不能和SQL关键字相同,也不能重复。
  3. 选择使用数据库:use 数据库名称;
  4. 删除数据库:drop database 数据库名称;

三、数据类型

  1. 主要分:数值型、字符串型、日期时间型
  2. MySQL常用数据类型:
  • int:大整数型,有符号大小-2147483648~2147483647, 无符号大小0~4294967295,默认长度最多为11个数字,如int(11) 
  • float:单精度浮点型,默认float(10,2),表示最多10个数字,其中有2位小数 
  • decimal:十进制小数型,适合金额、价格等对精度要求较高的数据存储。默认decimal(10,0),表示最多10位数字,其中0位小数。 
  • char:固定长度字符串型,长度为1-255。如果长度小于指定长度,右边填充空格。如果不指定长度,默认为1。如char(10),‘abc ’ 
  • varchar:可变长度字符串型,长度为1-255。必须指定长度,如varchar(10),‘abc’ 
  • text:长文本字符串型,最大长度65535,不能指定长度 
  • date:日期型,‘yyyy-MM-dd’ 
  • time:时间型,‘hh:mm:ss’ 
  • datetime:日期时间型,‘yyyy-MM-dd hh:mm:ss’ 
  • Timestamp:时间戳,在1970-01-01 00:00:00和2037-12-31 23:59:59之间,如1973-12-30 15:30,时间戳为:19731230153000 

注意⚠️

  1. 字符串类型和日期时间类型都需要引号括起来;
  2. char()数据类型会填补空缺的值,如:char(10),'abc ',abc后面会自动写入7个空格,将会占用内存。
  3. varchar()数据类型不会填补空缺,如:varchar(10),'abc',abc后面不会写入7个空格,所以不会占用内存。但在查询数据的时候,varchar是先判断字符串多少,再查找符合的字

四、约束条件

  • 主键约束(primary key)
  1. 每个表中只能有一个或没有主键,可以设单字段为主键,也可以设置多字段联合主键。
  2. 联合主键的所有字段值完全一样才违反主键约束。例如:A表中有4个字段:年龄、部门、岗位、工资。设年龄、部门、岗位联合主键,当出现两行记录他们的这三个字段值相同的时候,将会报错。
  3. 列级添加主键约束:create table <表名> (<字段名1> <字段类型1> primary key,……<字段名n> <字段类型n>); 
  4. 表级添加主键约束(联合主键方法):create table <表名>(<字段名1> <字段类型1>,......<字段名n> <字段类型n>,[constraint 主键约束名] primary key(字段名1[,字段名2,...字段名n]));
  • 唯一约束(unique)
  1. 指定字段的取值不能重复,可以为空,但只能出现一个空值。
  2. 列级添加唯一约束:create table <表名> (<字段名1> <字段类型1> unique,……<字段名n> <字段类型n>); 
  3. 表级添加唯一约束:create table <表名> (<字段名1> <字段类型1,……<字段名n> <字段类型n>,[constraint 唯一约束名] unique (字段名1[,字段名2...字段名n])); 
  • 外键约束(foreign key 从表字段 references 主表 主表字段)
  1. 在一张表中执行数据插入、更新、删除等操作时,DBMS都会跟另一张表进行对照,避免不规范的操作,以确保数据存储的完整性。【例】员工信息表中有一列部门编号字段,该字段值依赖部门信息表的部门编号字段。即如果员工信息表的部门编号出现不在部门信息表的值,则会报错。部门信息表为主表,员工信息表为从表。
  2. 某一表中某字段的值依赖于另一张表中某字段的值 
  3. 主键所在的表为主表,外键所在的表为从表 
  4. 每一个外键值必须与另一个表中的主键值相对应
  5. 创建外键约束:create table <表名> (<字段名1> <字段类型1>,……<字段名n> <字段类型n>,[constraint 外键约束名] foreign key(字段名) references <主表>(主键字段));
  • 自动增长列(auto_increment)
  1. 指定字段的取值自动生成,默认从1开始,每增加一条记录,该字段的取值会加1 ;
  2. 只适用于整数型,常配合主键一起使用 ;
  3. 插入第一行记录的时候,自动增长字段必须要自己输入,后面行记录可写可不写,不写默认前一行+1,如,第一行是9,第二行自动为10,第三行自定义输入15,第四行自动为16,11-14则不会出现。
  4. 创建自动增长约束:create table <表名> (<字段名1> <字段类型1> auto_increment,……<字段名n> <字段类型n>);
  • 非空约束(not null)
  1. 字段的值不能为空;
  2. 创建非空约束:create table <表名> (<字段名1> <字段类型1> not null,……<字段名n> <字段类型n>); 
  • 默认约束(default)
  1. 如果新插入一条记录时没有为该字段赋值,系统会自动为这个字段赋值为默认约束设定的值;
  2. 这个约束不会报错;
  3. 创建默认约束:create table <表名> (<字段名1> <字段类型1> default value,……<字段名n> <字段类型n>); 

 

【理解】

  • 只有主键约束在一个表中只能有一个,其他约束可多个;

  • 主键约束、唯一约束和外键约束:属于索引约束,可以表级添加(写在最后行),且外键约束只能写在最后行。 其他约束只能写在列级添加(类型后面)。

五、数据表的增删查

  • 创建数据表:create table 表名(…); 

(建表之前要先选择进入数据库:use 数据库名称; 

建表时可以不指定约束条件,但是必须指定表名、字段名及每个字段的数据类型;

表名不能与SQL关键字相同,同一个数据库下的表名不能重复 。)

  1. 查看当前数据库中所有表:show tables; 
  2. 查看表结构:desc 表名; 
  3. 删除数据表:drop table 表名;

六、修改数据表

  1. 修改表名:alter table 原表名 rename 新表名; 
  2. 修改字段名:alter table 表名 change 原字段名 新字段名 数据类型 [自增/非空/默认] [字段位置]; 
  3. 修改字段类型:alter table 表名 modify 字段名 新数据类型 [自增/非空/默认] [字段位置]; 
  4. 添加字段:alter table 表名 add 新字段名 数据类型 [自增/非空/默认] [字段位置]; 
  5. 删除字段:alter table 表名 drop 字段名;
  6. 修改字段的排列位置: (这里的数据类型需要写,不然会被删除)

排第一个:alter table 表名 modify 字段名 数据类型 first

排在参照字段后:alter table 表名 modify 要排序的字段名 数据类型 after 参照字段; 

 

【注意】

  1. 修改后类型是否符合已有数据的类型
  2. 在修改字段名、字段类型、添加字段和字段排列位置时,数据类型必须要写,否则类型会被删除,中括号的([自增/非空/默认] [字段位置])可写可不写,不写则默认删除原先的约束条件(除主键外),且只支持“自增/非空/默认”,不接受主键、唯一、外键约束(索引类约束)
  3. 原有的主键不写仍然存在。

 

【例子】

七、总结

  • 数据库的增删选查:
  1. Create database……;
  2. Drop database……;
  3. use……;
  4. Show databases;
  5. Show tables;
  • 数据表的增删选查:
  1. Create table……; 
  2. Drop table……; 
  3. Desc ……;
  • 修改表结构:
  1. Alter table表名 [rename|change|modify|add|drop] ……
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章