MySQL笔记
- 格式:doc
- 大小:121.50 KB
- 文档页数:13
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笔记常用命令2020●数据库命令:创建:creata database 数据库名; 查询;show databases;切换;use 数据库;删除;drop database 数据库名;查看表:show tables;打开表:desc 表名称;删除表:drop tables 表明;●sql语句必须加“;”号;●mysql 数据类型经常变化的字段用varchar 知道固定长度的用char 尽量用varchar 超过255的字符只能用varchar或者text 能用varchar的地方不用text●数值—日期/时间—字符串●创建数据表表名—字段名—定义字段●create table table-name (column_name column_type);●删除数据表1、当你不再需要该表时,用 drop;2、当你仍要保留该表,但要删除所有记录时,用 truncate;3、当你要删除部分记录时,用 delete。
●DROP TABLE table_name●mysql插入数据●insert into table_name (field1,field2...) values (value1,value2,....) 如果数据是字符型,必须使用单引号或者双引号,如:"value"。
●mysql查询数据select column_name,column_nae FROM table_name [WHRER Clause] [LIMIT N] [OFFSET M]●查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。
●你可以使用 WHERE 语句来包含任何条件。
●你可以使用 LIMIT 属性来设定返回的记录数。
●你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。
默认情况下偏移量为0。
select * : 返回所有记录 limit N : 返回 N 条记录 offset M : 跳过 M 条记录, 默认 M=0, 单独使用似乎不起作用 limit N,M : 相当于 limit M offset N , 从第 N 条记录开始, 返回 M 条记录●mysql whrer子句●select field1,field2,... from table_name1,table_name2...whrer condition1 [AND [OR]] condition2... 你可以使用 AND 或者 OR 指定一个或多个条件。
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是一种开源的关系型数据库管理系统,被广泛应用于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脚本中添加注释和标记,使代码更易读和易维护。
根据实际情况,选择适合你的方式来做笔记。
03_MySQLDay01一、数据库(DataBase DB)1、数据库:存储数据的仓库2、数据库分类:(1)关系型数据库:二维表存储数据(Mysql,SQLServer,Orcale,DB2等)(2)非关系型数据库(Nosql):MongDB等3、Mysql安装(1)window:配置文件my.ini进入命令行开始--运行--cmd(2)Linux:配置文件:/etc/f终端mysql -uroot -p说明: Mysql 数据库的存储位置/var/lib/mysql4、Mysql登录mysql -u用户名-p密码[-P3306][-D数据库名称]5、Mysql退出quitexit\q6、Mysql注释-- 注释# 注释7、修改提示符(Prompt)(1)进入MySQL的命令prompt 提示符名称(2)登录MySQL写的命令mysql -uroot -p --prompt=提示符名称说明:a.恢复提示符prompt mysql>b.特殊符号\h 主机名称\D 系统时间日期\d 选择数据库名称8、SQL(Structured Query Language)结构化查询语句(1)DDL(数据创建语言):创建数据库,创建表、创建视图等CREATE(创建),DROP(删除),ALTER(修改)(2)DML(数据操作语言):对数据库的数据的增,删,改INSERT(添加),DELETE(删除),UPDATE(改)(3)DQL(数据查询语言):对数据库的数据查询SELECT(查询)(4)DCL(数据库控制语言):分配(GRANT)用户权限及权限(REVOKE)撤销9、SQL命令行规范a.系统命令大写,名称小写b.SQL命令行以分号结束或\g说明:结束分隔符可以用delimiter 符号名称c.SQL命令行支持折行,但不能在函数,名称,引号中不能折行d.SQL命令中的名称不能用关键字和保留字,如果使用必须用反引号``括起来,例如`user`10、创建数据库(DDL)(1)查看数据库SHOW DATABASES;(2)创建数据库CREATE DATABASE [IF NOT EXISTS]数据库名称[[DEFAULT] CHARACTERSET [=] 编码];(3)查看创建数据库命令SHOW CREATE DATABASE 数据库名称;(4)删除数据库DROP DATABASE [IF EXISTS] 数据库名称;(5)修改数据库的编码ALTER DATABASE 数据库名称[DEFAULT] CHARACTER SET [=]编码;(6)选择数据库USE 数据库名称;(7)查看当前选择的数据库SELECT DATABASE();11、创建数据库中的表(1)查看表SHOW TABLES;(2)创建表结构CREATE TABLE [IF NOT EXISTS] 表名(字段(Field)名称|列名称数据类型[字段属性|约束条件],字段(Field)名称|列名称数据类型[字段属性|约束条件]...)[ENGINE=InnoDB DEFAULT CHARSET=utf8];说明:数据库最小单位是表,一定是先有表结构再添加数据(3)查看表结构DESC 表名;DESCRIBE 表名;SHOW COLUMNS FROM 表名;(4)查看创建表结构命令SHOW CREATE TABLE 表名;12、数据操作(DML DQL)(1)插入数据INSERT 表名(字段1,字段2...)VALUE[S](值,值...),(值,值...)...;(2)查询数据:SELECT * FROM 表名;SELECT 字段1,字段2,... FROM 表名; 13、MySQL数据类型(1)整型TINYINT([M]) [UNSIGNED|ZEROFILL]:范围:大小1字节(Byte 2^8)有符号位-128~127无符号0~255SMALLINT([M]) [UNSIGNED|ZEROFILL]:范围:大小2字节(Byte 2^16)有符号位-32768~32767无符号0~65535MEDIUMINT([M]) [UNSIGNED|ZEROFILL]:范围:大小3字节(Byte 2^24)有符号位-8388608~8388607无符号0~16777215INT([M]) [UNSIGNED|ZEROFILL]:范围:大小4字节(Byte 2^32)有符号位-2147483648~2147483647无符号0~4294967295BIGINT([M]) [UNSIGNED|ZEROFILL]:范围:大小8字节(Byte 2^64)说明:字段属性:UNSIGNED:无符号位(正数) ZEROFILL: 当显示的长度小于指定长度用0填补,会自动添加UNSIGNED (2)浮点a.单精度浮点FLOAT([M,D]) [UNSIGNED|ZEROFILL]范围:-3.40e38 ~3.40e38b.双精度浮点DOUBLE([M,D]) [UNSIGNED|ZEROFILL]-1.79e308 ~1.79e308c.定长浮点DECIMAL([M,D])[UNSIGNED|ZEROFILL]说明:当指定D小点位数,FLOAT,DOUBLE超出指定位数会四舍五入存近似值,DECIMAL超出指定位数,报警告错误,DECIMAL存精确值(3)字符型a.CHAR([M]):定长字符(0-255字节一个字母占一个字节)b.VARCHAR([M]):变长字符(0-65535字节)VARCHAR存储长度受下面情况影响:(a)一个字段最大65535字节(b)编码gbk:至多占2个字节utf8:至多占3个字节65532/3 =21844(c)多个字符型字段中总的长度不能超过65535(21844)c.TINYTEXT:0-255字节d.TEXT:0-65535字节e.MEDIUMTEXT:0-16777215字节f.LONGTEXT:0-4294967295字节说明: CHAR效率高但不省空间,VARCHAR效率低但省空间,TEXT效率最低(4)布尔型BOOLEANTINYINT(1)(5)枚举类型ENUM:范围:0-65535字节例如:sex ENUM('man','woman','secret');14、约束条件(1)NOT NULL:不为空DEFAULT:默认值[PRIMARY] KEY:主键,一个表中只能有一个主键,并且是主键的字段一定自动添加NOT NULL 和不重复(UNIQUE)UNIQUE [KEY]:不重复,一个表中可以有多个不重复(例如:用户名不重复,邮箱不重复)AUTO_INCREMENT:自动增长,字段如果是编号当添加记录(行)时,编号自增,并且AUTO_INCREMENT的字段一定是主键。
Day02一、表结构的修改(DDL)1、添加表结构的字段a.ALTER TABLE 表名ADD 字段名数据类型[字段属性|约束条件][FIRST|AFTER 字段名];b. 添加多个字段ALTER TABLE 表名ADD 字段名数据类型[字段属性|约束条件][FIRST|AFTER 字段名],ADD 字段名数据类型[字段属性|约束条件][FIRST|AFTER 字段名]...;2、删除字段ALTER TABLE 表名DROP 字段名,DROP 字段名...;3、修改字段ALTER TABLE 表名MODIFY 字段名数据类型[字段属性|约束条件][FIRST|AFTER 字段名];4、修改字段名称ALTER TABLE 表名CHANGE 旧字段名新字段名数据类型[字段属性|约束条件][FIRST|AFTER 字段名];5、添加默认值ALTER TABLE 表名ALTER 字段名SET DEFAULT 值;6、删除默认值ALTER TABLE 表名ALTER 字段名DROP DEFAULT;7、添加主键ALTER TABLE 表名ADD PRIMARY KEY(字段名称);8、删除主键ALTER TABLE KEY|INDE表名DROP PRIMARY KEY;说明:如果有AUTO_INCRMENT属性,一定要先删除AUTO_INCRMENT才能删除主键9、添加唯一性a.ALTER TABLE 表名ADD UNIQUE KEY|INDEX(字段名);b.a.ALTER TABLE 表名ADD [CONSTRAINT 约束名称] UNIQUE KEY|INDEX(字段名);10、删除唯一性ALTER TABLE 表名DROP KEY|INDEX 唯一性约束名称;说明:如果添加唯一性没有设置唯一性约束名称,默认为字段名称11、修改表名称a. ALTER TABLE 表名RENAME [AS|TO] 新表名;b. RENAME TABLE 旧表名TO 新表名;12、重置自动增长ALTER TABLE 表名AUTO_INCREMENT=1;二、帮助? 命令help 命令\h 命令三、表中对数据的操作(DML)(1)添加(INSERT)a.不列出表字段的添加(从第一字段到最后一个字段都赋值)INSERT [INTO] 表名VALUE[S] (值,值,值...);b.不省略字段添加(添加一条记录)INSERT [INTO] 表名(字段名,字段名...) VALUE[S] (值,值...);c.不省略字段添加(添加多记录)INSERT [INTO] 表名(字段名,字段名...)VALUE[S](值,值...),(值,值...)...;d.INSERT...SET (只能添加一条记录)INSERT [INTO] 表名SET 字段名=值,字段名=值...;(2)更新(UPDATE)UPDATE 表名SET 字段名=值,字段名=值... [WHERE 条件];说明:如果更新没有WHERE 条件,表中字段值都相同的值记录(3)删除(DELETE)a.DELETE FROM 表名[WHERE 条件];说明:如果删除没有WHERE 条件,将会清空表中所有数据,AUTO_INCREMENT 不重置b. TRUNCATE 表名;说明: 清空表中所有数据,并且AUTO_INCREMENT 重置四、表中对数据的查询(DQL)1、查询所有字段(效率底)SELECT * FROM 表名;2、列出字段查询SELECT 字段名|expr,字段名|expr...FROM 表名;3、给字段起别名SELECT 字段名[AS]别名FROM 表名;4、给表起别名SELECT 字段名FROM 表名[AS]别名;5、表名(别名).字段名(字段来自哪个表)SELECT 表名(别名).字段名FROM 表名[AS]别名;6、数据库名.表名(表来自哪个数据库)SELECT 字段名FROM 数据库名.表名;7、SELECT 字段名|expr,字段名|expr...FROM 表名[WHERE 条件][GROUP BY 字段][HAVING 条件][ORDER BY 字段][LIMIT [$offset,]$length];7.1WHERE 条件:条件过滤(1)比较运算符> >= < <= =(等于) != <><=>(判断NULL)(2)IS [NOT] NULL (判断NULL)(3)[NOT] BETWEEN ...AND 范围值(4)[NOT] IN(值,值...) 某个值(5)逻辑运算符实现条件过滤!非&& AND 与|| OR 或(6) LIKE 实现模糊查询[NOT] LIKE '字符串'关键字(1)%:包含任意多个字符(0个,1个,多个)(2)_: 包含任意一个字符7.2 GROUP BY 字段:分组,将字段中相同的值分为一组说明:a.分组值显示一个结果,如果多个值显示小编号的结果,一般显示分组的字段b. 分组结合聚合函数使用COUNT(*):获得每组中的个数,包含nullCOUNT(字段) :不包含null值AVG(字段):获得每组中的平均值MAX(字段):获得每组中的最大值MIN(字段):获得每组中的最小值SUM(字段):获得每组中的和7.3 HAVING 条件:二次条件过滤说明:a. WHERE 对字段的条件过滤b. HAVING对一个运行结果的条件过滤,结合分组使用7.4 ORDER BY 字段:对字段排序说明:ORDER BY 字段[ASC升序|DESC降序]7.5LIMIT [$offset,]$length:显示n条记录说明:a.$offset:偏移量,起始编号,编号从0开始b.$length:显示记录(行)长度c.实现web程序的分页原理计算$offset =(当前页-1)*显示长度$offset = ($curpage-1)*$pagesizeDay03一、对表中的数据查询SELECT 字段名,字段名...FROM 表名[WHERE 条件][GROUP BY 字段][HAVING 条件][ORDER BY 字段][LIMIT [$offset,]$length]计算$offset = (当前页-1)*显示条数实现web页面分页原理二、MySQL运算符和函数说明:用SELECT 语句输出显示1、算术运算符及函数a. + - * / % ,MOD 求余数b.POW POWER 求幂次c. SQRT 开平方d.FLOOR 向下取整e.CEIL 向上取整f.ROUND 四舍五入g.RAND:随机小数[0,1)例如: [0-100]整数ROUND( RAND()*100)2、字符函数a.LOWER:转为小写字母b.UPPER:转为大写字母c.SUBSTR, SUBSTRING:字符串截取,编号从1开始d.CONCAT:CONCAT(str,str,str);字符串连接e.CONCAT_WS:CONCAT_WS(delimiter,str,str,str)用分隔符将字符串连接f.TRIM: 清除两边空格g.RTRIM:清除右边空格h.LTRIM:清除左边空格i.REPLACE: 字符串替换REPLACE($str,$reseach,$replacement)j.LENGTH :字符串长度3、比较运算符a. > >= < <= = != <> <=>判断NULL值b. [NOT] BETWEEN ... ANDc. [NOT] IN(值,值...)d. IS [NOT] NULL 判断NULL值4、逻辑运算符! (非)&& AND (与并且)|| OR (或)5、信息函数a. DATABASE() :显示当前选择数据库b. NOW():获得系统时间日期函数c. VERSION()获得MYSQL版本d. USER():获得当前使用MYSQL的用户6、聚合函数COUNT(*): 获得每组中的个数,包含null值COUNT(字段):不包含null值AVG(字段):获得每组中的平均值MAX(字段):获得每组中的最大值MIN(字段):获得每组中的最小值SUM(字段):获得每组中的和7、加密函数MD5:返回32位的散列值PASSWORD三、多表操作1、表复制INSERT 表(字段,字段...)SELECT ...2、多表更新(根据一个表更新另一个字段)UPDATE 表1INNER JOIN 表2ON 两个表的逻辑关系SET 字段=值[WHERE 条件];3、多表联合查询SELECT 字段名,字段名... FROM 表1连接类型表2ON 两个表的逻辑关系连接类型表3ON 两个表的逻辑关系(1)连接类型a.内连接(INNER JOIN):查找两个表符合条件的信息b.外连接:左外连接(LEFT [OUTER] JOIN)显示左表中的所有信息和右表中符合条件的信息,如果左表中的信息右表没有,用null 填补右外连接(RIGHT [OUTER] JOIN)显示右表中的所有信息和左表中符合条件的信息,如果右表中的信息左表没有,用null 填补4、多表删除(根据一个表删除另一个表的信息)DELETE 删除表FROM 表1INNER JOIN 表2ON 两个表的逻辑关系[WHERE 条件]5、子查询(嵌套查询)1.子查询:在SQL语句中嵌套SELECT语句2.特点:(1)子查询是嵌套SELECT语句(2) 子查询的SELECT语句要用括号括起来并起别名(3)一般结合WHERE 和GROUP BY 使用3.使用(1)WHERE后使用a. INb. 比较运算符:说明:比较运算符只能比较一个结果,当结果不唯一时,会报错,要ALL 或SOME/ANY 来解决> >= ALL 大于最大值< <= ALL 小于最小值> >= SOME/ANY 大于最小值< <= SOME/ANY 小于最大值= SOME/ANY IN(2)FROM 后使用:产生新表用括号括起来,并且起别名,例如联合查询产生新表4. INSERT...SET:可以实现子查询四、约束条件(Constraint)1、约束:对字段实现非空,唯一,完整性等约束。