Mysql笔记+sql语句
来源:互联网 发布:三天打鱼两天晒网c语言 编辑:程序博客网 时间:2024/05/22 12:59
- Mysql数据库
- Demo
- select * from Student limit 1; 1表示要查询的 行数,关键字limit; select * from Student where name like 'y%';查询包含以y开头的记录,关键字like %通配符(y后面不管是什么都显示) 通配符描述%替代一个或多个字符 _仅替代一个字符 [charlist]字符列中的任何单一字符 [^charlist]或者[!charlist]不在字符列中的任何单一字符 Persons" 表中选取名字的第一个字符之后是 "eorge"的人: SELECT * FROM Persons WHERE FirstName LIKE '_eorge' Persons" 表中选取居住的城市以 "A"或 "L"或 "N"开头的人:
- SELECT * FROM Persons WHERE City LIKE '[ALN]%’; Persons" 表中选取居住的城市不以 "A"或 "L"或 "N"开头的人:
- SELECT * FROM Persons WHERE City LIKE ‘[!ALN]%’; 查询多个值:SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,...)
- 四.子查询
- 多表查询
- select * from emp,department;多表用逗号隔开如果是 主外键 关系 表 查询出来的 数据 会 重复. Select * from employe,department where employe.d_id= department.id; 查询出来的 数据 不会重复 . selectname,department.id,department_name from employe,department where= employe.d_id= department.id;查询两个表的某个字段 . select e.id,name,department_name from employees as e,department as d where e.d_id=d.id; (as d 表示 表的别名). 内连接:语法:from开始,表1与表2进行笛卡尔积,每匹配一行的数据,就会通过on后条件判断
- 是否成立,就将该行匹配的信息存放到临时表,否则不存放.SELECT * FROM employe AS e INNER JOIN deparment AS d ON e.d_id = d.id; selectemployees.id,name,department _name,department_dec from employees INNER JOIN department ON employees.d_id=department.id order by employees.name; 左连接(LEFT JOIN):SELECT employees.id, name, department.department_name
- FROM employees
- LEFT JOIN department
- ON employees.d_id=department.id
- ORDER BY employees.name;右连接:RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。select employees.id,name,department.department_name from employees RIGHT JOIN department ON employees.d_id=department.id ORDER BY employees.name;左外连接:左表中所有的记录都会被放到结果`集中,无论是否在右表是否存在匹配记录
- 语法:select 列 from 表1 left outer join 表2 on 表1.列=表2.列
- [left outer join 表3 on…]select e.name,d.department_name from employees as e LEFT OUTER JOIN department as d On e.d_id=d.id;右外连接:不管是否成功匹配连接条件都会返回右表中的所有记录
- 语法: select 列 from 表1 right outer join 表2 on 表1.列=表2.列
- [right outer join 表3 on…]SELECT e.name,d.department_name FROM employees AS e RIGHT OUTER JOIN department AS d ON e.d_id = d.id;IN(1,1);条件值 或者 ORBETWEEN 800 and 900条件 800-900的值GROUP BY dept_no 按dept_no 分组 HAVING MAX(e_salary)条件
- 多表查询
- 七.存储过程
- 1.简介
- 存储过程就是sql语句的集合 函数 方法我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。
- 一个存储过程是一个可编程的函数,它在数据库中创建并保存。它可以有SQL语句和一些特殊的控制结构组成。当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟。它允许控制数据的访问方式。
- 2.操作
- 1.DILIMITER // //是分隔符 将;结束符号变成//2.创建无参存储过程:CREATE PROCEDURE procename()BEGINsql 语句END//将//换成;DILINITER ;3.删除存储过程 DROP PROCEDURE sp_name;4.调用存储过程CALL sp_name();5.创建带输入参数的 存储过程
- 以下 存储过程能够输入的学生号 查出改学生的信息 参数sid 代表参数 in代表 输入参数create procedure getStudentByid(in sid int)beginselect * from student where student id = sid;end//设置参数 :set @sid = 1;调用存储过程 : call getStudent(@sid);
- 6.创建带输出参数的 存储过程create procedure getMaxage(out Max int)beginselect Max(age) INTO Max from student;end//调用 存储 过程:call getMaxage(@Max);查看 输出参数:select @Max;7.带输入 输出参数create procedure inout(INOUT p int)beginselect p;set @p=10;select p;end//set @2=10;call inout(@p);8.多个参数 create procedure p_all(INT p int ,OUT c int)beginselect Max(age) INTO c from student where sno=p;end//set @p=2;call p_all(@p,@c);select @c;
- 1.简介
- 一.mysql概述
- mysql介绍
- 关系型数据库
- oracle公司
- 开源项目(企业版和社区版本)
- mysql安装
- Next,Next,Next
- 登录和退出
- Mac 登录未加入环境变量 进入终端需要加上 PATH="$PATH":/usr/local/mysql/bin 登录:mysql -u root -p , mysql -u用户 -p密码 -P端口 -h主机 exit 退出! (Windows)
- 目录结构
- mysql介绍
- 五.Mysql函数
- Mysql 函数内建SQL函数的语法是:SELECT function(列) FROM USER;select SUM(id) from User;查询User表中id的 和.SELECT AVG(id) FROM USer;返回 某列的平均值
- 二.数据类型,权限约束
- 数据类型:
- 日期和时间数据类型
- MySQL数据类型
- 含义
- date
- 3字节,日期,格式:2014-09-18
- time
- 3字节,时间,格式:08:42:30
- datetime
- 8字节,日期时间,格式:2014-09-18 08:42:30
- timestamp
- 4字节,自动存储记录修改的时间
- year
- 1字节,年份
- 数值数据类型
- 整型
- MySQL数据类型
- 含义(有符号)
- tinyint
- 1字节,范围(-128~127)
- smallint
- 2字节,范围(-32768~32767)
- mediumint
- 3字节,范围(-8388608~8388607)
- int
- 4字节,范围(-2147483648~2147483647)
- bigint
- 8字节,范围(+-9.22*10的18次方)
- 浮点型
- MySQL数据类型
- 含义
- float(m, d)
- 4字节,单精度浮点型,m总个数,d小数位
- double(m, d)
- 8字节,双精度浮点型,m总个数,d小数位
- decimal(m, d)
- decimal是存储为字符串的浮点数
- 字符串数据类型
- MySQL数据类型
- 含义
- char(n)
- 固定长度,最多255个字符
- varchar(n)
- 可变长度,最多65535个字符
- tinytext
- 可变长度,最多255个字符
- text
- 可变长度,最多65535个字符
- mediumtext
- 可变长度,最多2的24次方-1个字符
- longtext
- 可变长度,最多2的32次方-1个字符 保存Boolean型 tinyint 0,1
- 约束
- 主键约束 不重复, 长度约束,不能为空约束,自动增长约束(int),外键约束
- 权限
- 设置用户访问数据库的 权限 增加 删除 改查
- 数据类型:
- 三.操作数据库和表
- 中文乱码处理:
- Mac 拷贝 my-default.cnf文件 到User外的文件目录 ,当前文件夹下无法编辑,复制my-default.cnf 将my-default.cnf的 内容 到 my.cnf 将需要的 更改的 代码行 添加到 尾端 set character_set_client=utf8;
- setcharacter_set_connection=utf8;
- set character_set_database=utf8;
- set character_set_results=utf8;
- set character_set_server=utf8;
- set character_set_system=utf8;
- set collation_connection=utf8;
- set collation_database=utf8;
- set collation_server=utf8; win 直接修改my.ini配置文件 修改编码即可
- 增删改查
- create databases 数据库名; Show databases;显示数据库 use数据库名;进入数据库 显示数据库结构 desc 查看表结构 show tables; 显示表 删除数据库:drop database 名字; drop table 名; show variables like 'char%'; MySql 修改表结构语句
- ALTER TABLE:添加,修改,删除表的列,约束等表的定义。
- 查看列:desc 表名;
- 修改表名:alter table t_book rename to bbb;
- 添加列:alter table 表名 add column sex varchar(30);
- 删除列:alter table 表名 drop column 列名;
- 修改列名MySQL: alter table bbb change nnnnn hh int;
- 修改列名SQLServer:exec sp_rename't_student.name','nn','column';
- 修改列名Oracle:alter table bbb rename column nnnnn to hh int;
- 修改列属性:alter table 表名 modify name varchar(22);
- 显示数据库下所以表:show tables;
- 插入数据
- INSERT INTO `db1606`.`course` (`id`, `number`, `name`, `discription`, `time`) VALUES ('2', '1002', 'Java', 'java服务端开发', '189');
- 删除数据
- DELETE FROM `db1606`.`course` WHERE `id` = '1' AND `number` = '1002' AND `name` = 'ANDO' AND `discription` = '安卓编程' AND `time` = '189';
- 中文乱码处理:
- 六.索引
- 1.什么是索引
- 索引
- 使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构,例如 employee表的姓(lname)列。如果要按姓查找特定职员,与必须搜索表中的所有行相比,索引会帮助您更快地获得该信息。
- 索引提供指向存储在表的指定列中的数据值的指针,然后根据您指定的排序顺序对这些指针排序。数据库使用索引的方式与您使用书籍中的索引的方式很相似:它搜索索引以找到特定值,然后顺指针找到包含该值的行。
- 在数据库关系图中,您可以在选定表的“索引/键”属性页中创建、编辑或删除每个索引类型。当保存索引所附加到的表,或保存该表所在的关系图时,索引将保存在数据库中。
- 注意 并非所有的数据库都以相同的方式使用索引。作为通用规则,只有当经常查询索引列中的数据时,才需要在表上创建索引。索引占用磁盘空间,并且降低添加、删除和更新行的速度。在多数情况下,索引用于数据检索的速度优势大大超过它的不足之处。但是,如果应用程序非常频繁地更新数据或磁盘空间有限,则可能需要限制索引的数量。
- 可以基于数据库表中的单列或多列创建索引。多列索引使您可以区分其中一列可能有相同值的行。
- 如果经常同时搜索两列或多列或按两列或多列排序时,索引也很有帮助。例如,如果经常在同一查询中为姓和名两列设置判据,那么在这两列上创建多列索引将很有意义。
- 确定索引的有效性:
- 检查查询的 WHERE 和 JOIN 子句。在任一子句中包括的每一列都是索引可以选择的对象。
- 对新索引进行试验以检查它对运行查询性能的影响。
- 考虑已在表上创建的索引数量。最好避免在单个表上有很多索引。
- 检查已在表上创建的索引的定义。最好避免包含共享列的重叠索引。
- 检查某列中唯一数据值的数量,并将该数量与表中的行数进行比较。比较的结果就是该列的可选择性,这有助于确定该列是否适合建立索引,如果适合,确定索引的类型
- 索引就是将某个字段 放入 一个特定的 一个表中 查询的 时候从而 提高 查询速度效率
- 2.索引的操作
- CREATE INDEX index_name ON employee(e_name);//创建索引.SHOW INDEX FROM employee;//查看索引DROP INDEX index_name ON employee;//删除索引EXPLAIN SELECT * FROM employee WHERE e_name=‘王二’;//查看索引解释
- 1.什么是索引
- Demo
0 0
- Mysql笔记+sql语句
- MySQL及SQL语句笔记
- MySQL数据库 SQL语句 笔记
- mysql sql 语句学习笔记
- MySql复习SQL语句笔记一
- MySQL学习笔记(一)--SQL语句
- MySql 学习笔记一:SQL语句优化
- [学习笔记]MySql之SQL语句优化
- MySQL数据库操作及SQL语句笔记
- mysql增改查的sql语句学习笔记
- MySql复习SQL语句笔记二----高级篇
- Effective MySQL之SQL语句最优化学习笔记1
- Effective MySQL之SQL语句最优化学习笔记2
- MySQL sql 语句优化资料和学习笔记
- MySQL数据库学习笔记(三)----基本的SQL语句
- MySQL笔记-执行SQL语句的几种方式
- MySQL学习笔记(一):基础常用SQL语句
- myeclipse链接mysql以及简单的sql语句操作,笔记
- zabbix邮件报警脚本
- Netty框架(二)————NIO编程
- 【NOIP2010】乌龟棋 dp
- Session缓存和Cache缓存
- 不占用windows用户对象的定时器
- Mysql笔记+sql语句
- UVA 1471 Defense Lines 单调队列 -
- Spring配置文中解析xsd文件版本
- LWIP[转]为什么ping时间会越来越长
- 【模板】K短路
- apache下用expires_module让浏览器缓存静态文件
- LWIP[转]LwIP BUG之ARP缓存
- session运行机制
- 离散时间系统的相位响应