目录
修改表
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 empMODIFY job VARCHAR (60) NOT NULL DEFAULT ''
AFTER TABLE empDROP sex
#表明改为employee
RENAME TABLE emp TO employee
#修改表的字符集utf8
AFTER TABLE employer CHARSET utf8#列名name修改为user-name
AFTER TABLE employeeCHANGE `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 employeeVALUES (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 = 3000WHERE user_name = '小妖怪'
SELECT * FROM employee;
#3.创建老妖怪
INSERT INTO employeeVALUES (100,'老妖怪','1990-11-11','1990-11-11 11:11:11','捶背的',4000,'大王叫我来捶背')
SELECT * FROM employee;
#4.将老妖怪的薪水在原有基础上增加1000
UPDATE employeeSET salary = salary + 1000WHERE 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 studentWHERE `name` = "赵云"
#查询英语成绩大于90分的同学
SELECT * FROM studentWHERE english > 90
#查询总分大于200分的所有同学
SELECT * FROM studentWHERE (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 studentWHERE english <=90 AND english >=80
SELECT * FROM studentWHERE english BETWEEN 80 AND 90 #查询数学成绩为89,90,91的同学
SELECT * FROM studentWHERE math = 89 OR math = 90 OR math = 91
SELECT * FROM studentWHERE 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 studentWHERE `name` LIKE '李%'ORDER BY math