1、MySQL表数据类型
MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。
数值类型:严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。
日期和时间类型:表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。
字符串类型:字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。
2、用SQL语句创建表
创建mysql数据表需要:表名、表字段名,定义每个表字段
CREATE TABLE table_name(column_name column_type)
CREATE TABLE runoob_tbl(runood_id INT NOT NULL AUTO_INCREMENT,
runood_title VARCHAR(100) NOT NULL,
submission_date DATE,
PREMARY_KEY(ronood_id))
ENGTINE = InnoDB DEFAULT CHARSET= utf8;
语句解释:
NOT NULL:设定该字段数据不为空,当为空值时报错;
AUTO_INCREMENT:自动加1,;
VARCHAR(100):字段类型为可变长度的字符串,最大长度为100,当存入的字符串长度为10时,长度为11;
PREMARY_KEY(ronood_id)):设定ronood_id字段为主键。
3、用SQL语句向表中添加数据
语句解释 多种添加方式(指定列名;不指定列名)
INSERT INTO table_name(field1, field2, ...,fieldN)
VALUES(value1, value2, ... ,valueN)
如果数据是字符串型,需要加单引号。
INSERT INTO 多条数据:
INSERT INTO table_name (field1, field2,...fieldN) VALUES (valueA1,valueA2,...valueAN),(valueB1,valueB2,...valueBN),(valueC1,valueC2,...valueCN)......;
4. 用SQL语句删除表
语句解释 DELETE DROP TRUNCATE 不同方式的区别
DROP TABLE table_name ;--删除表
DELETE 删除表内数据
DELETE FROM student WHERE T_name = '张三';
TRUNCATE:删除表内数据,保存表结构。
当不再要该表时,用DROP;当要保留该表,但是要删除数据,用TRUNCATE;当删除表中部分数据,用DELETE。
5. 用SQL语句修改表
修改列名 修改表中数据 删除行 删除列 新建列 新建行
UPDATE table_name SET field1 = new-value1,field2 = new-value2
[WHERE Clause]
UPDATE runoob_tbl SET runoob_title='学习C++' WHERE runood_id = 3;
更改表格runoob_tbl中runood_id为3对应的runood_title字段下面的值为学习C++;
作业项目三:超过5名学生的课(难度:简单)
创建如下所示的courses 表 ,有: student (学生) 和 class (课程)。
例如,表:
+---------+------------+
| student | class | +---------+------------+ | A | Math | | B | English | | C | Math | | D | Biology | | E | Math | | F | Computer | | G | Math | | H | Math | | I | Math | | A | Math | +---------+------------+
编写一个 SQL 查询,列出所有超过或等于5名学生的课。
项目四:交换工资(难度:简单)
创建一个 salary表,如下所示,有m=男性 和 f=女性的值 。
例如:
交换所有的 f 和 m 值(例如,将所有 f 值更改为 m,反之亦然)。要求使用一个更新查询,并且没有中间临时表。
6、表联结
MySQL别名
INNER JOIN:内连接,或等值连接,获取两个表中字段匹配关系的记录。
LEFT JOIN:左连接,获取左表所有记录,即使右表没有对应匹配的记录。
RIGHT JOIN:右连接,获取右表所有记录,即使左表没有对应匹配的记录。
作业:项目五:组合两张表 (难度:简单)
在数据库中创建表1和表2,并各插入三行数据(自己造)
表1: Person
+-------------+---------+ | 列名 | 类型 | +-------------+---------+ | PersonId | int | | FirstName | varchar | | LastName | varchar | +-------------+---------+
PersonId 是上表主键
表2: Address
+-------------+---------+ | 列名 | 类型 | +-------------+---------+ | AddressId | int | | PersonId | int | | City | varchar | | State | varchar | +-------------+---------+
AddressId 是上表主键
编写一个 SQL 查询,满足条件:无论 person 是否有地址信息,都需要基于上述两表提供 person 的以下信息:FirstName, LastName, City, State
项目六:删除重复的邮箱(难度:简单)
编写一个 SQL 查询,来删除 email 表中所有重复的电子邮箱,重复的邮箱里只保留 **Id ***最小 *的那个。
+----+---------+ | Id | Email | +----+---------+ | 1 | a@b.com | | 2 | c@d.com | | 3 | a@b.com | +----+---------+
Id 是这个表的主键。