Mysql笔记
- 格式:docx
- 大小:26.16 KB
- 文档页数:5
MySQL个人学习笔记一、mysql常见的数据类型:int(8) 整形,float(5,1) 浮点型,规定插入的值不超过5位数字,小数点后面带两位数字且小数点超出后会四舍五入,double(5,2)一样是浮点型decimal(5,2) 一样是浮点型。
char(8)字符型,varchar(8)可变字符型。
date,values(‘2014-04-23’)或(20104423)time,values(‘12:30:50’)或(123050)year,values(2014)datetime,values(‘1993-03-12 12:30:12‘)或(012)null 类型。
表示什么都没有。
null 不等于 ' ' ~~~。
二、mysql常见的运算符:+、-、*、/、%、<,>,=,>=,<=,!=,<=>(用于安全等于null值。
no <=> null)NOT 或 !,AND 或 && ,OR 或 ||,三、mysql常见的函数:ABS(X)返回x的绝对值。
CURDATE() 返回当前的日期 2014-04-23CURTIME() 返回当前的时间 19:17:13NOW() 返回当前的日期和时间 2014-04-23 19:17:48聚合函数:AVG(COLUME) 求该列的平均值, COUNT(COL) 计算列中非null的行数,MIN(COL)求该列的最小值,MAX(COL) 求该列的最大值,SUM(COL) 求该列值的和,COUNT(*) 计算表中所有的行数,包括null值。
四、数据库和表:1、创建数据库。
create database db1; 或着 create databse if not exists db1;2、选择需要的数据库。
use db1;3、删除数据库。
drop database db1; 或者 drop databse if exists db1;4、创建表:create table table_name (name char(2),id int(2),....)type=xxxx;4.1 字段约束:首先 null 不等于 ' 'null:当某列的约束为null时,该字段的值可以插入null,表示没有数据。
MySQL必知必会笔记(一)基础知识和基本操作第一章了解MySQL数据库保存有组织的数据的容器。
(通常是一个文件或一组文件)人们经常使用数据库这个术语代替他们使用的软件。
这是不正确的,确切的说,数据库软件应称为DBMS(数据库管理系统),数据库是通过DBMS创建和操纵的容器。
漱口可以是保存在硬件设备上的文件,但也可以不是。
你使用DBMS来代替自己访问数据库。
表表是一种结构化的文件可用来存储某种特定的类型的数据。
某种特定类型数据的结构化清单。
模式关于数据库和标的布局及特性的信息列表中的一个字段。
表由列组成。
列中存储着表里某部分的信息。
数据类型所容许的数据的类型。
每个表列都有相应的数据类型,它限制(或容许)该列中存储的数据。
行表中的一个记录主键一列(或一组列),其值能够唯一区分表中的每个行。
虽然不是必须的,但是一般都建立主键。
便于以后的数据管理表中任何列都可以作为主键,只要满足以下条件:1 任意两行都不具有相同的主键值。
2 每个行都必须有一主键值(主键值不允许为NULL)主键的最好习惯:不更新主键列的值不重用主键列的值不在主键列中使用可能会更改的值什么是sqlSql是结构化查询语言的缩写。
Sql是一种专门用类与数据库通信的语言。
第二章 MySQL简介什么是Mysql Mysql是一种DBMS,即它是一种数据库软件。
Mysql版本主要更改4-——InnoDB引擎,增加了事务处理、并、改进全文搜索等支持4.1——对函数库、子查询、集成帮助等的重要增加、5——存储过程、触发器、游标、试图等。
第三章使用mysql连接主机名端口一个合法用户用户口令Mysql -u root -p -h myserver -P 9999选择数据库可使用USE关键字,mysql语言组成部分的一个关键字,绝不要使用关键字命名一个表或列USE dataname;显示数据库列表SHOW DATABASES;一个数据库内的表的列表(USE进入数据库的情况下)SHOW TABLES;SHOW也可以用来显示表列SHOW COLUMNS FROM column;DESCRIBE 是SHOW COLUMNS的一种快捷方式;DESCRIBE cust;其他的SHOW语句SHOW STATUS 显示广泛的服务器状态信息SHOW CREATE DATABASE 显示创建特定数据库的MYSQL语句SHOW CREATE TABLE 显示创建特定表的MYSQL语句SHOW GRANTS 显示授权用户的安全权限SHOW ERRORS 显示服务器的错误信息SHOW WARNINGS 显示服务器的警告信息MySQL必知必会笔记(二)SELECT语句检索排序过滤通配符搜索正则表达式搜索第四章检索数据检索单列SELECT columnOne FROM table;检索多列SELECT columnOne,columnTwo,columnThire FORM table;检索所有列SELECT * FROM products; //一般,除非你确实需要表中的每个列,否则最好不要用*通配符检索不同的行检索出来的数据不重复DISTINCT关键字,顾名思义返回不同的值SELECT DISTINCT columnOne FROM table; //检索出来的columnOne 没有重复值DISTINCT关键字应用于所有列而不仅是前置它的列SELECT DISTINCT vend_id,prod_price......要求vend_id,prod_price这两列都不出现重复的值限制结果条数sql语句后面加入下面sql语句LIMIT 5 显示结果的前5条LIMIT 3,4从行3开始的后4行LIMIT 4 OFFSET 3 从行3开始的后4行第五章排序检索数据子句 Sql语句是由子句构成,有些子句是必须的,有些事可选的。
mysql笔记Mysql的第一次回忆Mysql的总的概括可以分为两个部分:三建、四句。
三建指的是:建库、建表格、建约束。
四句指的是:添加、删除、修改、查询。
数据库:存放数据的库,由表、关系、以及操作对象组成,它存放在表中。
实体:行,客观存在,可以被描述的事物。
在java中称为对象。
又称之为记录。
属性:列,事物的特征。
又称之为字段。
数据库服务器:在机器上安装了一个数据库管理程序,一个数据库服务器可以管理多个数据库,一个数据库可以创建多张表。
三建建库:使用关键字create database 库名;建表:使用关键字create table 表名(属性1 类型primary key ;属性2 类型,属性3 类型);在创建表的时候,要注意使用关键字“use 库名”使用指定的数据库。
在创建表时,要根据需要保存的数据创建相应的列,并且根据其类型定义相应的类型。
Mysql中的数据类型:int、char (固定的字符类型)、varchar(可变得字符类型)、boolean 、float(m,d)m代表指定显示的长度,d代表指定的小数位数、text、DateTime、timeStamp时间搓可以自动记录update 、insert的时间。
(时间的规定:从某个时间到现在所经历的毫秒数。
)建约束作用:保障传入数据的数据有效性和准确性。
约束分为:主键约束、外键约束、唯一值约束、非空、检查约束(在mysql中没用)、默认值约束、标识列。
主键约束:在属性后面加上关键字primary key,作用是保证记录的唯一性。
它的值不能重复,也不能为null。
外键约束:在表的外键引用主表的主键。
通过约束后,在进行删除操作时,必须先删子表,再删父表。
在进行更新的时候,必须先更新父表,在更新子表。
不过加入级联删除删除后可以省去删除的麻烦(on delete cascade),加入级联更新后可以省去更新的麻烦(on update cascade)。
MySQL自学笔记1. 字符串mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello'; +-------+---------+-----------+--------+--------+| hello | "hello" | ""hello"" | hel'lo | 'hello |+-------+---------+-----------+--------+--------+mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello"; +-------+---------+-----------+--------+--------+| hello | 'hello' | ''hello'' | hel"lo | "hello |+-------+---------+-----------+--------+--------+2. 数据库、表、索引、列和别名如果标识符是一个受限掉的词或包含特殊的字符,当使用它时,必须以一个` (backtick) 来引用它。
mysql> SELECT * FROM `select` WHERE `select`.id > 100;句法意味着表在当前数据库中。
宋红康mysql高级篇笔记MySQL 是一款广泛应用于互联网领域的关系型数据库管理系统。
它的高级功能和优势使得它成为互联网开发者的首选。
本文将分享一些关于 MySQL 高级篇的笔记,涵盖了一些互联网技术介绍、互联网商业和技术应用方面的内容。
一、索引优化索引是提高数据库查询效率的重要手段之一。
在 MySQL 中,使用合适的索引可以显著提升查询性能。
首先,我们需要了解不同类型的索引,如主键索引、唯一索引和普通索引等。
其次,根据具体应用场景,我们可以使用覆盖索引、前缀索引、联合索引等技术进行索引优化。
此外,我们还要注意索引的维护和管理,及时进行索引的重建和优化。
二、查询优化在互联网应用中,查询是最常见的数据库操作之一。
如何编写高效的查询语句,能够快速地获取所需的数据,是每个开发者都应该关注的问题。
本节将介绍一些查询优化的技巧,例如避免使用通配符查询、合理使用 LIMIT 关键字、使用 EXPLAIN 分析查询执行计划等。
三、事务管理事务是保证数据库操作一致性和完整性的重要手段。
MySQL 支持事务的 ACID 特性,可以确保多个操作的原子性、一致性、隔离性和持久性。
本节将详细介绍如何使用事务管理,包括事务的开启、提交和回滚,以及事务并发控制的方法。
四、高级数据操作除了基本的增删改查操作,MySQL 还提供了一些高级数据操作功能,方便开发者完成复杂的数据处理任务。
本节将介绍如何使用子查询、联合查询、分组查询和多表操作等技术,实现更灵活和高效的数据操作。
五、存储引擎选择MySQL 支持多种存储引擎,如 InnoDB、MyISAM、Memory 等。
不同的存储引擎具有不同的特点和适用场景。
本节将比较各种存储引擎的优缺点,并给出存储引擎选择的建议。
六、高可用性和容灾备份在互联网应用中,数据库的高可用性和容灾备份是非常重要的。
本节将介绍如何使用主从复制、读写分离、故障转移和数据备份等技术,提高数据库的稳定性和可用性。
mysql基础笔记”MySQL是一种开源的关系型数据库管理系统,被广泛应用于Web 应用程序的数据存储和管理。
下面是关于MySQL基础的一些笔记:1. 数据库,MySQL是基于数据库的,数据库是一个用于存储和管理数据的容器。
可以创建多个数据库,每个数据库可以包含多个表。
2. 表,表是数据库中的一个组成部分,用于存储数据。
表由行和列组成,每一列代表一个数据字段,每一行代表一条记录。
3. 字段,字段是表中的列,用于存储特定类型的数据。
每个字段都有一个数据类型,如整数、字符串、日期等。
4. 主键,主键是表中的一列或一组列,用于唯一标识表中的每一行。
主键的值不能重复,且不能为空。
5. 外键,外键是表中的一列,用于建立表与表之间的关系。
外键与其他表中的主键相关联,用于确保数据的完整性和一致性。
6. 查询,查询是从数据库中检索数据的操作。
可以使用SQL语句来编写查询,SQL是结构化查询语言。
7. 插入,插入是向表中添加新记录的操作。
可以使用INSERT语句来插入数据。
8. 更新,更新是修改表中现有记录的操作。
可以使用UPDATE语句来更新数据。
9. 删除,删除是从表中删除记录的操作。
可以使用DELETE语句来删除数据。
10. 索引,索引是对表中的一列或多列进行排序的结构,用于加快数据的检索速度。
可以根据索引进行快速的查询操作。
11. 视图,视图是基于一个或多个表的查询结果,可以像表一样使用。
视图可以简化复杂的查询操作,提供更方便的数据访问方式。
12. 事务,事务是一组数据库操作的集合,要么全部执行成功,要么全部回滚。
事务可以确保数据的一致性和完整性。
13. 存储过程,存储过程是一组预编译的SQL语句,可以在数据库中进行复杂的操作。
存储过程可以提高数据库的性能和安全性。
14. 触发器,触发器是与表相关联的特殊类型的存储过程,可以在插入、更新或删除数据时自动执行。
以上是关于MySQL基础的一些笔记,希望对你有所帮助。
《快速念咒:MySQL入门指南与进阶实战》阅读记录1. 第一章数据库基础在开始学习MySQL之前,了解一些数据库的基础知识是非常重要的。
数据库是一个用于存储和管理数据的计算机软件系统,它允许用户通过关键字或特定的查询语言来检索、更新和管理数据。
在数据库中,数据是以表格的形式进行组织的,每个表格都包含了一组相关的数据项,这些数据项被称为记录。
表(Table):表是数据库中存储数据的基本单位。
每个表都有一个唯一的名称,并由行(Row)和列(Column)组成。
每一行代表一个数据记录,每一列代表一个特定的数据属性。
字段(Field):字段是表中的一列,代表了数据的一种属性。
每个字段都有一个唯一的名称和一个数据类型,用于定义该字段可以存储的数据种类。
主键(Primary Key):主键是表中的一个特殊字段,用于唯一标识表中的每一行记录。
主键的值必须是唯一的,且不能为NULL。
外键(Foreign Key):外键是一个表中的字段,它的值引用了另一个表的主键值。
外键用于建立两个表之间的联系,确保引用完整性。
索引(Index):索引是一种数据库优化技术,用于提高查询性能。
通过创建索引,数据库可以更快地定位到表中的特定记录,而不必扫描整个表。
SQL(Structured Query Language):SQL是用于与数据库进行交互的编程语言。
它包括用于数据查询、插入、更新和删除的操作符和语法结构。
理解这些基本概念是学习MySQL的前提。
通过掌握SQL语言的基本语法和操作,你将能够有效地管理和操作数据库中的数据。
在接下来的章节中,我们将深入探讨MySQL的具体应用,包括如何创建和管理数据库、表、以及如何执行复杂的查询操作。
2. 第二章数据库设计《快速念咒:MySQL入门指南与进阶实战》是一本全面介绍MySQL 数据库的书籍,其中第二章详细阐述了数据库设计的基础知识和实践技巧。
在这一章节中,作者首先介绍了数据库设计的基本概念和目标,包括数据模型、实体关系模型(ER模型)等,并解释了如何通过这些模型来描述现实世界中的数据和业务逻辑。
目录Mysql笔记 (2)一、MySQL简介 (2)1.1、MySQL关系(Relation)型数据库(DataBase)管理系统 (2)二、服务器端与客户端软件 (2)2.1、服务器端软件 (2)2.2、客户端软件 (2)三、数据类型和操作符 (3)3.1列的数据类型 (3)3.2操作(运算)符 (4)四、函数 (5)4.1、数值函数 (5)4.2日期函数 (5)4.3字符串函数 (6)五、创建与管理数据库中的表及数据 (8)5.1创建与删除数据库 (8)5.2创建数据库表 (9)5.3修改表结构:alter (9)5.4删除表drop table 表名 (10)5.5管理数据库中表的数据 (10)六、查询数据(***) (11)6.1.基本的查询语句 (11)6.2关联查询、多表查询 (13)6.3子查询(*) (14)七、数据库设计 (15)7.1单表设计 (15)7.2 数据库逻辑设计 (15)7.3数据的物理设计 (16)7.4外键foreign key (16)八、Mysql进阶 (17)8.1、存储引擎 (17)8.2 事务(transaction) (17)8.3存储过程procedure: (18)8.4 、视图View:将一个复杂的查询定义为一个视图 (19)8.5 触发器trigger (19)8.6 索引(index) (20)8.7 显示数据库更多信息:show命令 (20)8.8、数据库管理 (21)九、PHP联接与操作数据库 (21)9.1 准备 (21)9.2联接数据库服务器 (22)9.3选择数据库 (22)9.4执行操作 (22)9.5其它函数: (22)Mysql笔记一、MySQL简介1.1、MySQL关系(Relation)型数据库(DataBase)管理系统数据库是表(Table)的集合其它数据库管理系统:SQLServer,Oracle,Sybase,Forpro特点:开发源码. LAMP二、服务器端与客户端软件工作模式:Client/Server2.1、服务器端软件setup.exe2.2、客户端软件1)自带命令行工具显示数据库:show database s;使用数据库: use 数据库名;显示数据库表: show tables;显示表结构:describe 表名;查询表中的所有数据:select * from 表名;创建数据库: create database 数据库名;删除数据库:drop database 数据库名;显示当前的版本,当前日期:select version(),current_date;帮助:help退出: exit,quit2)软件:MySQLyog:绿色版本SQL:(select insert update delete create alter drop) 三、数据类型和操作符表table:二维表格3.1列的数据类型<1>数值:整型与浮点数整型tinyint 1个字节smallint 2个字节meduimint 3个字节int(integer): 4个字节(byte)bigint 8个字节<2>浮点型:float: 单精度型4个字节double: 双精度型8个字节decimal(10,2): 确切精度,numeric同decimal<3>、字符串char(len): 定长字符串char(100)varchar(len): 变长字符串varchar(100)binary(len): 定长二制字符串varbinary(len): 可变二制字符串<4>、日期日期:显示的格式:yyyy-MM-dd时间:显示的格式: hh:mm:ss日期时间:显示的格式:yyyy-MM-dd hh:mm:ss<5>、blob与textblob(binary large object): 二进制大对象:可以放图片,mp3 text:文本大对象: 放一篇文章3.2操作(运算)符<1>算术运算符+-*/%+:算述运算,有字符串时,字符串转换为数字<2>比较运算符:<,<=,>,>=,!=(<>),=(不是==)比较的结果为1或0,或nullnull参与比较时,结果为null比较运算符:is (not) true,is (not) false,is (not)unknownis (not) null`函数:isnull(列名):判断一个列的值是否是null:expr between min and max:(含min与max)expr in(3,4,5)ecpr not in(3,4,5)<3>、逻辑运算符NOT(!) AND(&&) OR(||) XOR<4>、控制流程函数case-when()select case 3 when 1 then 'one' when 2 then 'two' else 'more' end; select case when 1>2 then '太阳从西边出来' when 1<2if(expr1,expr2,expr3):expr1为true,则为expr2,否则为expr3ifnull(expr1,expr2):如果expr1为null,则为expr2,否则为expr1 nullif(expr1,expr2):如果expr1=expr2,则返回null,否则返回expr1四、函数4.1、数值函数rand():取[0,1]之间的随机数4.2日期函数<1>、日期函数当前日期:curdate(),current_date,current_date()当前时间:curtime(),current_time,current_time()当前日期时间,now(),sysdate()<2>date_add(日期时间,interval expr type)type:year(年),month(月),day(天)hour(时),minute(分),second(秒)day_second 天时:分:秒<3>从日期时间中获得年、月、日、时、分、秒extract(type from date)year(日期),month(日期),day(日期)datediff(d1,d2):天数差,d1>d2正数<4>将日期转换为字符串:date_format(date,format)<5>将字符串转换为日期:str_to_date(str,format)<6>常见格式:%Y:4位年份,%m月份,%d日%H:24小时,%h12小时,%i:分.%S%s:秒4.3字符串函数◆字符串长度:lengthSELECT LENGTH('认真学习MySQL');注:utf_8下汉字为三个字节char_lengthSELECT CHARACTER_LENGTH('认真学习MySQL');◆联接字符串concatSELECT CONCAT('php','mysql','Oracle');◆用分隔符联接字符串concat_wsSELECT CONCAT_WS('$','php','mysql','Oracle');◆将数用不同的进制表示345SELECT HEX(345),OCT(345),BIN(345);◆获取子字符串:substring(str,pos,len),位置从1开始的SELECT SUBSTRING('PHP and MySQL',5,3);◆获取标点前的字符substring(str,标点,pos)SELECT SUBSTRING_INDEX('','.',1);结果为:www SELECT SUBSTRING_INDEX('','.',2);结果为:www.baiduSELECT SUBSTRING_INDEX('','.',-1);结果为:comSELECT SUBSTRING_INDEX('','.',-2);结果为:◆插入与修改子字符串insert:len=0相当于插入,替换的字符个数SELECT INSERT('PHP MySQL Oracle',5,5,'SQLServer');SELECT INSERT('PHP MySQL Oracle',5,0,'SQLServer ');◆查找子字符串的位置:instr(str,findstr)、locate(findstr,str,pos(开始查找的位置不写的话默认从开头查找))SELECT INSTR('PHP MySQL Oracle','MySQL');SELECT LOCATE('MySQL','PHP MySQL Oracle');◆填充字符串lpad,rpad(padding)SELECT LPAD('MySQL',10,'$');SELECT RPAD('MySQL',10,'$');SELECT TRIM(LEADING 'x' FROM 'xxxxMySQLxxxxx');SELECT TRIM(BOTH 'x' FROM 'xxxxMySQLxxxxx');SELECT TRIM(TRAILING 'x' FROM 'xxxxMySQLxxxxx');◆生成字符串repeat◆反转字符串reverse(str)◆替换字符串replace(str,from_str,to_str)◆比较字符串strcmp(str1,str2):str1>str2:返回1,str1=str2:0否则返回-1◆转为大写:upper,ucase◆转为小写:lower,lcase◆Like:可以使用通配符,(模糊查询)◆%:任意多个字符,_:一个字符没有的话返回值为4.4强制类型转换函数cast(expr as type)convert(expr,type)type:date,time,datetime,signed(有符号数)unsigned(无符号数),char(n)字符串五、创建与管理数据库中的表及数据SQL:Structured Query Language:结构化查询语句:特点:只要告诉它“做什么”,而不考虑如何做组成部分:DDL(Data Definition Language):数据定义语言Create、alter、dropDML(Data Manipulation Language):数据操作语言Select、insert 、update、deleteDCL(Data Control Language):数据控制语言grant revoke5.1创建与删除数据库create databse 数据库名;create database 数据库名character set utf8;drop database 数据库名5.2创建数据库表●表的设计:(表名,哪些列,列的数据类型,有哪些约束)增、删、改、查●创建数据库表的基本语法:create table 表名(列名1 数据类型[约束],列名2 数据类型[约束],....列名n 数据类型[约束])约束:主键:primary key自增长:auto_increment唯一:unique不为空:not null.(默认为null)5.3修改表结构:alteralter table 表名rename 新表名--改表名drop 列名--删除列add 列的定义--新增列change 原列名新列名:增加列:改列名:5.4删除表drop table 表名5.5管理数据库中表的数据insert:插入一条记录update:修改将表中所有行的sex和brif属性修改:只修改特定行:delete:删除六、查询数据(***)6.1.基本的查询语句1、查询列2、选择行:where子句<,<=,>= and orbetween andin3、去掉重复行(distinct) Select distinct salary from emp;4、排序:order by子句:升序asc(默认)降序(desc)5、组(group)函数min:最小值max:最大值avg:平均值sum:求和count(*):记录个数count(mgr_id):非null的记录个数6、统计子句group by与having子句结果为:结果为:注:当选项三个以上是时可用case when1 then7、limit子句,总是放在最后limit 6:显示前6条记录limit 3,3:显示第4条开始,3条记录分页查询语句:2个参数:第几页,一页显示几条记录2 6小结:select 列名1 as 别名,列名2,....列名nfrom 表名where 子句group by子句(分组统计)having 子句order by子句limit 子句6.2关联查询、多表查询1、笛卡尔乘积:select * from 表1,表2;2、左联接左内联接:内联接语法:Selec t *from 表1,表2 where 表1.属性=表2.属性例子:左外联接Selec t *from 表1 left join表2 on表1.属性=表2.属性(常用)等值联接,与非等值联接6.3子查询(*)select查询出的结果是表(table)select语句放在select子句,from子句,where子句,having子句中七、数据库设计7.1单表设计设计内容:表名,列名,列的类型,列约束表名、列名:有意义的英文单词,不用汉字、不用拚音,可在表名前加前缀表中有多少列:由实际需求确定列的类型:字符串:varchar(长度)数值类型:字段要参加运算,numeric(10,2)有确定值的字段:用tinyint日期:date datetime约束:主键:为每一个表设计一个主键,而且用没有意义的字段id作为主键,自增长唯一:unique默认值:default是否为空:not null7.2 数据库逻辑设计系统:有哪些实体(Entity),实体之间有哪些关系(Relation)?论坛:用户,帖子,回帖,积分实体之间主要有两种关系:1)一对多关系:一个用户可以发很多帖子,部门员工2)多对多关系: 学生课程建立系统的E-R模型7.3数据的物理设计实体==>表一对多关系==>两张表,一方各一张表,关系如何表示:多方放一方的主键作为外键多对多关系:学生-课程每个实体用一张表表示。
Mysql笔记(附Mysql基础书pdf版)资料数据库篇SHOW DATABASES; //显⽰数据库系统中已经存在的数据库CREATE DATABASE 数据库名; //创建数据库DROP DATABASE 数据库名; //删除数据库表篇注:在使⽤操作表语句前,⾸先要使⽤USE语句选择数据库。
选择数据库语句的基本格式为“USE 数据库名”。
否则会报错,1046;CREATE TABLE 表名 ( 属性名数据类型 [完整性约束条件],属性名数据类型 [完整性约束条件],属性名数据类型);表名不能为SQL语句的关键字,⼀个表可以有多个属性。
定义时,字母⼤⼩写均可,各属性之间⽤逗号隔开,最后⼀个属性不需要加逗号。
主键主键有唯⼀值单字段主键属性名数据类型 primary key //创建主键,写在属性名数据类型后⾯;多字段主键primary key(属性名 1,属性名2,属性名n)两者的组合可以确定唯⼀的⼀条记录;外键外键不⼀定必须为⽗表的主键,但必须是唯⼀性索引,主键约束和唯⼀性约束都是唯⼀性索引;外键可以为空值;设置外键的基本语法规则如下:CONSTRAINT 外键别名 FOREIGN KEY(属性 1.1,属性1.2,属性1.n)REFERENCES 表名(属性2.1,属性2.2,属性2.n)其中,“外键别名”参数是为外键的代号;“属性1”参数列表是⼦表中设置的外键;“表名”参数是指⽗表的名称;“属性2”参数列表是⽗表的主键。
设置表的⾮空约束设置表的唯⼀性约束设置表的属性值⾃动增加查看表结构DESCRIBE 表名; // 查看表基本结构语句,可缩写为desc 表名SHOW CREATE TABLE 表名; //查看表详细结构语句(包含存储引擎、字符编码)删除表DROP TABLE 表名;//删除没有被关联的普通表删除⽗表需要先将外键删除,然后才能去删除⽗表。
字段篇//通过ALTER TABLE语句ALTER TABLE 旧表名 RENAME [TO] 新表名;//修改表名 TO参数是可选参数,是否在语句中出现不会影响语句的执⾏。
最全mysql笔记整理mysql笔记整理作者:python技术⼈博客:Windows服务-- 启动MySQLnet start mysql-- 创建Windows服务sc create mysql binPath= mysqld_bin_path(注意:等号与值之间有空格)连接与断开服务器mysql -h 地址 -P 端⼝ -u ⽤户名 -p 密码show processlist -- 显⽰哪些线程正在运⾏show variables -- 显⽰系统变量信息数据库操作-- 查看当前数据库select database();-- 显⽰当前时间、⽤户名、数据库版本select now(), user(), version();-- 创建库create database[ if not exists] 数据库名数据库选项数据库选项:character set charset_namecollate collation_name-- 查看已有库show databases[ like pattern ]-- 查看当前库信息show create database 数据库名-- 修改库的选项信息alter database 库名选项信息-- 删除库drop database[ if exists] 数据库名同时删除该数据库相关的⽬录及其⽬录内容表的操作-- 创建表create [temporary] table[ if not exists] [库名.]表名 ( 表的结构定义 )[ 表选项]每个字段必须有数据类型最后⼀个字段后不能有逗号temporary 临时表,会话结束时表⾃动消失对于字段的定义:字段名数据类型 [not null | null] [default default_value] [auto_increment] [unique [key] | [primary] key] [comment string ]-- 表选项-- 字符集charset = charset_name如果表没有设定,则使⽤数据库字符集-- 存储引擎engine = engine_name表在管理数据时采⽤的不同的数据结构,结构不同会导致处理⽅式、提供的特性操作等不同常见的引擎:InnoDB MyISAM Memory/Heap BDB Merge Example CSV MaxDB Archive不同的引擎在保存表的结构和数据时采⽤不同的⽅式MyISAM表⽂件含义:.frm表定义,.MYD表数据,.MYI表索引InnoDB表⽂件含义:.frm表定义,表空间数据和⽇志⽂件show engines -- 显⽰存储引擎的状态信息show engine 引擎名 {logs|status} -- 显⽰存储引擎的⽇志或状态信息-- ⾃增起始数auto_increment = ⾏数-- 数据⽂件⽬录data directory = ⽬录-- 索引⽂件⽬录index directory = ⽬录-- 表注释comment = string-- 分区选项PARTITION BY ... (详细见⼿册)-- 查看所有表show tables[ like pattern ]show tables from 表名-- 查看表机构show create table 表名(信息更详细)desc 表名 / DESCRIBE 表名 / EXPLAIN 表名 / SHOW COLUMNS FROM 表名 [LIKE PATTERN ]show table status [from db_name] [like pattern ]-- 修改表-- 修改表本⾝的选项alter table 表名表的选项eg: alter table 表名 engine=MYISAM;-- 对表进⾏重命名rename table 原表名 to 新表名rename table 原表名 to 库名.表名(可将表移动到另⼀个数据库)-- rename可以交换两个表名-- 修改表的字段机构(13.1.2. ALTER TABLE语法)alter table 表名操作名-- 操作名add[ column] 字段定义 -- 增加字段after 字段名 -- 表⽰增加在该字段名后⾯first -- 表⽰增加在第⼀个add primary key(字段名) -- 创建主键add unique [索引名] (字段名)-- 创建唯⼀索引add index [索引名] (字段名) -- 创建普通索引drop [ column] 字段名 -- 删除字段modify[ column] 字段名字段属性 -- ⽀持对字段属性进⾏修改,不能修改字段名(所有原有属性也需写上)change[ columns] 原字段名新字段名字段属性 -- ⽀持对字段名修改drop primary key -- 删除主键(删除主键前需删除其AUTO_INCREMENT属性)drop index 索引名 -- 删除索引drop foreign key 外键 -- 删除外键-- 删除表drop table[ if exists] 表名 ...-- 清空表数据truncate [table] 表名-- 复制表结构-- 复制表结构和数据create table 表名 [as] select * from 要复制的表名-- 检查表是否有错误check table tbl_name [, tbl_name] ... [option] ...-- 优化表optimize [local | no_write_to_binlog] table tbl_name [, tbl_name] ...-- 修复表repair [local | no_write_to_binlog] table tbl_name [, tbl_name] ... [quick] [extended] [user_frm]-- 分析表analyze [local | no_write_to_binlog] table tbl_name [, tbl_name] ...数据操作-- 增insert [into] 表名 [(字段列表)] values (值列表)[, (值列表), ...]-- 如果要插⼊的值列表包含所有字段并且顺序⼀致,则可以省略字段列表。
mysql笔记整理MySQL是一种流行的开源关系型数据库管理系统,被广泛应用于各种网站和应用程序中。
作为一名开发人员或数据库管理员,熟悉MySQL的使用和管理是非常重要的。
在实际工作中,经常需要对数据库进行操作,因此我整理了一些MySQL的笔记,希望对大家有所帮助。
首先,我们需要了解MySQL的基本概念和术语。
数据库是一个存储数据的容器,可以存储各种类型的数据,如文本、数字、图片等。
表是数据库中的一个重要组成部分,用于存储具体的数据,表由多个列组成,每一列代表一种数据类型。
在MySQL中,可以通过SQL语句来操作数据库,SQL是结构化查询语言的缩写,是一种用于管理数据库的标准语言。
其次,我们需要了解如何创建数据库和表。
在MySQL中,可以通过CREATE DATABASE语句来创建数据库,通过CREATE TABLE语句来创建表。
在创建表时,需要指定表的名称和列的名称、数据类型等信息。
在设计表结构时,需要考虑数据的类型、长度、约束等因素,以确保数据的完整性和一致性。
接下来,我们需要了解如何插入、查询、更新和删除数据。
在MySQL中,可以通过INSERT INTO语句来插入数据,通过SELECT语句来查询数据,通过UPDATE语句来更新数据,通过DELETE语句来删除数据。
在查询数据时,可以使用WHERE子句来过滤数据,使用ORDER BY子句来排序数据,使用LIMIT子句来限制返回的数据数量。
此外,我们还需要了解如何使用索引和关联表。
索引是一种提高数据库查询性能的技术,可以加快数据的检索速度。
在MySQL中,可以通过CREATE INDEX语句来创建索引,通过DROP INDEX语句来删除索引。
关联表是一种将多个表的数据关联起来的技术,可以通过JOIN语句来实现表的关联操作。
最后,我们需要了解如何备份和恢复数据库。
在实际工作中,数据库可能会出现各种问题,如数据丢失、损坏等,因此备份数据库是非常重要的。
MySQL笔记整理1. 基本概念:* MySQL是一个关系型数据库管理系统(RDBMS)。
* 数据库(DataBase):在计算机体系内,简单来讲就是存储数据的“仓库”,是按照数据结构来组织、存储和管理数据的仓库。
简称为DB。
通常是一个或一组文件,保存了一些符合特定规格的数据。
* 数据库软件称为数据库管理系统(DataBase Management System,DBMS)。
2. 数据类型:* 数值型:INT, FLOAT, DECIMAL* 日期和时间:DATE, TIME, DATETIME, TIMESTAMP, YEAR* 字符串:CHAR, VARCHAR, TEXT, BLOB3. SQL语句:* `SELECT`:用于查询数据。
* `INSERT INTO`:用于插入数据。
* `UPDATE`:用于更新数据。
* `DELETE`:用于删除数据。
4. 索引:* 索引是MySQL中用于提高检索操作速度的数据结构。
常见的索引类型有B-Tree索引和哈希索引。
5. 存储过程与函数:* MySQL允许用户编写存储过程和函数,这些可以用来封装复杂的业务逻辑。
6. 触发器:* 触发器是与表相关联的特殊类型的存储过程,当满足特定条件时会自动执行。
7. 事务处理:* MySQL支持事务处理,确保多个操作要么全部成功,要么全部失败。
事务处理常见的控制语句有`BEGIN`, `COMMIT`, 和`ROLLBACK`。
8. 视图:* 视图是基于SQL查询的虚拟表,它允许用户通过一个统一的接口访问数据,而不必关心底层的数据结构。
9. 分区:* 分区是将表或索引分散到多个物理子表中,每个子表都是表的一部分,提高了查询性能和管理效率。
10. 优化与安全:* MySQL提供了多种优化策略,如查询优化、索引优化、缓存优化等,以提高数据库性能。
同时,也提供了多种安全机制,如用户权限管理、数据加密等,确保数据的安全性。
MySQL是一个流行的关系型数据库管理系统。
以下是一个MySQL基础知识的完整笔记:安装与配置在不同的操作系统上安装MySQL。
配置MySQL服务器的端口、用户权限、日志文件等。
基本命令SHOW DATABASES;:显示所有数据库。
USE [database_name];:选择一个数据库。
SHOW TABLES;:显示当前数据库中的所有表。
数据类型数值类型:INT, FLOAT, DECIMAL, BIGINT 等。
日期和时间类型:DATE, TIME, DATETIME, TIMESTAMP 等。
字符串类型:CHAR, VARCHAR, TEXT, TINYTEXT 等。
创建表定义表结构,例如CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(255), email VARCHAR(255))。
使用AUTO_INCREMENT 自动生成主键。
插入数据使用INSERT INTO [table_name] (column1, column2, ...) VALUES (value1, value2, ...); 插入数据。
查询数据基本查询:SELECT * FROM [table_name];。
条件查询:SELECT * FROM [table_name] WHERE [condition];。
排序查询:SELECT * FROM [table_name] ORDER BY [column] [ASC|DESC];。
聚合函数:COUNT(), SUM(), AVG(), MAX(), MIN() 等。
更新数据使用UPDATE [table_name] SET column1 = value1, column2 = value2, ... WHERE [condition]; 更新数据。
删除数据使用DELETE FROM [table_name] WHERE [condition]; 删除数据。
Mysql 自学笔记前言综述:磁盘搜索。
需要花时刻从磁盘上找到一个数据,用在现代磁盘的平均时刻通常小于10ms,因此理论上咱们能够每秒大约搜索1000次。
那个时刻在新磁盘上提高不大而且很难为一个表进行优化。
优化它的方式是将数据散布在多个磁盘上。
磁盘读/写。
当磁盘放入正确位置后,咱们需要从中读取数据。
关于现代的磁盘,一个磁盘至少传输10-20Mb/s的吞吐。
这比搜索要容易优化,因为你能从多个磁盘并行地读。
CPU周期。
咱们将数据读入内存后,需要对它进行处置以取得咱们需要的结果。
表相关于内存较小是最多见的限制因素。
可是关于小表,速度通常不成问题。
·内存带宽。
当CPU需要的数据超出CPU缓存时,主缓存带宽就成为内存的一个瓶颈。
这在大多数系统正是一个不常见的瓶颈可是你应该明白它。
一. MySQL设计局限与折衷1. 若是向列内插入不适合的或超出范围的值,MySQL将该列设定为“最好的可能的值”,而不是报告错误。
关于数字值,为0、可能的最小值或最大值。
关于字符串,为空字符串或列内能够保留的字符串。
请注意当运行在严格模式或TRADITIONAL SQL模式时该行为不适用。
固然这仅仅是在严格的模式下,包括TRADITIONAL SQL 模式,必需为not null 指定默许值。
二。
可移植性若是你利用某个数据库特定的功能(例如MySQL专用的REPLACE语句),应该为SQL 效劳器编码一个方式以实现一样的功能。
尽管慢些,但确许诺其它效劳器执行一样的任务。
用MySQL,能够利用/*! */语法把MySQL特定的关键词加到查询中。
在/**/中的代码将被其它大多数SQL效劳器视为注释(并被忽略)。
三。
优化SELECT 查询1.阻碍所有语句的一个因素是:你的许可设置得越复杂,所需要的开销越多。
执行GRANT语句时利用简单的许可,当客户执行语句时,能够使MySQL降低许可检查开销。
例如,若是未授予任何表级或列级权限,效劳器不需要检查tables_priv和columns_priv表的内容。
MySQL是一种关系型数据库管理系统,它使用结构化查询语言(SQL)来进行数据管理和查询。
以下是MySQL数据库的基础知识笔记:
数据库:一组相关数据的集合。
表:存储在数据库中的数据组织形式。
列:表中的一个字段,定义了该列所存储的数据类型。
行:表中的一条记录,由多个列组成。
主键:唯一标识表中每一行的特定列。
外键:一个表中的列,与另一个表中的主键建立连接关系,用于保证数据完整性和减少数据冗余。
索引:为了提高查询效率而创建的数据结构,可以根据索引快速搜索和查找数据。
关系型数据库:以表格形式存储数据,通过关联不同表之间的主键和外键来建立关系。
非关系型数据库:将数据以文档、键值对或图形等方式存储,适用于分布式、非结构化数据场景。
SQL语句:用于对MySQL数据库进行查询、插入、更新和删除操作的编程语言,包括SELECT、INSERT、UPDATE、DELETE等命令。
MySQL知识点总结(完整版)MySQL学习笔记登录和退出MySQL服务器# 登录MySQL$ mysql -u root -p1*******# 退出MySQL数据库服务器exit;基本语法-- 显⽰所有数据库show databases;-- 创建数据库CREATE DATABASE test;-- 切换数据库use test;-- 显⽰数据库中的所有表show tables;-- 创建数据表CREATE TABLE pet (name VARCHAR(20),owner VARCHAR(20),species VARCHAR(20),sex CHAR(1),birth DATE,death DATE);-- 查看数据表结构-- describe pet;desc pet;-- 查询表SELECT * from pet;-- 插⼊数据INSERT INTO pet VALUES ('puffball', 'Diane', 'hamster', 'f', '1990-03-30', NULL);-- 修改数据UPDATE pet SET name = 'squirrel' where owner = 'Diane';-- 删除数据DELETE FROM pet where name = 'squirrel';-- 删除表DROP TABLE myorder;建表约束主键约束-- 主键约束-- 使某个字段不重复且不得为空,确保表内所有数据的唯⼀性。
CREATE TABLE user (id INT PRIMARY KEY,name VARCHAR(20));-- 联合主键-- 联合主键中的每个字段都不能为空,并且加起来不能和已设置的联合主键重复。
CREATE TABLE user (id INT,name VARCHAR(20),password VARCHAR(20),PRIMARY KEY(id, name));-- ⾃增约束-- ⾃增约束的主键由系统⾃动递增分配。
Mysql数据库的安装和基本配置
默认的mysql不是最新的5.1.61,如果要用最新版的就要去官网下载了rpm安装。
quit退出。
因为MySQL是一个网络服务,他是一个支持网络的数据服务并不是单机的。
一般mysql 服务都是独立的,mysql默认使用TCP协议,默认端口是3306
所以说我们可以通过远程连接到主机3306端口,连接到mysql服务。
第一节Mysql数据库的基本操作
Mysql约定俗成使用大写,但是用小写没关系,不敏感的。
百分之90以上SQL语句结尾要加”;”分号。
不加就会以为sql语句没有结束。
语句较长的话可以分几行来写。
只要你不加分号结尾就行了。
Mysql中没有重新命名数据库名称的命令。
网上说可以使用rename命令,那绝对不可能的。
第三节课Mysql数据库基础-Sql语言基础1
第四节课Mysql用户管理基础
第五节课Mysql权限管理基础
尽量不给咬root设置任何远程都可以连接,网上攻击非常多,万一被黑了就麻烦了。
第六节课Mysql简单备份
第七节课Mysql数据库数据编码
数据库在保存不同数据的时候,使用不同的编码可以使用最优的编码方式。
而已节省空间。
如果数据库里面有数据的时候,修改数据库编码,这时候可能数据会出现问题,所以尽量不要在有数据的时候修改编码。
.。
mysql数据库管理系统笔记MySQL数据库管理系统是一种流行的关系型数据库管理系统,广泛应用于各种应用程序和网站。
下面是一些关于MySQL的笔记:1. 安装和配置:MySQL可以通过不同的方式进行安装,包括二进制包、源代码和包管理器。
安装完成后,需要配置MySQL服务器,包括设置用户和权限、配置网络连接等。
2. 数据库和表:MySQL数据库由多个表组成,每个表包含一系列的行和列。
使用`CREATE DATABASE`和`CREATE TABLE`语句可以创建数据库和表。
3. 数据类型:MySQL支持多种数据类型,包括整数、浮点数、字符串、日期和时间等。
不同的数据类型适用于不同的数据存储需求。
4. 查询语言:MySQL使用结构化查询语言(SQL)进行数据操作和管理。
使用SELECT语句可以从表中检索数据,使用INSERT、UPDATE和DELETE语句可以插入、更新和删除数据。
5. 索引:索引用于加快查询速度,通过索引可以快速定位到表中的数据。
MySQL支持多种索引类型,包括B-tree索引、哈希索引等。
6. 视图:视图是一个虚拟表,它是基于SQL查询的结果集。
通过视图可以简化复杂的查询操作,同时提供数据安全性。
7. 存储过程和函数:存储过程是一组为了完成特定功能的SQL语句集合。
函数类似于存储过程,但函数可以返回值。
8. 触发器:触发器是与表相关联的特殊类型的存储过程,它会在指定事件(如INSERT、UPDATE或DELETE)发生时自动执行。
9. 事务处理:事务是一系列的操作,这些操作要么全部成功执行,要么全部失败回滚。
MySQL支持事务处理,确保数据的完整性和一致性。
10. 安全性和权限:MySQL提供了用户管理和权限控制机制,可以设置不同用户对数据库的访问权限。
通过设置用户名、密码和权限,可以控制用户对数据库的访问和操作。
黑马程序员MySQL运维篇笔记一、MySQL概述MySQL是一个流行的关系型数据库管理系统,广泛应用于各种场景,如Web开发、数据存储和数据分析等。
了解MySQL的基本概念、安装和配置是进行MySQL运维的基础。
二、MySQL安装与配置1.安装方式:可以选择源码安装、二进制安装或使用包管理器进行安装。
2.配置文件:MySQL的配置文件为f,其中包含了各种服务器参数,可以根据实际需求进行修改。
3.启动与停止:可以通过命令行工具或系统服务管理器来启动和停止MySQL服务。
三、MySQL基本操作1.创建数据库:使用CREATE DATABASE语句创建一个新的数据库。
2.删除数据库:使用DROP DATABASE语句删除一个数据库。
3.创建表:使用CREATE TABLE语句创建一个新的表。
4.删除表:使用DROP TABLE语句删除一个表。
5.插入数据:使用INSERT INTO语句向表中插入数据。
6.查询数据:使用SELECT语句查询表中的数据。
7.更新数据:使用UPDATE语句更新表中的数据。
8.删除数据:使用DELETE语句删除表中的数据。
四、MySQL性能优化1.索引优化:合理使用索引可以大大提高查询速度,但要注意避免过度索引。
2.SQL优化:优化SQL语句可以提高查询效率,如避免SELECT *,尽量使用连接(JOIN)代替子查询等。
3.服务器硬件优化:根据实际需求合理配置服务器硬件,如增加内存、使用SSD硬盘等。
4.定期备份与恢复:定期备份数据库可以防止数据丢失,而恢复备份可以帮助快速恢复数据。
5.监控与日志分析:使用工具监控MySQL服务器的性能指标,分析日志文件可以帮助排查问题。
6.安全性:加强MySQL服务器的安全性,如设置强密码、禁用不必要的功能等。
7.高可用性:通过主从复制、负载均衡等方式提高MySQL服务器的可用性。
8.数据迁移:在需要时可以将数据迁移到其他存储介质或服务器上,以满足性能或扩展需求。
mysql 做笔记
在MySQL中,你可以使用注释和用户变量等方式来做笔记,这有助于在SQL脚本中添加说明、备注或标记。
以下是一些在MySQL中做笔记的方法:
1.单行注释:使用--或#可以在SQL语句中添加单行注释,
该注释将从--或#开始一直到行末。
SELECT * FROM users; -- 这是一个单行注释
2.多行注释:使用/* */可以添加多行注释。
/*
这是一个多行注释
可以跨越多行
*/
SELECT * FROM orders;
3.用户变量:你可以使用用户变量来存储和检索数据,也可以将
其用作临时标记或注释。
SET @note = '这是一个用户变量,可以用来做笔记';
SELECT @note;
-- 可以将用户变量用于其他语句
SELECT * FROM products WHERE price > 100 AND @note = '高价商品';
4.表注释:在创建表时,你可以为表添加注释。
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(255)
) COMMENT='用户表,存储用户信息';
这些方法都有助于在MySQL脚本中添加注释和标记,使代码更易读和易维护。
根据实际情况,选择适合你的方式来做笔记。
一.Mysql数据库入门最基本语句1.连接数据库mysql –u root –p 其中-u代表user,-p代表password,然后等着输入密码2.对于数据库的基本操作show databases --- 显示所有数据库use 库名--- 使用某个数据库3.对于某个库中表的操作show tables --- 显示该库中所有表desc 表名---查看该表的结构tee某个sql文件的路径---将命令行中的结果保存到该sql文件中(也可改为txt文件)4.增删改查四大操作①对于数据库的增删操作增:create database 库名charset utf8删:drop database 库名②对于表的四大操作建:建表语句后面会细说增:insert into 表名(列1,列2,…,列n)values(值1,值2,…,值n)删:delete from 表名where 范围条件语句(delete只能删整行)改:update 表名set field1=value1 ( field2=value2 ) where 范围条件语句查:select field1 ( field2 … ) from 表名where 范围条件语句改名:rename table 表名to new表名清空:truncate表名删表:drop table 表名5.关于中文乱码的问题原本mysql中database的默认字符集是latin1,是不支持中文字符的,因此输入中文字符存入数据库在编码的时候就会出问题,要做的,就是设置mysql各部分的默认编码。
方法是:在my.ini文件中做如下操作①在[Client]下,添加default-character-set = utf8②在[mysqld]下,添加character-set-server = utf8重启mysql就行了(具体细节道理暂时还未搞懂,以后还得花时间看)二.建表与字符类型1.Mysql三大列类型数值型:整型(tinyint/smallint/mediumint/int/bigint),浮点型/定点型(小数型)(Float(D,M),decimal(D,M))字符串型:char(M)(定长),varchar(M)(变长),text文本类型日期时间类型:date日期,time时间,datetime日期时间类型,year年类型其中整型:tinyint(1个字节),smallint(2个字节),mediumint(3个字节),int(4个字节),bigint(4个字节)int系列的声明时的参数:(M),unsigned(无符号),zerofill(零填充)int系列在不加特殊说明时,默认是有符号数,比如tinyint代表了-128到127等。
以tinyint为例,tinyint代表了-128到127,tinyintunsigned代表了0到255。
而(M)表示补0宽度,和zerofill搭配使用才有意义,比如smallint(M) zerofill,其中M为数字,例如smallint(5) zerofill,所有该类都会被补满五个数位,不够的就用0补位,且zerofill必是unsigned类型。
小数型:浮点型Float(M,D),定点型decimal(M,D),其中M叫做精度,代表保存值的总位数,而D是标度,代表小数点后面可以保存的位数,而且正负表示的范围一样大,例如float(6,2)表示的范围就是-9999.99到+9999.99,但是如果定义为float(6,2) unsigned,那表示的范围就是0到+9999.99。
对于小数型的存储空间,float的存储范围为10^(-38)到10^38之间,如果M<=24,则占4个字节,否则就占8个字节;decimal的存储范围具体看其整数部分和小数部分各占多少字节。
对于这两种小数型,float有时会损失精度,而decimal是定点数,会把整数部分和小数部分分开存储,所以会比float精确。
字符串型:char(M)型(定长字符串),varchar(M)型(变长字符串),text文本类型char(M)型:称为定长字符串,M为该字符串指定长度,目前0<=M<=255。
对于定长的,在查找行记录时,完全可以通过行数与行的长度计算出文件指针的偏移量,因此查找行比较快。
对于存入其中的数据,不论够不够指定长度,实际都占据M个长度,如果不够M个长度,用空格在末尾补齐。
虽然是用空格补齐的,但是取出数据时会把右侧的空格删掉,这也就意味着,如果插入的数据右侧本身带有空格的话,将会丢失!Varchar(M)型:称为变长字符串,M为该数据类型所允许保存的字符串的最大长度。
目前,0<=M<=65535。
在列内容前,有1-2个字节来标识该列的内容长度。
注意:上面提到的M限制的是字符数,而不是字节数。
Text型:文本类型,可以存比较大的文本段,搜索速度稍慢。
Text不用加默认值,加了也没用。
(额外补充)Blob型:二进制类型,用来存储图像,音频等二进制信息。
其意义在于,防止因为字符集的问题导致的信息丢失。
比如:一张图片中有0xFF字节,这个在Ascii 码字符集中被认为是非法的,因此在你将图片存入的时候,会被过滤,等你再次取出的时候,会发现图片是损坏的。
而Blob就会将图片的二进制信息全部保存起来。
日期时间类型:date日期,time时间,datetime日期时间类型,year年类型date类型:标准格式YYYY-MM-DD,范围为1000-01-01到9999-12-31,占3个字节。
time类型:标准格式HH:MM:SS,范围为-838:59:59到838:59:59,占3个字节。
datetime类型:标准格式YYYY-MM-DDHH:MM:SS,范围为1000-01-01 00:00:00到9999-12-31 23:59:59,占8个字节。
year类型:标准格式YYYY,范围为1901到2155以及0000,占1个字节。
(额外补充)timestamp类型:显示格式跟datetime一样,但它的功能是自动取当前的时间。
2.建表语法:所谓建表就是一个声明列的过程create table 表名(列名1 列类型1 列1参数,列名2 列类型2 列2参数,.......列名n 列类型n 列n参数);补充的参数:auto_increment --- 自增长。
设定某个参数为自增长类型,特点为,只适用于整数类型数据列,且该数据列必须为正数,必须有唯一索引以避免序号的重复(即是主键或者主键的一部分),必须具备NOT NULL属性,最大值受该列的数据类型约束。
primary key --- 主键。
主键是数据表的一个特殊字段,该字段能唯一地标识该表中的每条记录信息,即每条记录的主键值都不同。
设置数据表的主键是指在创建数据表时设置表的某个字段为该表的主键。
主键主要是帮助MySQL以最快的速度查找到表中的某一条信息。
主键必须是唯一的,表中任意两条记录的主键字段的值不能相同。
主键的值是非空值。
主键可以是单一的字段,也可以是多个字段的组合。
Notnulldefault ***:非空与默认。
Notnull表示字段不为空,即当没有输入值的时候,会有一个默认值来填充,即后面的default ***中的***。
而为什么不想要null的值呢?因为不好比较。
Null是一种类型,比较时,只能用专门的isnull和isnotnull来比较,碰到其他的运算符会一律返回null,因此效率不高,影响提高索引效果。
3.修改表的语法一张表,创建完毕,有了N列,之后还有可能要增加或删除或修改列增加列:alter table 表名add 列名称列类型列参数;(加的列在表的最后)altertable 表名add 列名称列类型列参数after 某列; (把新列加在某列后)alter table 表名add 列名称列类型列参数first;(把新列加在最前面)删除列:alter table 表名drop 列名;修改列类型:altertable表名modify列名新类型新参数;修改列名及列类型:altertable表名change旧列名新列名新类型新参数;三.查找(select)语句详解1.where的子句(条件查询)查出一张表的所有行,所有列:select * from 表名查出一张表的所有行,部分列:select 列名1,列名2,……from表名查出一张表的部分列,部分满足条件的行:select 列名1,列名2,……from表名where+ 范围条件语句Where后的逻辑修饰符:<,>,=,in(一个集合),betweena andb(包括a和b),notin(一个集合),and等例如:where id in (1,2,4)表示id在1,2,4这个集合里都满足注:在where中可以包含任意数目的and和or操作符,在没有任何其他符号的时候,例如括号,SQL会首先执行and条件,然后才执行or语句。
eg. select * from table from id=1 or id=2 and price>=10;这条语句默认执行的是id=2并且price大于等于10的,或者是id=1。
如果加上括号:select * from table from (id=1 or id=2) and price>=10;则这条语句执行的是id=1或id=2,并且price大于等于10。
Where后的模糊查询:like:像%:通配任意字符_:单个字符例如:取出名字(不)以“诺基亚”开头的商品Select * from 表名where goods_name (not) like ‘诺基亚%’;取出名字以“诺基亚Nxx”的手机Select * from 表名where goods_name like ‘诺基亚N__’; *2.重要:列就是变量。
列名之间是可以进行投影运算的。
系统函数floor(向下取整),系统函数concat(字符串链接),系统函数substring(取后几个字符)。
3.group与统计函数几个常见统计函数:max:求最大;min:求最小;sum:求总和;avg:求平均;count:求总行数(函数后面加括号,括号里为列名,例如max(sname),但count一般和*连用,因为select count(*) from 表名,查询的就是绝对的行数,哪怕某一行所有字段全为NULL,也计算在内。
而select couht(列名) from 表名,查询的是该列不为null的所有行的行数。
)group by:后面加列名,表示以某列的值的总类进行分组例如:select cat_id, sum(goods_number) from goods group by cat_id;注:严格的讲,以group by a,b,c 为列,则select的列只能在a,b,c里选择,语义上才没有矛盾,如果select其他列,则会把该列出现的第一个值返回出来。