DML(Data Manipulation Language、数据操作语言),用于添加、删除、更新和查询数据库记

****************************************************************************************
DML(Data Manipulation Language、数据操作语言),用于添加、删除、更新和查询数据库记
录,并检查数据完整性。
主要的语句关键字包括 INSERTDELETEUPDATESELECT 等。
SELECT是SQL语言的基础,最为重要。

数据导入指令;source d:\xxxx.sql 
1. 基本的select 语句
    select 标识选择哪些列
    FROM 标识从哪个表中选择
    选择全部列: select * from students;
    选择特定的列: select id, last_name from students; 
    列的别名:  select last_name ln from students; -- ln 就是别名
    去除重复行:select DISTINCT last_name from students; -- DISTINCT 其实是对后面所有列名的组合进行去重
    我们需要保证表中的字段、表名等没有和保留字、数据库系统或常用方法冲突。如果真的相同,请在SQL语句中使用一对``(着重号)引起来。
2. 显示表结构
    desc 表名称 
WHERE 语句
    select 字段1,字段2 FROM 表名 where 过滤条件
3. 排序数据
3.1 排序规则
    使用order by 子句排序
        ASC:升序;DESC:降序 ;ORDER BY 子句在select 语句的结尾
        select id,last_name, email from students ORDER BY id DESC ;
        SELECT id, last_name,email from students order by class_id, id ASC; 
        -- 多表排序:在对多列进行排序的时候,首先排序的第一列必须有相同的列值,才会对第二列进行排序。如果第
    --  列数据中所有值都是唯一的,将不再对第二列进行排序。
3.2 分页 
    LIMIT 位置偏移量,行数
    *公式:(当前页数-1*每页条数,每页条数
    -- 前10条记录:
    SELECT * FROM 表名 LIMIT 0,10;或者 SELECT * FROM 表名 LIMIT 10;
    -- 第11至20条记录:
    SELECT * FROM 表名 LIMIT 10,10;
    -- 第21至30条记录:
    SELECT * FROM 表名 LIMIT 20,10;
    注意:LIMIT 子句必须放在整个SELECT语句的最后!
4. REGEXP 运算符
    (1)‘^’匹配以该字符后面的字符开头的字符串。
            查询last_name 以字母a 为开头的记录:
            select * from students WHERE last_name REGEXP '^a';
    (2)‘$’匹配以该字符前面的字符结尾的字符串。
            查询last_name 以字母b 为开头的记录:
            select * from students WHERE last_name REGEXP 'b$';
    (3)‘.’匹配任何一个单字符。
            查询last_name中包含x和y的记录:
            select * from students WHERE last_name REGEXP 'x.y';
    (4)“[...]”匹配在方括号内的任何字符。例如,“[abc]”匹配“a”或“b”或“c”。为了命名字符的范围,使用一个‘-’。“[a-z]”匹配任何字母,而“[0-9]”匹配任何数字。
            查找last_name字段中包含字母‘o’或者‘t’的记录,SQL语句如下:
            select * from students WHERE last_name REGEXP '[ot]';
    (5)‘*’匹配零个或多个在它前面的字符。例如,“x*”匹配任何数量的‘x’字符,“[0-9]*”匹配任何数量的数字,而“*”匹配任何数量的任何字符。
   (6)使用{n,}或者{n,m}来指定字符串连续出现的次数 “字符串{n,}”表示至少匹配n次前面的字符;“字符串
      {n,m}”表示匹配前面的字符串不少于n次,不多于m次。例如,a{2,}表示字母a连续出现至少2次,也可以大于2次;a{2,4}表示字母a连续出现最少2次,最多不能超过4次。
             在fruits表中,查询f_name字段值出现字母‘x’至少2次的记录,SQL语句如下:
             SELECT * FROM fruits WHERE f_name REGEXP 'x{2,}';
             在fruits表中,查询f_name字段值出现字符串“ba”最少1次、最多3次的记录,SQL语句如下:
             SELECT * FROM fruits WHERE fname REGEXP 'ba{1,3}';
    5. 创建和管理表
    5.1 一条数据存储过程: 创建数据库-->确认字段--> 创建数据表--> 插入数据
            从Mysql 数据库系统从大到小依次为: 数据库服务器,数据库,数据表,数据表的行和列
    5.2 创建和管理数据库
            方式一:创建数据库:create database 数据库名;
            方式二:创建数据库并指定字符集:create database 数据库名 character set 字符集
            方式三:判断数据库是否存在,不存在则创建数据库(推荐 )create DATABASE if not EXISTS 数据名
    5.3 使用数据库
            查看当前所有数据库: show databases;
            查看当前正在使用的数据库:select database atguigudb;
            查看指定数据库下所有的表:show tables from 数据库名
            使用/切换数据库:USE 数据库名;
    5.4 修改数据库
            更改数据库字符集:ALTER database 数据库名 character set 字符集 #比如:gbk,utf8. 
            删除指定数据库: drop database 数据库名;
            删除指定数据库 :drop database if exists 数据库名;
    6. 创建表 
    6.1.1 创建表方式一
            create table [if not exists] 表名(
            字段1,数据类型 [约束条件][默认值],
            字段2,数据类型 [约束条件][默认值],
            字段3,数据类型 [约束条件][默认值],
            ......
            表约束条件
            );-- 加上了IF NOT EXISTS关键字,则表示:如果当前数据库中不存在要创建的数据表,则创建数据表;如果当前数据库中已经存在要创建的数据表,则忽略建表语句,不再创建数据表。
            必须指定:表名 列名(或字段名),数据类型,长度
            可选指定:约束条件,默认值
            create table employee1(
            id int primary key,
            last_name varchar(25),
            email varchar(35),
            hire_date DATE,
            salary double );
            desc employee1
6.1.2 创建表方式二
            使用AS subquery 选项
            指定的列和子查询中的列要一一对应,通过列名和默认定义列
            CREATE table emp1 as SELECT * from employees; d
            CREATE table emp2 as select employee_id,last_name,salary*12 annsal from employees where department_id = 80;
          SELECT * from emp2;
6.2 使用alter table 语句修改已经存在的数据表的结构
6.2.1 追加列
            alter table 表名 add column字段名 字段类型;
            alter table emp2 add hire_date DATE;
            修改列
            alter table 表名 modify column 字段名1 字段类型
            alter table emp2 modify last_name VARCHAR(30);
            重命名列
            alter table 表名 change column 列名 新列名 新数据类型
            alter table emp2 change last_name `name` varchar(25);
            删除一个列
            alter table 表名 drop [column]字段名
            alter table emp2 drop annsal;
6.3   删除表
            drop table if exists 表名
            drop table if exists emp1 
6.4   清空表
            truncate table -- 删除表中所有数据,释放表的存储空间 不建议使用
            truncate语句不能回滚,而使用delete 语句删除数据可以回滚。
        
7 数据处理之增删改
7.1 插入数据
        方式一:values的方式添加,使用这种语法一次只能向表中插入一条数据
        情况1 :为表中的所有字段按默认顺序插入数据,插入的值的顺序必须和数据表中定义时的顺序一致
        insert into 表名 VALUES(value1, value2,value3......)
        情况2 指明要添加的字段 (推荐)
        INSERT INTO emp1(id,hire_date,salary,`name`)
        VALUES(2,'1999-09-09',4000,'Jerry');
        # 说明:没有进行赋值的hire_date 的值为 null
        INSERT INTO emp1(id,salary,`name`)
        VALUES(3,4500,'shk');
        情况3 同时插入多条记录 (推荐)
        INSERT INTO emp1(id,NAME,salary)
        VALUES(4,'Jim',5000),(5,'张俊杰',5500);
7.2 更新数据
        使用update语句更新数据
        update employees 
        set department_id = 70 where employee_id = 113; 
7.3 删除数据
        delete from table_name where <condition>
        delete from students where id = 3;
        如果省略where 的子句,则表中的全部数据将全被删除
        delete from stu1

 

posted @ 2024-04-02 18:42  正霜霜儿  阅读(35)  评论(0编辑  收藏  举报