一、DML——数据操作语言
DML主要用于对数据库表中数据进行增删改等操作
1.增加(插入)共三种方式
1.1语法格式:insert into 表名 (列名) value (对应的数据)
1.2语法格式:insert into 表名 set 列名=“对应的数据”
1.3(批量插入数据)语法格式:insert into 表名 (列名) value (对应的数据)
value (对应的数据)
代码:
INSERT INTO stu(NAME,gender,birthday,height,phone,address,reg_time)
VALUE ('赵六','男','2002-06-05',1.75,'1555','西安',NOW())
-- 添加数据的第二种方式
INSERT INTO stu SET NAME='王五',gender='男',height=1.77,phone='15666',address='杭州',reg_time=NOW()
-- 批量插入数据,可以添加更多行的数据
INSERT INTO stu(NAME,gender,birthday,height,phone,address,reg_time)
VALUES ('赵七','男','2002-06-05',1.75,'15554','西安',NOW()),
('赵八','男','2002-06-05',1.75,'15552','西安',NOW())
2.修改
语法格式:update 表名 set 列名=“对应的数据”
-- 修改表数据,切记要加是修改条件:WHERE num=2011
UPDATE stu SET gender='女',birthday='2002-06-04',address='陕理工' WHERE num=2011
3.删除
语法格式:drop table 表名 (删除表结构)
语法格式:delete from 表名(删除表中数据)
-- 删除表数据
DELETE FROM student
-- 删除表结构
DROP TABLE student
4.添加列
语法格式:alter table 表名 add column 列名 列名的数据类型
-- 在学生表中添加年级的id
ALTER TABLE stu ADD COLUMN gradeid INT
二、DQL——数据查询语言
DQL主要对数据进行查询操作
1.基本查询语法
select 查询的列 from 表名 where 条件 分组 分组后条件 排序 行数限制
注:*代表查询表中所有信息
查询中可以出现常量,可以进行算术运算,注意+不能用作字符串连接符
字符串连接函数为concat(str1,str2)
SELECT * FROM stu
-- 查询所需要的的列的信息
SELECT NAME ,gender,height,phone FROM stu
-- 查询中可以出现常量,可以进行算术运算,注意+不能用作字符串连接符
-- 字符串连接函数为concat(str1,str2)
SELECT 100,num+100,CONCAT('姓名',NAME),phone FROM stu
2.去重
去除重复数据(注意表中查询结果所有列相同的数据才能称为重复数据)
select distinct 列名 from 表名
两个张三查询到的信息不完全相同,无法删除
INSERT INTO stu(NAME,phone,address)
VALUE('张三','193','西湖')
SELECT DISTINCT num,NAME,phone,address FROM stu -- 查询出的学号与地址不同
SELECT DISTINCT NAME,address FROM stu -- 查询结果中的姓名,地址相同,删除成功
3.单行函数
-- 查询结果处理 - 单行函数(对表中的每一行都进行操作),单行函数主要分为四大部分:
-- 字符函数 求所查询的列名的长度
SELECT LENGTH(NAME),CHAR_LENGTH(NAME) FROM stu-- 计算表中每一行姓名的长度,length()以字节为单位,一个汉字三个字节;char_length()以字符为单位
-- concat() 字符拼接韩束
SELECT CONCAT(NAME,":",gender) FROM stu-- 注意CONCAT(NAME,":",gender)一个concat()所拼接的是一列
INSERT INTO stu SET NAME='nc',phone='549',address='长安'
INSERT INTO stu SET NAME='bd',phone='540',address='长安'
DELETE FROM stu WHERE num='2017'
INSERT INTO stu SET NAME='Bd',phone='540',address='长安'
-- upper()将英文字母转为大写,lower()将英文字母转为小写
SELECT UPPER(NAME),LOWER(NAME)FROM stu
-- substring(列名,起始位置,截取长度) 截取字符串函数,注意SQL中长度从1开始
SELECT SUBSTRING(NAME,1,1) FROM stu
-- instr(列名,字符)查找列名中字符首次出现的位置
SELECT INSTR(NAME,'d')FROM stu
-- trim() 默认是去除字符串前后空格功能,注意字符串中间空格无法去掉,trim(字符 from 列名)也可以取出字符串前后指定字符
SELECT CHAR_LENGTH(TRIM(NAME)) FROM stu
SELECT TRIM(NAME)FROM stu
SELECT TRIM('a' FROM NAME)FROM stu
-- lpad(列名,指定填充的长度,指定填充的字符)将字符串用指定字符填充成指定长度,从左边开始填充
SELECT LPAD(NAME,5,'a')FROM stu
-- rpad(列名,指定填充的长度,指定填充的字符)将字符串用指定字符填充成指定长度,从右边开始填充
SELECT LPAD(NAME,5,'a'),RPAD(NAME,5,'a')FROM stu
-- replace(列名,指定字符,将要被替换的字符)
SELECT REPLACE(NAME,'赵','王')FROM stu
4.逻辑函数
-- 逻辑函数
-- 基本格式:case when 条件 then 结果1 else 结果2 end 可以有多个when
-- 如果查询的结果满足条件返回结果一,不满足则返回结果二
SELECT num,NAME,gender ,
(CASE WHEN height>=1.8 THEN '大高个子'
WHEN height>=1.7 THEN'高个子'
ELSE '低个子' END) -- 逻辑函数
AS height -- 将结果所生成的列称为height
FROM stu
-- ifnull(列,’默认值‘)如果列中信息为空,则返回默认值
SELECT num,NAME,gender,
IFNULL(height,'信息未录入')
AS height
FROM stu
-- if(条件,成立结果,不成立结果)
SELECT num,NAME,gender,
IF(height>=1.8,'高个子','低个子')AS height
FROM stu
-- 数学函数
-- round四舍五入 ceil向上取整 floor向下取整
SELECT ROUND(height),CEIL(height),FLOOR(height) FROM stu
-- truncate(列名,保留小数点后几位)
SELECT TRUNCATE(height,1) FROM stu
-- mod(除数,被除数) 求余数,rand()获取o-1之间的随机数
SELECT MOD(height,3),RAND(height) FROM stu