**************************************************************************************** DML(Data Manipulation Language、数据操作语言),用于添加、删除、更新和查询数据库记 录,并检查数据完整性。 主要的语句关键字包括 INSERT 、 DELETE 、 UPDATE 、 SELECT 等。 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
标签:last,name,Language,数据库,DML,查询数据库,table,id,select From: https://www.cnblogs.com/clairedandan/p/18111281