一. 创建数据库
1.CREATE DATABASE 语法
CREATE DATABASE 数据库名;
例如我们创建一个studentinfo数据库,sql语句如下:
CREATE DATABASE studentinfo;
2.IF NOT EXISTS 判断数据库是否存在
我们在创建数据库的时候,如果创建的这个数据库名字已经存在,那在执行 创建语句的时候就会报 Can't create database '数据库名字'; database exists 错误 ,说我们的数据库名字已经存在。这个时候我们就可以 用 IF NOT EXISTS 来做判断数据库是否存在。
语法:
CREATE DATABASE IF NOT EXISTS 数据库名;
例如我们创建一个studentinfo数据库 用IF NOT EXISTS判断 studentinfo 是否存在,sql语句如下:
CREATE DATABASE IF NOT EXISTS studentinfo;
3. 设置数据库的字符集
这里我们通过CHARACTER SET 来设置数据库的字符集,数据库默认字符集为utf8。
语法:
CREATE DATABASE 数据库名 CHARACTER SET 字符集名称;
我们把studentinfo 数据库的字符集设置为utf8 的,语法如下:
CREATE DATABASE studentinfo CHARACTER SET utf8mb4;
二.删除数据库
1.DROP DATABASE 语法
DROP DATABASE 数据库名;
例如我们删除一个studentinfo数据库,sql语句如下:
DROP DATABASE studentinfo; -- 直接删除studentinfo
DROP DATABASE IF EXISTS studentinfo; -- 判断是否有studentinfo库存在,如果有在删除。
三. 创建表
1.CREATE TABLE 语法
CREATE TABLE 表名(
字段名 字段的数据类型 【字段约束】, -- 【】中的可写可不写,看具体字段要求
字段名 字段的数据类型 【字段约束】,
字段名 字段的数据类型 【字段约束】,
字段名 字段的数据类型 【字段约束】,
字段名 字段的数据类型 【字段约束】
);
这里我们创建一个学生表:
CREATE TABLE student(
sid INT NOT NULL PRIMARY KEY, -- 学生id 数据类型是int 类型,约束条件 不为空 是主键
sname NVARCHAR(50) NOT NULL, -- 学生姓名 数据类型是字符型,约束条件 不为空
age INT NOT NULL, -- 学生年龄 数据类型是int 类型,约束条件 不为空
ssex VARCHAR(50) NOT NULL -- 学生性别 数据类型是字符型,约束条件 不为空
);
四. 修改表结构
1. 修改表名
ALTER TABLE 表名 RENAME 新表名;
2. 添加字段
ALTER TABLE 表名 ADD 字段名称 字段约束;
3. 删除字段
ALTER TABLE 表名 DROP 字段名称;
4. 修改字段类型
-- 修改字段类型
ALTER TABLE 表名 MODIFY COLUMN 字段名称 字段约束 ; -- COLUMN关键字可以省略不写
5. 修改字段名
-- 修改字段名字和类型,修改了字段名称就必须重新指定字段的约束条件
ALTER TABLE 表名 CHANGE COLUMN 旧字段名称 新字段名称 字段约束 ; -- COLUMN关键字可以省略不写
五. 删除表
1.DROP TABLE 语法
DROP TABLE 表名; -- 这个语句可以搭配着 IF EXISTS 来使用,判断一下表是否存在
六. 复制表
1.LIKE方法 复制表结构
like方法能一模一样的将一个表的结果复制生成一个新表,包括复制表的备注、索引、主键外键、存储引擎等。
CREATE TABLE 新的表名 LIKE 复制表的名字; -- 这样新建的表就会按照复制的那个表的结构去创建
2.复制表的结构 + 数据
CREATE TABLE 新的表名 SELECT * FROM 复制表的名字 -- 就是通过子查询的方式,将数据和结构都复制给新的表。
3.复制表的部分结构 + 数据
CREATE TABLE 新的表名 SELECT 要复制的字段 FROM 复制表的名字 -- 就是通过子查询,查出想要复制的字段,将查出的结果的数据和结构都复制给新的表。
4.复制表的部分结构
-- 就是通过子查询,查出想要复制的字段,用WHERE 控制数据为假,这样就相当于没有找到数据,所以只复制了结构。
CREATE TABLE 新的表名 SELECT 要复制的字段 FROM 复制表的名字 WHERE FALSE
posted on
浙公网安备 33010602011771号