初始MySQL(二)(表的增删查改)

目录

修改表

CRUD(增删改查)

insert语句(表中增加数据)

update语句(修改表中的数据)

delete删除语句

select语句

修改表

添加列

ALTER TABLE tablename

                ADD  (column datatype [DEFAULT expr] [, column datatype] ...);

修改列 

ALTER TABLE tablename

                MODIFY  (column datatype [DEFAULT expr] [, column datatype] ...);

删除列

ALTER TABLE tablename 

               DROP(column) 

查看表的结构 : desc 表名;

修改表名: Rename table 表名 to 新表名

修改表字符集: alter table 表名 character set 字符集;

#修改表的操作练习
#员工表emp上增加一个image列,varchar类型(要求在resume后面)
ALTER TABLE emp 
        ADD image VARCHAR(32) NOT NULL DEFAULT ''
        AFTER RESUME
DESC emp  #显示表的结构,查看表的所有列
#修改job列,使其长度为60
AFTER TABLE emp
        MODIFY job VARCHAR (60) NOT NULL DEFAULT '' 
AFTER TABLE emp
        DROP sex
#表明改为employee
RENAME TABLE emp TO employee
#修改表的字符集utf8
AFTER TABLE employer CHARSET utf8

#列名name修改为user-name
AFTER TABLE employee
       CHANGE `name` `user_name` VARCHAR(64) NOT NULL DEFAULT ''

CRUD(增删改查)

insert语句(表中增加数据)

使用INSERT语句向表中插入数据

快速入门案例:

1.创建一张商品表goods(id int, goods_name varchar(10),price double);

2.添加两条记录

mysql代码

#练习insert语句
#创建一张商品表goods(id int ,goods_name varchar(10),price double);
#添加2条记录
CREATE TABLE `goods`(
id INT, goods_name VARCHAR(10),price DOUBLE);
#添加数据
INSERT INTO `goods` (id ,goods_name,price)
         VALUES (10,'华为手机','2000');
         
INSERT INTO `goods` (id ,goods_name,price)
         VALUES (20,'苹果手机','3000');
SELECT * FROM `goods`

insert使用的注意细节

#练习insert语句
#创建一张商品表goods(id int ,goods_name varchar(10),price double);
#添加2条记录
CREATE TABLE `goods`(
id INT, goods_name VARCHAR(10),price DOUBLE NOT NULL);
#添加数据
INSERT INTO `goods` (id ,goods_name,price)
         VALUES (10,'华为手机','2000');
         
INSERT INTO `goods` (id ,goods_name,price)
         VALUES (20,'苹果手机','3000');
#注意细节
#1.插入的数据应与字段的数据类型相同。比如把'abc'添加到int 类型会错误
INSERT INTO `goods`(id,goods_name,price) VALUES('abc','小米手机',2000);
#2.数据的长度应在列规定范围内,例如,不能将一个长度为80的字符串加入到长度为40的列中
INSERT INTO `goods`(id,goods_name,price)
         VALUES(40,'vovo手机vovo手机vovo手机vovo手机',3000);
#3.在values中列出的数据位置必须与被加入的列的排列位置相对应
INSERT INTO `goods` (id,goods_name,price)
          VALUES('vovo手机',40,2000);
#4.字符和日期型的数据应包含在单引号中
INSERT INTO `goods`(id,goods_name,price)
         VALUES(40,'vovo手机',3000);
#5.列可以插入空值(前提是该字段允许为空),insert into table value(null),在创建表的时候
#没有写NOT NULL 
#写了就不行了,下面就不行呀
-- CREATE TABLE `goods`(
-- id INT, goods_name VARCHAR(10),price DOUBLE NOT NULL);
INSERT INTO `goods`(id,goods_name,price)
        VALUES(40,'vovo手机',NULL);
#6.insert into tab_name (列名..) values(),(),(),()...
INSERT INTO `goods`(id,goods_name,price)
         VALUES(50,'三星手机',2300)(60,'海尔手机',1800);
#7.如果是给表中的所有字段添加数据,可以不写前面的字段名称
INSERT INTO `goods`
         VALUES(40,'大哥大',50000);
#8.默认值的使用,当不给某个字段值时,如果有默认值就会添加默认值,否则报错
#如果某个列没有指定not null ,那么当添加数据时,没有给定值,则会默认给null
#如果我们希望指定某个列的默认值,在创建表时指令
-- CREATE TABLE `goods`(
-- id INT, goods_name VARCHAR(10),price DOUBLE NOT NULL DEFAULT 100);
INSERT INTO `goods`(id,goods_name)
        VALUES(80,'诺基亚')

update语句(修改表中的数据)

#演示update语句
#创建一个employee表
CREATE TABLE employee(
id INT , 
user_name VARCHAR(20),
birthday DATE ,
entry_date DATETIME,
job VARCHAR(20),
salary INT,
`resume` TEXT);
INSERT INTO employee
        VALUES (200,'小妖怪','2010-11-11','2010-11-11 11:11:11','巡山的',3000,
        '大王叫我来巡山')
SELECT * FROM employee;
#要求: 在上面创建的employee表中修改表中的记录
#1.将所有的员工薪水修改为5000,如果没有带where条件,会修改所有的记录,因此要小心
UPDATE employee SET salary=5000
SELECT * FROM employee;
#2.将姓名为小妖怪的员工薪水修改为3000元
UPDATE employee 
      SET salary = 3000
      WHERE user_name = '小妖怪'
SELECT * FROM employee;
#3.创建老妖怪
INSERT INTO employee
        VALUES (100,'老妖怪','1990-11-11','1990-11-11 11:11:11','捶背的',4000,
        '大王叫我来捶背')
SELECT * FROM employee;
#4.将老妖怪的薪水在原有基础上增加1000
UPDATE employee
      SET salary = salary + 1000
      WHERE user_name= "老妖怪"
SELECT * FROM employee;

delete删除语句

不能删除某一列,可以使用update 设为null或者'')

delete from tb1_name

           [WHERE where_definition]

删除全部数据后,表仍然是存在的,想要删除表,我们应该怎么办呢?

DROP TABLE employee;

select语句

基本语法

SELECT  [DISTINCT] *|{column1 , column2,column3} FROM  tablename

注意事项: Select指定查询哪些列的数据   column指定列名  *号代表查询所有列  

                 FROM指定查询哪张表        DISTINCT可选,指显示结果时,是否去掉重复数据

使用表达式对查询的列进行运算

SELECT *|{column1 | expression,column2| expression} FROM tablename;

在select语句中可使用as语句

SELECT columnname as 别名 from 表名;

where字句中

#select 语句
#查询姓名为赵云的学生成绩
SELECT * FROM student
         WHERE `name` = "赵云"
#查询英语成绩大于90分的同学
SELECT * FROM student
         WHERE english > 90
#查询总分大于200分的所有同学      
SELECT * FROM student
      WHERE (chinese + english + math) > 200;
#查询math大于60 并且(and)id大于4的学生的成绩
SELECT * FROM student 
       WHERE (math>60) AND (id > 4)
#查询英语成绩大于语文成绩的同学
SELECT * FROM student 
         WHERE english>chinese
#查询总分大于200分,并且数学成绩小于语文成绩的姓赵的学生
#赵% 表示名字以赵开头的就可以
SELECT * FROM student 
         WHERE ((chinese + english + math) > 200) AND (math<chinese) AND `name` LIKE '赵%'
#查询英语分数在80-90之间的同学
SELECT * FROM student
        WHERE english <=90 AND english >=80  
SELECT * FROM student
       WHERE english BETWEEN 80 AND 90 
       
#查询数学成绩为89,90,91的同学
SELECT * FROM student
       WHERE math = 89 OR math = 90 OR math = 91
SELECT * FROM student
       WHERE math IN (89,90,91);      
         
         

使用order by 子句排序查询结果

SELECT column1,column2,column3...  FROM table; 

                                                               order by column asc | desc,....

1.order by 指定排序的列,排序的列既可以是表中的列名,也可以是select语句后指定的列名

2.Asc升序(默认),Desc 降序

3.ORDER BY 子句应位于SELECT语句的结尾

#select语句
#order by使用
#对数学成绩排序后输出[升序]
SELECT * FROM student 
       ORDER BY math;
#对总分按从高到低的顺序输出[降序]
SELECT `name`,(math+chinese+english) AS '总分' FROM student 
       ORDER BY (math+chinese+english) DESC;
#对姓李的成绩进行排序输出(升序)
SELECT * FROM student
       WHERE `name` LIKE '李%'
       ORDER BY math

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值