一、MySQL表数据类型
http://www.runoob.com/mysql/mysql-data-types.html
二、用SQL语句创建表
创建MySQL数据表需要以下信息: (1) 表名 (2) 表字段名 (3)定义每个表字段
用程序创建表,可以使用 SQL的CREATETABLE语句。CREATE TABLE table_name (column_name column_type);
注意:
如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL,在操作数据库时如果输入该字段的数据为NULL,就会报错。
AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
ENGINE 设置存储引擎,CHARSET 设置编码。
CREATE TABLE IF NOT EXISTS `runoob_tbl`(
`runoob_id` INT UNSIGNED AUTO_INCREMENT,
`runoob_title` VARCHAR(100) NOT NULL,
`runoob_author` VARCHAR(40) NOT NULL,
`submission_date` DATE,
PRIMARY KEY ( `runoob_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
提示: 主键是其值唯一标识表中每一行的列。只有不允许NULL值的列可作为主键,允许NULL值的列不能作为唯一标识。
三、用SQL语句向表中添加数据
MySQL 表中使用 INSERT INTO SQL语句来插入数据。语法如下:
INSERT INTO table_name ( field1, field2,...fieldN )
VALUES
( value1, value2,...valueN );
注意: 如果数据是字符型,必须使用单引号或者双引号,如:“value”。
四、用SQL语句删除表
用SQL语句删除表,语法如下:
delete from person where name="volcano"//删除表中的名字为volcano的行
DELETE:DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作。DELETE语句会留下表(容器),而删除表中的数据 ,通常和WHERE一起使用。
DELETE语句结构:DELETE FROM 表名 WHERE 列名称 = 值 ;
DELETE语句不能使用GROUP BY,HAVING,ORDER BY子句。
DROP:删除表(删除整个表而不是其内容)非常简单,使用 DROP TABLE语句即可。DROP则删除整个表(结构和数据)。TRUNCATE 和DELETE只删除数据
DROP语句结构:DROP TABLE 表名称
TRUNCATE:TRUNCATE TABLE 则一次性地从表中删除所有的数据并不把单独的删除操作记录记入日志保存,删除行是不能恢复的。并且在删除的过程中不会激活与表有关的删除触发器。执行速度快。TRUNCATE 只能对TABLE;DELETE可以是table和view
TRUNCATE语句结构:TRUNCATE TABLE 表名称
五、用SQL语句修改表
修改表名:表名在一个数据库中唯一的确定一张表。格式: ALTER TABLE 旧表名 RENAME 新表名;
ALTER TABLE student RENAME student4;
修改列名:alter table 表名 change column 旧列名 新列名 新数据类型--修改表列名
ALTER TABLE email CHANGE COLUMN Email EMAIL VARCHAR(100);
修改表中数据类型:格式:ALTER TABLE 表名 MODIFY 属性名 数据类型;
ALTER TABLE student1 MODIFY name varchar(30);
修改表中数据:update 表名 set 字段名=‘新内容’ + where条件
update `runoob_tbl` set `submission_date`='2016-05-06' where `runoob_id`=3;
删除行:delete from 表名 where 行字段名=字段值
delete from tablename where id=11;
删除列:alter table 表名 drop column 列名
ALTER TABLE email DROP COLUMN name
新建列:alter table 表名 add column 列名 数据类型;
alter table TABLE_NAME add column NEW_COLUMN_NAME varchar(20) not null;
新建行:insert into 表名(字段名1,字段名2) values(值1,值2);
INSERT INTO table_name ( field1, field2,...fieldN )
VALUES
( value1, value2,...valueN );
任务一:
创建如下所示的 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名学生的课。
应该输出:
+---------+
| class |
+---------+
| Math |
+---------+
Note:
学生在每个课中不应被重复计算。
练习:
任务二:交换工资(难度:简单)
创建一个 salary 表,如下所示,有m=男性 和 f=女性的值 。
例如:
| id | name | sex | salary |
|----|------|-----|--------|
| 1 | A | m | 2500 |
| 2 | B | f | 1500 |
| 3 | C | m | 5500 |
| 4 | D | f | 500 |
交换所有的 f 和 m 值(例如,将所有 f 值更改为 m,反之亦然)。
要求使用一个更新查询,并且没有中间临时表。
运行你所编写的查询语句之后,将会得到以下表:
| id | name | sex | salary |
|----|------|-----|--------|
| 1 | A | f | 2500 |
| 2 | B | m | 1500 |
| 3 | C | f | 5500 |
| 4 | D | m | 500 |