前面文章我们学习了对数据库的操作,本章内容学习一下对表的操作,包括如何创建表,修改表的结构,以及对表中数据的操作。希望对你有所资助。
一. 创建数据表
1.下面我们直接演示数据表的创建语句:
- field:指定列名
- datatype:指定列名的数据范例
- character set:若不指定字符集,就与所在数据库的字符集保持一致
- collate:校队规则,若不指定,就与所在数据库的字符集保持一致
- -- 演示表的创建
- CREATE TABLE lrx_t1(
- field1 datatype,
- field2 datatype,
- field3 datatype
- )CHARACTER SET 字符集
- COLLATE 校队规则
- ENGINE 存储引擎;
复制代码 2.删除数据表
3.下面我们做一个训练
- #创建表的课堂练习
- -- 字段属性
- -- Id 整形
- -- name 字符型
- -- sex 字符型
- -- brithday 日期型(date)
- -- entry_date 日期型 (date)
- -- job 字符型
- -- Salary 小数型
- -- resume 文本型
- -- 自己一定要练习一把
- CREATE TABLE `emp` (
- id INT,
- `name` VARCHAR(32),
- sex CHAR(1), brithday DATE,
- entry_date DATETIME,
- job VARCHAR(32),
- salary DOUBLE, `resume` TEXT) CHARSET utf8 COLLATE utf8_bin ENGINE INNODB;
- -- 添加一条
- INSERT INTO `emp` VALUES(100, '小妖怪', '男', '2000-11-11',
- '2010-11-10 11:11:11', '巡山的', 3000, '大王叫我来巡山');
- -- 查询
- SELECT * FROM `emp`;
复制代码 二. 修改表结构
这是对表的结构进行修改,比如添加列,删除列,修改表的名字,字符集,引擎等
- alter table lrx_t1 add `name` varchar(32) not null default '';
复制代码
- alter table lrx_t1 drop `name`;
复制代码
- rname table lrx_t1 to liu;
复制代码
- 修改列,比如修改名字的长度为60,注意,我们已经改了表名
- altre table liu modify `name` varchar(60)
复制代码
- alter table liu change `name` my_name varchar(32) not null default ' ';
复制代码
- alter table liu character set utf8;
复制代码
三. 数据库CRUD语句
3.1Insert语句(添加数据)
1.基本语句
- insert into table_name values (vaulue...);
复制代码 2.使用细节
- 插入的数据应与字段的数据范例相同。
比如 把 ‘abc’ 添加到 int 范例会错误
INSERT INTO goods (id, goods_name, price)
VALUES(‘雷军’, ‘小米手机’, 2000);
- 数据的长度应在列的规定范围内,比方:不能将一个长度为 80 的字符串加入到长度为 40 的列中。
INSERT INTO goods (id, goods_name, price)
VALUES(40, ‘vovo 手机 vovo 手机 vovo 手机 vovo 手机 vovo 手机’, 3000);
- 在 values 中列出的数据位置必须与被加入的列的排列位置相对应。
INSERT INTO goods (id, goods_name, price) – 不对
VALUES(‘vovo 手机’,40, 2000); –
- 字符和日期型数据应包罗在单引号中。
INSERT INTO goods (id, goods_name, price)
VALUES(40, vovo 手机, 3000); – 错误的 vovo 手机 应该 ‘vovo 手机’
- 列可以插入空值[前提是该字段允许为空],insert into table value(null)
INSERT INTO goods (id, goods_name, price)
VALUES(40, ‘vovo 手机’, NULL);
- insert into tab_name (列名…) values (),(),() 情势添加多条记录
INSERT INTO goods (id, goods_name, price)
VALUES(50, ‘三星手机’, 2300),(60, ‘海尔手机’, 1800);
- 如果是给表中的全部字段添加数据,可以不写前面的字段名称
INSERT INTO goods VALUES(70, ‘IBM 手机’, 5000);
- 默认值的使用,当不给某个字段值时,如果有默认值就会添加默认值,否则报错,如果某个列 没有指定 not null ,那么当添加数据时,没有给定值,则会默认给 null , 如果我们希望指定某个列的默认值,可以在创建表时指定
INSERT INTO goods (id, goods_name)
VALUES(80, ‘格力手机’);
SELECT * FROM goods;
INSERT INTO goods2 (id, goods_name)
VALUES(10, ‘小米手机’);
SELECT * FROM goods2;
3.2Update语句(更新数据)
1.使用update语句来修改表中的数据
2.基本使用,我们先看一个题目
- -- 演示 update 语句
- -- 要求: 在上面创建的 employee 表中修改表中的纪录
- -- 1. 将所有员工薪水修改为 5000 元。[如果没有带 where 条件,会修改所有的记录,因此要小心]
- UPDATE employee SET salary = 5000
- -- 2. 将姓名为 小妖怪 的员工薪水修改为 3000 元。
- UPDATE employee
- SET salary = 3000
- WHERE user_name = '小妖怪'
- -- 3. 将 老妖怪 的薪水在原有基础上增加 1000 元
- INSERT INTO employee
- VALUES(200, '老妖怪', '1990-11-11', '2000-11-11 10:10:10', '捶背的', 5000, '给大王捶背', 'd:\\a.jpg');
-
- UPDATE employee
- SET salary = salary + 1000
- WHERE user_name = '老妖怪' -- 可以修改多个列的值
- UPDATE employee
- SET salary = salary + 1000 , job = '出主意的'
- WHERE user_name = '老妖怪'
复制代码 3.updata使用的四个细节
- 1.UPDATE语法可以用新值更新原有表行中的各列。
- 2.SET子句指示要修改哪些列和要给予哪些值。
- 3.WHERE子句指定应更新哪些行。如没有WHERE子句,则更新全部的行(记录),因此老师提醒肯定小心。
- 4.如果必要修改多个字段,可以通过set字段1=值1,字段2=值2…
3.3Delect语句(删除数据)
1.使用delect语句删除表中数据
2, 快速入门案例解答
- -- 删除表中名称为’老妖怪’的记录。
- DELETE FROM employee
- WHERE user_name = '老妖怪';
-
- -- 删除表中所有记录, 老师提醒,一定要小心
- DELETE FROM employee;
- -- Delete 语句不能删除某一列的值(可使用 update 设为 null 或者 '')
- UPDATE employee
- SET job = ''
- WHERE user_name = '老妖怪';
- -- 要删除这个表
- DROP TABLE employee;
复制代码 3.delect使用细节
- 如果不使用where子句,将删除表中全部数据。
- Delete语句不能删除某一列的值(可使用update设为null或者")
- 使用delete语句仅删除记录,不删除表本身。如要删除表,使用drop table 表名;
3.4Select语句(查找数据)
查询语句我们这里简单报告一下单表查询
3.4.1单表查询
1.基本语法
- 1.Select指定查询哪些列的数据。
- 2.column指定列名。
- 3.*号代表查询全部列。
- 4 From指定查询哪张表。
- 5.DISTINCT可选,指显示结果时,是否去掉重复数据
2,下面我们演示一下案例,在演示之前,我们先创建一个表
- CREATE TABLE student(
- id INT NOT NULL DEFAULT 1,
- NAME VARCHAR(20) NOT NULL DEFAULT '',
- chinese FLOAT NOT NULL DEFAULT 0.0,
- english FLOAT NOT NULL DEFAULT 0.0,
- math FLOAT NOT NULL DEFAULT 0.0
- );
- INSERT INTO student(id,NAME,chinese,english,math) VALUES(1,'韩顺平',89,78,90);
- INSERT INTO student(id,NAME,chinese,english,math) VALUES(2,'张飞',67,98,56);
- INSERT INTO student(id,NAME,chinese,english,math) VALUES(3,'宋江',87,78,77);
- INSERT INTO student(id,NAME,chinese,english,math) VALUES(4,'关羽',88,98,90);
- INSERT INTO student(id,NAME,chinese,english,math) VALUES(5,'赵云',82,84,67);
- INSERT INTO student(id,NAME,chinese,english,math) VALUES(6,'欧阳锋',55,85,45);
- INSERT INTO student(id,NAME,chinese,english,math) VALUES(7,'黄蓉',75,65,30);
- INSERT INTO student(id,NAME,chinese,english,math) VALUES(8,'韩信',45,65,99);
- SELECT * FROM student;
复制代码 表创建之后,我们看一下题目要求

- -- 查询表中所有学生的信息。
- SELECT * FROM student;
- -- 查询表中所有学生的姓名和对应的英语成绩。
- SELECT `name`,english FROM student;
- -- 过滤表中重复数据 distinct 。
- SELECT DISTINCT english FROM student;
- -- 要查询的记录,每个字段都相同,才会去重
- SELECT DISTINCT `name`, english FROM student;
复制代码 3.使用表达式对查询的列进行运算
4.在 select 语句中可使用 as 语句
5.在 where 子句中经常使用的运算符
下面我们继承根据上面创建的表来训练题目
- -- select 语句
- -- 查询姓名为赵云的学生成绩
- SELECT * FROM student
- WHERE `name` = '赵云'
- -- 查询英语成绩大于 90 分的同学
- SELECT * FROM student
- WHERE english > 90
- -- 查询总分大于 200 分的所有同学
- SELECT * FROM student
- WHERE (chinese + english + math) > 200
复制代码 6.使用 order by 子句排序查询结果
- -- 演示 order by 使用
- -- 对数学成绩排序后输出【升序】。
- SELECT * FROM student
- ORDER BY math;
- -- 对总分按从高到低的顺序输出 [降序] -- 使用别名排序
- SELECT `name` , (chinese + english + math) AS total_score
- FROM student
- ORDER BY total_score DESC;
- -- 对姓韩的学生成绩[总分]排序输出(升序) where + order by
- SELECT `name`, (chinese + english + math) AS total_score
- FROM student
- WHERE `name` LIKE '韩%' ORDER BY total_score;
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |