SQL语言——DML与DQL

一、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
 

你可能感兴趣的:(数据库开发)