mysql对表中记录的操作

增:插入记录

CREATE table employee_new(                  id INT PRIMARY KEY auto_increment,                  name VARCHAR(20) NOT NULL UNIQUE ,                  birthday VARCHAR(20),                  salary FLOAT(7,2)    )CHARACTER SET utf8;

INSERT INTO employee_new(name, birthday, salary) VALUES (‘yuan‘,‘1990-09-09‘,9000),                                                                (‘alex‘,‘1989-08-08‘,3000),                                                                (‘xialv‘,‘1988-07-07‘,1000),                                                                (‘alvin1‘,‘1993-04-20‘,3000),                                                                (‘alvin2‘,‘1995-05-12‘,5000);

INSERT INTO employee_new SET id=12,name="alvin3";    注意:表中数据三条,id分别为1,2,3,突然插入一个id=7,那么下次作为主键的字增长的id会从几开始增长呢?(从7开始)

删:删除表记录    DELETE from employee_new WHERE id=12;          如果不跟where语句则删除整张表中的数据          delete只能用来删除一行记录          delete语句只能删除表中的内容,不能删除表本身,想要删除表,用drop          TRUNCATE TABLE也可以删除表中的所有数据,词语句首先摧毁表,再新建表.此种方式删除的数据不能在          事务中恢复.    DELETE from employee_new WHERE name="alex";    DELETE FROM employee_new;删除表中所有记录    truncate employee_new;删除表中所有记录改:修改记录表

UPDATE employee_new SET birthday=‘1989-10-24‘ WHERE id=1;    UPDATE employee_new SET salary=salary+1000 WHERE name="yuan";

UPDATE 语法可以用新值更新原有表行中的各列        SET 字句指示要修改哪些列和要给予哪些值        WHERE 字句指定应更新哪些行,如果没有 WHERE 字句,则更新所有行

查询表达式:

SELECT *|field1,field2,... FROM tab_name                WHERE 条件                GROUP BY field                HAVING 筛选                ORDER BY field 排序 DESC(递减) ASC(递增)                LIMIT 限制条数

(1)  SELECT [DISTINCT] *|field1,field2,...FROM tab_name        --其中from指定从哪张表筛选,*表示查找所有列,也可以指定一个列        -- 表明确指定要查找的列,distinct用来剔除重复行。

--查询表中所有学生的信息      SELECT * FROM ExamResult;      --查询表中所有学生的姓名和对应的英语成绩      SELECT name,JS FROM ExamResult;      --过滤表中重复数据      SELECT DISTINCT JS,name FROM ExamResult;(2)   SELECT 也可以使用表达式,并且可以使用:字段 AS 别名,或者:字段 别名。      -- 在所有学生分数上加10分特长分显示。      SELECT name,JS+10,Django+10,OpenStack+10 FROM ExamResult;      -- 统计每个学生的总分。      SELECT name,JS+Django+OpenStack FROM ExamResult;      -- 使用别名表示学生总分。      SELECT name,JS+Django+OpenStack 总分 FROM ExamResult;(3)   使用 WHERE 字句,进行过滤查询     -- 查询姓名为XXX的学生成绩     SELECT * FROM ExamResult WHERE name=‘yuan‘;     -- 查询英语成绩大于90分的同学     SELECT id,name,JS FROM ExamResult WHERE JS>90;     -- 查询总分大于200分的所有同学     select name,JS+Django+OpenStack as 总成绩 from                            ExamResult where JS+Django+OpenStack>200 ;     -- where字句中可以使用:        比较运算符:        > < >= <= !=        BETWEEN 80 AND 100 值在80到100之间        IN(80,90,100) 值是80或90或100        LIKE ‘yuan%‘ 匹配以yuan开头的,%表示任意多字符,_ 表示一个字符。两个字符用两个下划线__        -- 逻辑运算符        在多个条件直接可以使用逻辑运算符 AND OR NOT(4)  ORDER BY 指定排序的列,排序的列即可是表中的列名,也可以是select 语句后指定的别名。     SELECT *|field1,field2... FROM tab_name order by field [Asc|Desc]     -- Asc 升序、Desc 降序     -- 对总分排序按从高到低的顺序输出      select name ,(ifnull(JS,0)+ifnull(Django,0)+ifnull(Database,0))           总成绩 from ExamResult order by 总成绩 desc;      --ifnull(JS,0) 如果JS是空,就记为0

-- 对姓李的学生成绩排序输出      SELECT name,(ifnull(JS,0)+ifnull(Django,0)+ifnull(OpenStack,0)) 总成绩 FROM ExamResult                    WHERE name LIKE ‘a%‘                    ORDER BY 总成绩 DESC ;

(5)  group by 分组查询:     -- 注意,按分组条件分组后每一组只会显示第一条记录     -- group by字句,其后可以接多个列名,也可以跟having子句,对group by 的结果进行筛选。

/* 注意注意注意!           having 和 where两者都可以对查询结果进行进一步的过滤,差别有:             <1>where语句只能用在分组之前的筛选,having可以用在分组之后的筛选;             <2>使用where语句的地方都可以用having进行替换             <3>having中可以用聚合函数,where中就不行。           */

--GROUP_CONCAT() 函数     select id,group_concat(name) from aa group by id;      --以id分组,把name字段的值打印在一行,逗号分隔(分隔)    ------+--------------+--------+------------+--------------+    | id   | product_name | price  | born_date  | class        |    +------+--------------+--------+------------+--------------+    |    1 | 苹果         |  20.00 | 2017-06-12 | 水果         |    |    1 | 香蕉         |  80.00 | 2017-01-02 | 水果         |    |    2 | 水壶         | 120.00 | 2017-06-12 | 电器         |    |    0 | 被罩         |  70.00 | 2017-01-12 | 床上用品     |    |    2 | 音响         | 420.00 | 2017-01-12 | 电器         |    |    0 | 床单         |  55.00 | 2017-06-12 | 床上用品     |    |    1 | 草莓         |  34.00 | 2017-01-12 | 水果         |    +------+--------------+--------+------------+--------------+    select id,group_concat(name) from aa group by id;     +------+----------------------------+    | id   | group_concat(product_name) |    +------+----------------------------+    |    0 | 被罩,床单                  |    |    1 | 苹果,香蕉,草莓             |    |    2 | 水壶,音响                  |    +------+----------------------------+

select id,group_concat(product_name),group_concat(born_date) from order_menu group by id;    +------+----------------------------+----------------------------------+    | id   | group_concat(product_name) | group_concat(born_date)          |    +------+----------------------------+----------------------------------+    |    0 | 被罩,床单                  | 2017-01-12,2017-06-12            |    |    1 | 苹果,香蕉,草莓             | 2017-06-12,2017-01-02,2017-01-12 |    |    2 | 水壶,音响                  | 2017-06-12,2017-01-12            |    +------+----------------------------+----------------------------------+

(6) 聚合函数:一般和分组查询配合使用    <1>统计表中所有记录:    -- COUNT(列名):统计行的个数        eg:--统计总分数大于280的人数有多少?        SELECT COUNT(name) FROM student WHERE (ifnull(JS,0)+ifnull(Django,0)+ifnull(Datebase,0))>280;        --注意:count(*)统计所有的行,count(字段)不统计null的值

<2>统计满足条件的行的内容和    -- SUM(列名):统计满足条件的行的内容和        -- 统计一个班级各科分别的总成绩                                select sum(JS) as JS总成绩,                                       sum(Django) as Django总成绩,                                       sum(OpenStack) as OpenStack from ExamResult;

-- 统计一个班级各科的成绩总和                                select sum(ifnull(JS,0)+ifnull(Django,0)+ifnull(Database,0))                                                            as 总成绩 from ExamResult;                            -- 统计一个班级JS成绩平均分                                select sum(JS)/count(*) from ExamResult ;

-- 注意:sum仅对数值起作用,否则会报错。    <3>求平均数    -- AVG(列名):        -- 求一个班级JS平均分?先查出所有的JS分,然后用avg包上。        select avg(ifnull(JS,0)) from ExamResult;        -- 求一个班级总分平均分        select avg((ifnull(JS,0)+ifnull(Django,0)+ifnull(Database,0)))

<4>max() 和 min()    -- 求班级最高分和最低分(数值范围在统计中特别有用)                                  select Max(ifnull(JS,0)+ifnull(Django,0)+ifnull(OpenStack,0)) 最高分 from ExamResult;                                  select Min(ifnull(JS,0)+ifnull(Django,0)+ifnull(OpenStack,0)) 最低分 from ExamResult;    --注意:null 和 所有的数计算都得null,所以需要用ifnull将null转换为0. ifnull(JS,0)

(7)重点:    SELECT FROM WHERE GROUP BY HAVING ORDER BY    --mysql在执行sql语句时的执行顺序:    --from where select group by having order by    -- 分析:                    select JS as JS成绩 from ExamResult where JS成绩 >70; ---- 不成功                    select JS as JS成绩 from ExamResult having JS成绩 >90; --- 成功(8) limit        SELECT * from ExamResult limit 1;        SELECT * from ExamResult limit 2,5;--跳过前两条显示接下来的五条纪录        SELECT * from ExamResult limit 2,2;

(9) 使用正则表达式查询        SELECT * FROM employee WHERE emp_name REGEXP ‘^yu‘;

SELECT * FROM employee WHERE emp_name REGEXP ‘yun$‘;

SELECT * FROM employee WHERE emp_name REGEXP ‘m{2}‘;
时间: 2024-10-12 17:31:34

mysql对表中记录的操作的相关文章

mysql 的一些记录的操作

①:删除表记录 用delete删除记录 DELETE 语句有如下格式: DELETE FROM tbl_name WHERE 要删除的记录 WHERE 子句指定哪些记录应该删除.它是可选的,但是如果不选的话,将会删除所有的记录.这意味 着最简单的 DELETE 语句也是最危险的. 这个查询将清除表中的所有内容.一定要当心! 为了删除特定的记录,可用 WHERE 子句来选择所要删除的记录.这类似于 SELECT 语句中的 WHERE 子句. mysql> delete from pet where

mysql学习笔记——对数据表中记录的操作

对记录的操作,主要有增.删.改.查 一.记录插入命令:insert into 表名(列名,列名, .... ) values(值, 值, ....); 值个数应该列个数相同,值顺序和列顺序相同,值类型和列字段类型匹配 当表名后面省略列名时,values后面要给出所有列的值 插入数据时,字符串添加 单引号 '' ---- 字符型和日期型数据应包含在单引号中 插入数据时,中文乱码问题:将客户端的编码集设置为gbk 修改mysql 配置文件,永久改变客户端编码集 ----- mysql/my.ini

对表中数据的操作

--向表中添加数据 insert into Table_1(电话,成绩) values(2000101,12) --修改表中的数据 update Table_1 set 电话=12138 where 电话=2000101 --删除表中的数据 delete from Table_1 where 电话=12138 --删除表中所有数据 truncate table Table_1 --查询语句 select select_list from table_list where search_condi

mysql对表中数据根据某一字段去重

要删除重复的记录,就要先查出重复的记录,这个很容易做到 select * from 表名 group by 根据哪一个字段(简称字段) having count(字段) > 1 注意:这是查出所有重复记录的第一条记录,需要保留,因此需要添加查询条件,查出所有的重复记录 select id,expect from cqssc where expect in (select expect from cqssc group by expect having count(expect)>1) and

MYSQL触发器记录用户操作的命令

假如有一张重要的表btb,需要几个管理员来管理 管理员:[email protected].[email protected].[email protected] 要求给表btb创建触发器: trigger触发器需求: 1.当在btb表中做insert.update.delete操作时,在btb_trace表中记录执行操作的用户.时间.操作命令. 1.当在btb表中插入新记录时,atb_bak表中会将atb表中的所有数据记录下来.保持同步备份. 2.当在btb表中删除数据前,在atb_del表中

linux中mysql,mongodb,redis,hbase数据库操作

1.实验内容与完成情况:(实验具体步骤和实验截图说明) (一) MySQL 数据库操作 学生表 Student Name English Math Computer zhangsan 69 86 77 lisi 55 100 88 根据上面给出的 Student 表,在 MySQL 数据库中完成如下操作: (1)在 MySQL 中创建 Student 表,并录入数据: (2)用 SQL 语句输出 Student 表中的所有记录: (3)查询 zhangsan 的 Computer 成绩: (4)

百万年薪python之路 -- MySQL数据库之 MySQL行(记录)的操作(一)

MySQL的行(记录)的操作(一) 1. 增(insert) insert into 表名 value((字段1,字段2...); # 只能增加一行记录 insert into 表名 values(字段1,字段2...); insert into 表名(id,name) values(字段1,字段2),(xx1,xx2); id,name,age 插入查询结果 语法: INSERT INTO 表名(字段1,字段2,字段3-字段n) SELECT (字段1,字段2,字段3-字段n) FROM 表2

mysql对表的操作

mysql对表的操作 表的概念 表示包含数据库中所有数据的数据库对象.表中的数据库对象包含列.索引.触发器.其中触发器是指用户定义的事务命令集合,当对一个表中的数据进行插入.更新或者删除时,这组命令就会自动执行,可以确保数据的安全性和完整性. 创建表 create table tableName( 属性名 字段类型, 属性名 字段类型, -- 属性名 字段类型 ); 最后一个字段类型后面没有逗号,整个语句的小括号后边有分号. 例如:创建一个数据库,并且创建一张表: create database

Mysql数据库连接、查询、记录集操作代码

Mysql数据库链接代码 function dbConnect($hostname,$username,$pass,$db_name,$pconnect =0) { $func=empty($pconnect) ? 'mysql_connect':'mysql_pconnect'; if(!$connect){ [email protected]$func($hostname,$username,$pass) or die("<font size='2'>Mysql_Error :