MySQL 基础 (二)- 表操作

MySQL表数据类型

类型 大小 用途
CHAR 0-255字节 定长字符串
VARCHAR 0-65535字节 变长字符串
INT或INTEGER 4 字节 大整数值
FLOAT 4 字节 单精度浮点数值
DOUBLE 8 字节 双精度浮点数值
DECIMAL 依赖于范围 小数值

用SQL语句创建表

  • 语句解释
  • 设定列类型 、大小、约束
  • 设定主键

用SQL语句向表中添加数据

  • 语句解释
  • 多种添加方式(指定列名;不指定列名)
--插入一行
INSERT INTO customers
VALUES (NULL,
'Pep E. Lapew',,
'90046'
);

-- 插入多行
INSERT INTO cunstomers(cust_name,
cust_address,
cust_zip
)
VALUES(NULL,
'Pep E. Lapew',,
'90046'
);
INSERT INTO cunstomers(cust_Name,
cust_Address,
cust_zip
)
VALUES(NULL,
'Pep E. Lapew',,
'90046'
);

-- 另一种插入多行
INSERT INTO cunstomers(cust_name,
cust_address,
cust_zip
)
VALUES(NULL,
'Pep E. Lapew',,
'90046'
);
VALUES(NULL,
'Pepa. Lapew',,
'90046'
);

用SQL语句删除表

  • 语句解释,从一个表中删除数据,使用DELETE语句。
  • DELETE
    DELETE FROM customers
    WHERE cust_id = 10006;

     

  • DROP,drop命令用于删除数据库。drop命令格式:drop database <数据库名>;
  • TRUNCATE, 如果想从表中删除所有行,不要使用DELETE,TRUNCATE速度更快,可使用TRUNCATE TABLE语句TRUNCATE 实际是删除原来的表并重新创建一个表,而不是逐行删除表中的数据。
  • 不同方式的区别,当你不再需要表时,用drop,当你仍要保留该表,但要删除所有记录时,用truncate,当你要删除部分记录时,用delete.

用SQL语句修改表

  • 修改
    --修改表名
    ALTER TABLE courses  RENAME TO COURSES;
    
    -- 修改列
    ALTER TABLE courses RENAME COLUMN class TO CLASS ;
    
    -- 修改表中的数据
    UPDATE courses SET CLASS='math' WHERE student='D';

     

  • 删除行或列
    -- 删除列
    ALTER TABLE courses DROP COLUMN student;
    
    --删除行
    DELETE FROM courses WHERE student='I';
    

     

  • 新建行或列
    --新建行
    INSERT INTO courses VALUES('A', 'Math');
    
    --新建列
    ALTER TABLE courses ADD gender CHAR(2);
    

     


项目三:

超过5名学生的课(难度:简单) 创建如下所示的courses 表 ,有: student (学生) 和 class (课程)。 例如,表:

MySQL 基础 (二)- 表操作_第1张图片

编写一个 SQL 查询,列出所有超过或等于5名学生的课。 应该输出:

MySQL 基础 (二)- 表操作_第2张图片

Note: 学生在每个课中不应被重复计算。

-- 创建表

CREATE TABLE courses(
student VARCHAR(255) NOT NULL PRIMARY KEY,
class VARCHAR(255) NOT NULL
);

-- 插入数据

INSERT INTO courses VALUES('A', 'Math');
INSERT INTO courses VALUES('B','English');
INSERT INTO courses VALUES('C','Math');
INSERT INTO courses VALUES('D','Biology');
INSERT INTO courses VALUES('E','Math');
INSERT INTO courses VALUES('F','Computer');
INSERT INTO courses VALUES('G','Math');
INSERT INTO courses VALUES('H','Math');
INSERT INTO courses VALUES('I','Math');
INSERT INTO courses VALUES('A','Math');

-- 查询
SELECT class 
FROM (SELECT class, COUNT(*) AS num
FROM courses
GROUP BY class
HAVING num > 5) AS table_alias;

项目四:

交换工资(难度:简单) 创建一个 salary表,如下所示,有m=男性 和 f=女性的值 。 例如:

MySQL 基础 (二)- 表操作_第3张图片

交换所有的 f 和 m 值(例如,将所有 f 值更改为 m,反之亦然)。要求使用一个更新查询,并且没有中间临时表。 运行你所编写的查询语句之后,将会得到以下表:

MySQL 基础 (二)- 表操作_第4张图片

-- 创建表
CREATE TABLE salary(
id INT NOT NULL PRIMARY KEY,
name VARCHAR(255) NOT NULL,
sex CHAR(2) NOT	NULL,
salary INT NOT NULL
);

-- 插入数据
INSERT INTO salary VALUES('1','A','m','2500');
INSERT INTO salary VALUES('2','B','f','1500');
INSERT INTO salary VALUES('3','C','m','5500');
INSERT INTO salary VALUES('4','D','f','500');

--更新数据
UPDATE salary
SET sex = IF(sex = 'F','M','F');

 

你可能感兴趣的:(MySQL)