数据库和数据库对象
1.系统数据库
安装完Mysql服务器后系统数据库记录一些必要的信息,用户不能修改
- information_schema:主要存储数据库中一些数据库对象信息,如用户表信息、列信息、权限信息、字符集信息和分区信息
- performance_schema:主要储存数据库服务器性能参数
- mysql:住哟储存系统用户的权限信息
- text:该数据库为MySQL数据库管理系统自动创建的测试数据库,任何用户都可以使用
2.用户数据库
用户根据自身需求创建的数据库
创建数据库
CREATE DATABASE database_name
数据库名称创建规则如下
1.由字母数字下划线_@$组成
2.首字母不能是数字和¥
3.不允许有空格和特殊字符,不能是MySQL的关键字长度小于128位
1.数据库相关操作
- 查看数据库:SHOW DATABASE
- 使用数据库:USE database_name
- 删除数据库:DROP DATABASE database_name
删除后,数据库中所有的对象都会被删除,所以删除数据库要谨慎
2.数据类型
- 整数类型:INT
- 浮点数类型:DOUBLE(6,4)总共占6位数字,小数点后占4位。
- 日期类型:DATE年月日;DATETIME 年月日时分秒;TIMESTAMP 插入系当前时间(日期自动生成)
- 字符串类型:VARCHAR(m):m为0~65535
创建表
CREATE TABLE table_name (
*name VARCHAR(20),
age INT,
salary DOUBLE(10,2),
属性名 数据类型
)
表的相关操作
- 使用表:USE table_name
- 查看表:SELECT* FROM table_name
- 查看表结构:DESCRIBE table_name
- 删除表:DROP TABLE table_name
- 修改表名:ALTER TABLE table_name RENAME table_newName
- 在表的最后一个位置增加字段:ALTER TABLE table_name ADD 属性名 数据类型
- 在表的第一个位置增加字段:ALTER TABLE table_name ADD 属性名 数据类型 FIRST
- 删除字段:ALTER TABLE table_name DROP 属性名
- 修改字段:ALTER TABLE table_name MODIFY 属性名 数据类型
表的约束
-
非空约束:NOT NULL
CREATE TABLE table_name( 属性名 数据类型 NOT NULL )
-
默认值:DEFAULT.当为数据库表中插入一条新数据时,如果没有给指定字段赋值,那么系统会自动为这个字段插入默认值
CREATE TABLE table_name( 属性名 数据类型 DEFAULT默认值 )
-
唯一约束:UNIQUE,在创建数据库表时为某些字段加上“UNIQUE”,保证该字段上的值不重复
CREATE TABLE table_name(
属性名 数据类型 UNIQUE
)
CREATE TABLE table_name(
属性名 数据类型
CONSTRAINT uk_属性名 UNIQUE(属性名)
) -
主键约束:PRIMARY KEY,当数据库表中的某个字段来唯一标识所有记录时,可以用PK约束进行设置,设置主键是为了数据库管理系统更快速的查找到表中的记录,主键约束的字段值必须是
唯一的,非空的
单子字段主键
CREATE TABLE table_name(
属性名 数据类型 PRIMARY KEY,
… …
//也可以设置主键名字
CONSTRAINT pk_属性名 PRIMARY KEY(属性名)
)
多字段主键
CREATE TABLE table_name(
属性名1 数据类型1,
属性名2 数据类型2,
… …
CONSTRAINT uk_约束名 PRIMARY KEY(属性名1,属性名2,… …)
) -
自动增加:AUTO_INCREMENT,当数据库表插入新的数据时,字段上的值会自动生成唯一的ID,在具体设置AUTO_INCREMENT约束时,一个表中只能有一个字段使用该约束 ,该字段的数据类型必须是整数类型,因为使用该约束后会生成唯一的ID,所以该字段也会被设置成PK主键
CREATE TABLE table_name( 属性名 INT AUTO_INCREMENT, ... ... )
-
外键约束:FOREIGN KEY,让表于表产生关系,从而保证数据的正确性
CREATE TABLE table_name( 属性名1 数据类型1. 属性名2 数据类型2, ... ... CONSTRAINT 外键约束名 FOREIGN KEY(外键列名称)REFERENCES 表名(主表列名称) ) 外键列名称是字表中设置外键的字段名,主表列名称是父表设置的主键的约束的字段名