MySQL笔记

cmd启动指令:mysql -u root -p
输入quit或exit退出命令行实用程序。
--或#为注释
DDL 主要用来操作数据库相关的定义
整数类型:
tinyint(m) 1个字节(-127~127)
smallint(m) 2个字节(-32768~32767)
mediumint(m) 3个字节
int(m) 4个字节(-2147483648~2147483647)
bitint(m) 8个字节(+-9.22*10的18次方)
小数类型
float(m,d) m是总位数,d是小数点位数
double
字符类型
char(n) 固定长度,最多255字符 长度不够时,会用四个空格去补齐。char长度固定,即每条数据占用等长字节空间;适合用在身份证号码、手机号码等定长
tinytext 可变长度,最多255字符
varchar(n) 可变长度,最多65535字符 长度不够时,也不会去补齐
text 可变长度,最多65535字符 当不知道属性的最大长度时,适合用text
mediumtext 可变长度,最多2的24次方-1字符
longtext 可变长度,最多2的32次方-1字符
按照查询速度:char最快,varchar次之,text最慢

字符串使用建议:
经常变化的字段用varchar
知道固定长度的用char
尽量用varchar
超过255字符的只能用varchar或text
能用varchar的地方不用text
日期类型
date 日期YYY-MM-DD
time 时间HH:MM:SS
datetime 时间日期YYYY-MM-DD HH:MM:SS(有时区处理)
timestamp 时间戳 YYYYMMDD HHMMSS(不考虑时区)
二进制数据(BLOB)
BLOB和TEXT存储方式不同,TEXT以文本方式存储,英文存储区分大小写,而BLOB是以二进制方式存储,不区分大小写,
BLOB存储的数据只能整体读出
TEXT可以指定字符集,BLOB不用指定字符集

五种约束:
主键约束(PRIMARY KEY):
主键用于标识一个表中的唯一记录。这个字段必须包含一个唯一的值,并且不能为null。
唯一约束(UNIQUE):
唯一约束用于限制一个表中的一个或多个字段的值不能重复。与主键约束不同的是,唯一约束字段可以为空。唯一约束适用于需要保证某个字段具有唯一性的情况,例如电子邮件地址或电话号码。使用唯一约束可以保护数据库中的数据完整性,避免重复的数据出现。
外键约束(FOREIGN KEY):
它在保持数据的一致性和完整性方面起着重要的作用。
被约束的列的全部值,必须是参照列中已有的值
非空约束(NOT NULL):
非空约束是SQL中的一种约束,它用于确保某个字段值不能为空。在创建数据库表时,你可以通过非空约束来指定某个字段是否必须输入值。如果一个字段被指定为非空,那么在插入新记录或更新现有记录时,此字段不能为空,否则会产生错误。
检查约束:
用户自定义的一种约束(MySQL不支持)

use 库名 选择数据库
创建:
create database [if not exists] 数据库名 【如果不存在】则创建目标数据库
create database 库名 default character set 编码(utf8) 创建一个数据库,并查看该数据库
create table 表名(列名 类型,列名 类型...);
删除:
drop database 库名 删除一个数据库
drop table 表明 使用DDL语句删除表
查看:
show tables 查看所创建的表
show databases 显示已有数据库-注意是复数形式
查询数据库:
desc 表名 查看表的具体定义信息(具体内容)
show columns from 表名 可以显示表列(属性值名称及类型)
以上两者在功能上没有区别
select database() 查看当前处于哪个数据库下
检索列的值
select * from 表名 检索所有列的值
select 列名 from 表名 可以查看单个列的值
select 列名,列名,… from 表名 查看多个列的值(以逗号分隔)
select distinct 列名 from 表名 只返同不同的(唯一的)值

from后面加上LIMIT num1,num2 限定行数
带一个值的LIMIT总是从第一行开始,给出的数为返回的行数。
带两个值的LIMIT可以指定从行号为第一个值的位置开始。
LIMIT 4 OFFSET 3
意为从行3开始取4行,就像LIMIT 3,4一样

修改表名
ALTER TABLE 旧表名 RENAME 新表名
修改表关键字 修改表名关键字
修改列名
ALTER TABLE 表名 CHANGE COLUMN 旧列名 新列名 类型;
修改列类型
ALTER TABLE 表名 MODIFY 列名 新类型
修改列类型关键字
向表中添加新列
ALTER TABLE 表名 ADD COLUMN 新列名 类型
向表中删除列
ALTER TABLE 表名 DROP COLUMN 列名
清空表
DELETE FROM 表名
使用DDL语句添加主键约束:
ALTER TABLE 表名 ADD PRIMARY KEY(列名)
将主键设置为自增(只有数值才能自增,字符不行)
ALTER TABLE 表名 MODIFY 主键 类型 AUTO_INCREMENT
MySQL中自动增长类型的要求:
1.一个表中只能有一个列为自动增长
2.自动增长的列的类型必须是整数类型
3.自动增长只能添加到具备主键约束与唯一性约束的列上
4.删除主键约束或唯一性约束,如果该列拥有自动增长能力,则需要先去掉自动增长然后再删除约束
删除自动增长:
ALTER TABLE 表名 MODIFY 列名 类型
删除主键约束(只是删除主键约束,而不对列造成更改)
ALTER TABLE 表名 DROP PRIMARY KEY
添加外键约束:
ALTER TABLE 表名 ADD CONSTRAINT 约束名 FOREIGN KEY (列名) REFERENCES 参照的表名(参照的列名)
被约束的列允许为空,也允许有重复
约束名是自己起的,一般会用表名加下划线加FK表示是外键约束
使用完全限定的表名
SELECT stu.id FROM stu; 限定指定表的指定列
SELECT stu.id FROM changchang.stu; 同时完全限定表名
排序数据
1.按单个列排序:
SELECT * FROM stu ORDER BY name; 根据name来对数据进行排序输出(默认从小到大)
2.按多个列排序:
SELECT * FROM stu ORDER BY prod_price,prod_name; 当prod_price值相同时,依据prod_name对数据进行排序
3.指定排序方向:
SELECT * FROM stu ORDER BY name DESC; 默认升序(从a到z)。为了进行降序排序,必须指定DESC关键字
4.对多个列排序:
SELECT * FROM stu ORDER BY prod_price DESC,prod_name; 只对prod_price列指定DESC,对prod_name列不指定。

注:
1.排序时整条记录都会被排序
2.与DESC相反的关键字是ASC(ASCENDING),在升序排序时可以指定它。但实际上,ASC没有多大用处,因为升序是默认的
3.ORDER BY子句的位置:
在给出ORDER BY字句时,应该保证它位于FROM字句之后。如果使用LIMIT,它必须位于ORDER BY之后。
SELECT * FROM stu ORDER BY name DESC LIMIT 1;

DML语言
插入数据(INSERT)
INSERT INTO 表名(列名1,列名2...) VALUES(值1,值2...)
完全插入:
INSERT INTO 表名 VALUES(值1,值2...)
如果主键是自动增长的,则需要使用default或null或0来占位

导出数据(命令行)
mysqldump -u username -p database_name > output_file.sql
导入数据
mysql -u username -p database_name < input_file.sql

posted @ 2026-07-02 18:12  畅畅c  阅读(1)  评论(0)    收藏  举报